SaltStack自动化运维管理(二)——远程执行
1. 远程执行shell命令
Salt命令由三个主要部分构成:
salt '<target>' <function> [arguments]
-
target: 指定哪些minion, 默认的规则是使用glob匹配minion id
salt '*' test.ping
-
Targets也可以使用正则表达式:
salt -E 'server[1-3]' test.ping
-
Targets也可以指定列表:
salt -L 'server2,server3' test.ping
-
funcation是module提供的功能,Salt内置了大量有效的functions
salt '*' cmd.run 'uname -a'
-
arguments通过空格来界定参数:
salt 'server2' sys.doc pkg
#查看模块文档
salt 'server2' pkg.install httpd
salt 'server2' pkg.remove httpd
-
salt内置的执行模块列表:
http://docs.saltstack.cn/ref/modules/all/index.html
2. 编写远程执行模块
如果感觉执行模块不够用,可以自己编写远程执行模块
编辑master配置文件:
vim /etc/salt/master #可以不用编写,默认配置就是
file_roots:
base:
- /srv/salt
重启master服务:
systemctl restart salt-master
创建模块目录:
mkdir /srv/salt
mkdir /srv/salt/_modules
编写模块文件:
vim /srv/salt/_modules/mydisk.py
def df():
return __salt__['cmd.run']('df -h')
同步模块:
salt '*' saltutil.sync_modules
在server2和server3中查看:
yum install -y tree
cd /var/cache/salt/
tree minion/
运行模块:
salt server2 mydisk.df