本工程是用 gb 编译的,gb 首页:https://getgb.io/
下载编译:
git clone https://github.com/idcos/cloudcli.git
cd cloudcli
gb build
或者使用make:
git clone https://github.com/idcos/cloudcli.git
cd cloudcli
make
编译完成后,为了方便以后使用,可以将 bin 目录下的二进制文件 cloudcli 放在系统 PATH 中。
首次使用时会提示创建配置文件,如果打算继续使用,请选择 y
$ cloudcli
Do you want to create your config file?(y or n)y
You should set DataSource in your config file: /path/to/you/home/.cloudcli.ini
生成的配置文件(.cloudcli.ini)中各项说明参见下面的小节 配置文件说明
cloudcli 命令支持的子命令和各个参数请参见:命令使用说明
配置文件示例:
[Main]
sync=true # 是否在多个node上并行执行命令 true: 串行执行 false: 并行执行
concurrentNum=5 # 并发执行的个数,sync=false 时生效
timeout=10 # 命令执行的timeout时间,单位是秒
loginShell=/bin/bash # 登录远程机器后使用的shell类型
fileTransBuf=10240 # 设置 get/put 子命令的文件传输 buffer 大小
[Logger]
level=debug # log 等级,可以配置 debug,info,warn,error
logFile= # 如果 logType 设置成 file,这里配置输出的log文件
logType=console # 这里支持 console 和 file 2种配置,console:log直接输出到终端,file:log输出到文件
[DataSource]
type=yaml # 可以远程连接的主机信息,目前只支持 yaml格式
conn=/path/to/test.yaml # 存储主机和主机组信息的 yaml 数据源
[CmdAlias] # 定义常用的命令,用在 exec 子命令的的 -c 参数中
-: cat /var/log/xxx.log
-: service nginx restart
存储主机和主机组信息的 yaml 文件示例:
NodeGroups:
- GroupName: group001
Nodes:
- Name: golang
Host: 192.168.1.1
Port: 22
User: user
Password: password
KeyPath:
- Name: python
Host: 192.168.1.2
Port: 22
User: root
Password: rootpass
KeyPath:
- GroupName: group002
Nodes:
- Name: elixir-lang
Host: 10.0.0.1
Port: 22
User: testuser
Password: testtest
KeyPath:
- Name: elm-lang
Host: elm-lang.cn
Port: 22
User: root
Password:
KeyPath: /home/user/.ssh/private-key