SaltStack初探

Docker环境搭建

参考github上面的salt-docker-demo

master配置的log修改为Info,重启即可使用

[root@salt system]# cat /etc/salt/master
...
log_level: info
....
[root@salt system]# systemctl restart salt-master.service 

由于是docker环境,依赖安装的不完全,像ipifconfig都没有….

节点管理

ping测试

[root@salt system]# salt '*' test.ping
minion2:
    True
minion1:
    True

查看minion的状态

[root@salt system]# salt-run manage.status
down:
up:
    - minion1
    - minion2

执行命令

操作命令的格式如下

Usage: salt [options] '<target>' <function> [arguments]                        
  • options的使用比较简单,支持超时时间、配置信息等
  • target就是目标的minion列表,所有的就是*,多个就是minion的上报主键逗号分隔
  • function是salt的一些内置的模块列表,test.pingcmd.run等; sys.list_modules列出所有的模块
  • arguments模块所需要的函数
[root@salt system]# salt 'minion1' sys.list_modules | wc -l
147
## 所有的函数
[root@salt system]# salt 'minion1' sys.list_functions | wc -l    
1548

salt-module-index:salt所有的moduels

执行命令

执行命令

➜  ~ sudo salt '*' cmd.run 'ls /tmp'
AAAAAAAA-0000-0000-BBD1-FA294FBCB7D6:
    bootstrap-salt.log
    ks-script-h2MyUP
    yum.log
E84B4F5F-0000-0000-BBD1-FA294FBCB7D5:
    bootstrap-salt.log
    ks-script-h2MyUP
    yum.log

安装软件,调用pkg.install

[root@salt system]# salt '*' pkg.install net-tools

下发文件

➜  ~ sudo salt 'AAAAAAAA-0000-0000-BBD1-FA294FBCB7D6' cp.get_file salt://ping.sls /tmp          

salt://是配置文件当中的/srv/salt目录

查看IP,调用cmd.run模块

[root@salt system]# salt '*' cmd.run 'ifconfig | grep inet'
minion2:
            inet 172.18.0.3  netmask 255.255.0.0  broadcast 172.18.255.255
            inet 127.0.0.1  netmask 255.0.0.0
minion1:
            inet 172.18.0.4  netmask 255.255.0.0  broadcast 172.18.255.255
            inet 127.0.0.1  netmask 255.0.0.0

其他

有一些模块的命令可能不太熟悉,可以使用

salt '*' sys.doc cmd|service|pkg|file: 类似man操作

参考