Salt 远程执行
Salt 命令执行使用一个通用的结构,如下图:
使用 sys.doc 查询模块相关信息
[root@linux-node1 ~]# salt '*' sys.doc sys.doc
sys.doc:
Return the docstrings for all modules. Optionally, specify a module or a
function to narrow the selection.
The strings are aggregated into a single document on the master for easy
reading.
Multiple modules/functions can be specified.
CLI Example:
salt '*' sys.doc
salt '*' sys.doc sys
salt '*' sys.doc sys.doc
salt '*' sys.doc network.traceroute user.info
Modules can be specified as globs.
New in version 2015.5.0
salt '*' sys.doc 'sys.*'
salt '*' sys.doc 'sys.list_*'
运行 Shell 命令
使用 cmd.run
cmd.run 直接好用,但 Salt 远程执行更强大的是执行函数,这样不用写复杂的脚本来实现功能,而且返回的结果是格式化的,便于进一步处理。下面列举一些执行函数。
检测 Minion 运行状态
使用 test.ping
Used to make sure the minion is up and responding. Not an ICMP ping.
显示磁盘用量
使用 disk.usage
安装一个软件包
使用 pkg.install
列出网络接口
使用 network.interfaces
更多执行模块请看 EXECUTION MODULES
深入学习远程执行
Targeting 目标
用于指定哪些 Minion 来执行后面的命令或模块函数
指定匹配 Minion 的方法可以分为两类:
-
和 minion id 有关的
- minion id (linux-node1.example.com)
-
通配符 (linux-node* linux-node[1 2].example.com linux-node?.example.com) - 列表 (salt -L ‘linux-node1.example.com,linux-node2.example.com’ test.ping)
-
正则表达式 (salt -E ‘linux-(node1 node2)*’ test.ping)
-
和 minion id 无关的
-
子网/IP 地址 (salt -S 192.168.56.11 test.ping salt -S 192.168.56.0/24 test.ping) - Grains 匹配
- Compound matchers 混合匹配
- Node Group 分组匹配
-
主机名设置方案:
- IP地址
- 根据业务来进行设置
redis-node1-redis03-idc03-soa.example.com
- redis-node1 redis第一个节点
- redis03 集群
- idc03 机房
- soa 业务线
Execution Modules 执行模块
Salt 内置了丰富的执行模块,每一个模块都是一个 Python 文件,前面已举例。下面再列举一些。
salt '*' network.active_tcp
salt '*' network.arp
salt '*' service.available sshd
salt '*' service.get_all
salt-cp '*' /etc/hosts /tmp/
salt '*' state.single pkg.installed name=lsof
Returners 结果返回程序
将 Salt minion 返回的结果数据发送到其他的系统,比如数据库。 Returners 可以运行在 Minion 或 Master 上。
编写执行模块
可以自己可以需要编写自己的执行模块