之前的博客有介绍过salt的配置和搭建方法,如果需要在master端对minion进行一定的操作需要使用远程执行命令。salt的底层架构就是起源于远程执行命令的想法,以下进行命令的介绍
salt命令的target
如果需要使用salt命令需要先指定好target
用于指定的参数有如下
'*' 用于指定所有可以使用的Minion
-E或者--pcre 用于使用perl语言兼容的正则表达式来指定目标
-L 用于使用逗号分隔的方式来指定多个minion
-S或者--ipcidr 用于指定一个ipv4地址或者一个CIDR的IPv4子网来指定target
-G或者--grain 使用grain的方式来进行指定target
-I或者--pillar 使用pillar数据来进行指定target
-C或者--compound 使用混合的方式来进行指定
-N或者--nodegroup 使用节点组来指定
以下进行对参数的简单使用范例
salt '*' test.ping
对所有的minion进行测试。
salt -S 172.25.254.11 test.ping
salt -S 172.25.254.0/24 test.ping
指定一个ipv4地址或者是一个ipv4的子网,但是不支持ipv6
特别的在这里说一下Grain的用法。
salt可以通过操作系统或者CPU架构来对机器的一些指定特征来进行指定Minion
比如说指定操作系统
[root@saltstack ~]# salt -G 'os:redhat' test.ping
openstack:
True
[root@saltstack ~]# salt -G 'os:Ubuntu' test.ping
No minions matched the target. No command was sent, no jid was assigned.
ERROR: No return received
当然有些Grain是多级字典,需要用’:’(冒号)来分隔key。
如果需要使用节点组 —N参数,则需要修改好配置文件,在master文件中进行修改
1019 nodegroups:
1020 group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.co m'
1021 group2: 'G@os:Debian and foo.domain.com'
1022 group3: 'G@os:Debian and N@group1'
1023 group4:
1024 - 'G@foo:bar'
1025 - 'or'
1026 - 'G@foo:baz'
然后在命令中指定你在配置文件中写好的组名就可以了
例:
salt -N group1 test.ping
远程执行命令的模块
在salt中远程运行命令的格式如下:
salt < target > <模块名><方法>[参数…]
所以在salt中可用于执行命令的模块有
test.ping 用于测试minion是否可以响应
test.echo 用于显示字符串(后头需要传递参数)
test.sleep 和ping类似,但是在后面可以加数字,表示多久以后返回True
test.version 用于返回minion的saltstack版本。
pkg.install 用于安装软件包,类似于远程执行yum install
pkg.remove 用于卸载软件包,类以于远程执行yum remove
fire.replace 用于编辑文件类似的还有file.chown file.chgrp