深入学习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文件内容。

posted @ 2017-12-03 20:33  求其在我  阅读(283)  评论(0)    收藏  举报