深入学习saltstack远程执行
深入学习saltstack远程执行:
salt '*' cmd.run 'w'
命令: salt
目标: '*'
模块: cmd.run 自带150+模块。 也可以自己写模块。
返回: 执行后结果返回,Returnners
1、目标:Targeting
两种:一种和Minion ID有关
一种和Minion ID无关
1.和Minion ID有关的方法。
a.Minion ID
b.通配符 例如:salt '*' test.ping
[root@linux-node1 ~]# salt '*' test.ping
linux-node2.example.com:
True
linux-node1.example.com:
True
[root@linux-node1 ~]# salt 'linux-node1.example.com' test.ping
linux-node1.example.com:
True
[root@linux-node1 ~]# salt 'linux-node1*' test.ping
linux-node1.example.com:
True
[root@linux-node1 ~]# salt 'linux-node[1|2].example.com' test.ping
linux-node1.example.com:
True
linux-node2.example.com:
True
[root@linux-node1 ~]# salt 'linux-node?.example.com' test.ping
linux-node1.example.com:
True
linux-node2.example.com:
True
[root@linux-node1 ~]# salt 'linux-node[1-2].example.com' test.ping
linux-node2.example.com:
True
linux-node1.example.com:
True
[root@linux-node1 ~]# salt 'linux-node[!2].example.com' test.ping
linux-node1.example.com:
True
列表:
[root@linux-node1 ~]# salt -L 'linux-node1.example.com,linux-node2.example.com' test.ping
linux-node2.example.com:
True
linux-node1.example.com:
True
正则表达式:
[root@linux-node1 ~]# salt -E 'linux-(node1|node2)*' test.ping
linux-node2.example.com:
True
linux-node1.example.com:
True
[root@linux-node1 ~]# salt -E 'linux-(node1|node2).example.com' test.ping
linux-node2.example.com:
True
linux-node1.example.com:
True
所有匹配目标的方式,都可以用到top file里面来指定目标。
主机名设置方案:
1.IP地址
2.根据业务来进行设置
redis-node1-redis04-idc04-soa.example.com
redis-node1: redis第一个节点
redis04: 集群
idc04: 机房
soa: 业务线
子网、IP地址:
[root@linux-node1 ~]# salt -S 192.168.56.12 test.ping
linux-node2.example.com:
True
[root@linux-node1 ~]# salt -S 192.168.56.0/24 test.ping
linux-node1.example.com:
True
linux-node2.example.com:
True
2、模块:自带模块(参考saltstack官网文档)
例如:
salt '*' service.get_all
salt '*' state.single pkg.installed name=lsof ---》单独手动执行一下状态,安装下lsof。
三、返回程序(Returners):
例如:SALT.RETURNERS.MYSQL ---》Return data to mysql server.
是minion端直接返回给MySQL。
安装MySQL-python
salt '*' state.single pkg.installed name=MySQL-python
或者:salt '*' cmd.run 'yum -y install MySQL-python'
配置内容参考saltstack官方文档。
四、编写模块:
1.放哪里
[root@linux-node1 ~]# cd /srv/salt/
[root@linux-node1 /srv/salt]# mkdir _modules
2.命名。文件名就是模块名。例如 my_disk.py
[root@linux-node1 /srv/salt]#vim _modules/my_disk.py
def list():
cmd = 'df -h'
ret = __salt__['cmd.run'](cmd)
return ret
3.刷新
salt '*' saltutil.sync_modules
4.执行
salt '*' my_disk.list
补充: 我们在master端执行的sls文件,会把此sls文件发送到minion端的/var/cache/salt/minion目录下,也即是会在此目录下看到master端写的sls文件内容。

浙公网安备 33010602011771号