环境: redhat 7.3
server1 | 172.25.60.1 | master |
---|---|---|
server2 | 172.25.60.2 | minion |
一、远程执行shell命令
既然是远程部署,我们首先了解一下基本的远程命令
Salt命令由三个主要部分构成:
salt '<target>' <function> [arguments]
(1) target: 指定哪些minion, 默认的规则是使用glob匹配minion id.
salt '*' test.ping
##Targets也可以使用正则表达式:
salt -E 'server[1-3]' test.ping
##Targets也可以指定列表:
salt -L 'server2,server3' test.ping
(2) funcation: 是module提供的功能,Salt内置了大量有效的functions.(举个简单的例子体验一下)
salt *server2* cmd.run 'touch /mnt/westos' #执行成功后去server2查看
(3) arguments通过空格来界定参数:
salt 'server2' sys.doc pkg #查看模块文档
二、saltstack中的远程执行模块
saltstack中有许多模块,除了内置模块还可以手动添加模块
(1) salt内置的执行模块
内置模块官网有详细说明以及示例.官网链接:http://docs.saltstack.cn/ref/modules/all/index.html
(2)自己编写执行模块
第一步:编辑master配置文件并重启master服务
vim /etc/salt/master
file_roots:
base:
- /srv/salt
systemctl restart salt-master
第二步:创建模块目录
mkdir /srv/salt/_modules
第三步:编写模块文件
vim /srv/salt/_modules/mydisk.py
def df():
return __salt__['cmd.run']('df -h')
第四步:同步模块
salt server2 saltutil.sync_modules
测试:
三、YAML语法
编写文件时我们需要遵循yaml语法,了解常见的规则可以使我们在编写文件时少出错!
规则一: 缩进
Salt需要每个缩进级别由两个空格组成,不要使用tabs。
规则二: 冒号
字典的keys在YAML中的表现形式是一个以冒号结尾的字符串。 my_key: my_value
规则三: 短横杠
想要表示列表项,使用一个短横杠加一个空格。
- list_value_one
- list_value_two
四、使用saltstack远程部署第一个应用—apache
(1)编写文件
[root@server1 salt]#
[root@server1 salt]# mkdir apache
[root@server1 salt]# cd apache/
[root@server1 apache]# vim install.sls #编写yml文件,必须以.sls结尾
[root@server1 apache]# cat install.sls
install-apache:
pkg.installed: ##安装httpd
- pkgs:
- httpd
file.managed: ##默认发布文件
- name: /var/www/html/index.html
- source: salt://apache/files/index.html
service.running: ##运行
- name: httpd
- relaod: True ##使用reload方式重启,可以不写(默认restart)
- watch: ##触发条件
- file: install-apache
[root@server1 apache]# mkdir files
[root@server1 apache]# echo westos > files/index.html
[root@server1 apache]# cat files/index.html
westos
(2)向server2推送httpd
[root@server1 apache]# salt server2 state.sls apache.install
查看推送结果:
直接访问
server2上查看进程
到此第一个服务推送成功!!!