states: yaml文件、sls尾缀文件
Yaml的写法:
1.缩进必须是两个空格,绝对不能使用tab键
2.冒号后必须有空格:key-value关系(dict)
3.“-”短横线后必须有空格:并列关系(list)
Minion端的设置:
1.在设置minion端的时候,需要配置/etc/salt/minion文件,首先,需要指定其master,即解除“master: ”字段的限制,然后在其后面添加master端的主机名或主机IP
2.此外,还有一个叫做“id: ”的字段,需要进行设置,这个ID默认不设置的情况下是主机的主机ID/etc/sysconfig/network 但是如果需要设置的话,需要将/etc/salt/minion_id文件删除,并重新启动salt-minion服务,才能正常启动。否则会报错。
Master端配置:
在配置文件中搜索file_roots:字段
会出现一系列提示,咨询此saltstack的配置文件远程目录所在位置。
其中,dev和prod都可以是不存在的,但是base一定要有:
创建完毕之后,需要在本地的/srv/下创建一个salt目录
mkdir -p /svc/salt
根据实际的任务情况对需要操作的内容进行分类(按项目分?或按操作步骤分吧!)比如web业务:
mkdir -p /svc/salt/web
vim /svc/salt/web/apache.sls
内容如下:
Apache-install:
pkg.installed:
- names:
- httpd
- httpd-devel
Apache-ServiceControl:
service.running:
- name: httpd
- enable: True
如果执行失败或者对端机器上有这个包,则会有如下提示:
saltstack minion端任务的状态文件:/var/cache/salt/minion/files/base/任务目录/sls文件名,该文件与master端的一样。
需要指定不同的机器执行不同的sls剧本的时候,就需要指定一个top文件,该文件需要被放置在base目录之下:有且只有一个,通常只用来存放minion_id和需要执行的sls文件的关系,top文件也是一个sls文件。
如需修改top文件,需要在master文件中先取消关于top文件的注释:
先搜索字段:state_top:
然后取消注释,保存退出,重启master服务。
示例内容如下:
base:
'salt.minion.test6':
- web.apache
- web.php
- web.wordpress
salt.minion.test6A
- db.mysql-server
- db.mysql-ser-connect
- db.phpmyadmin
salt.minion.test7
- storage.nfs-server
- storage.firewalld-policy
- storage.filePermission
执行的时候直接指定*即可根据top文件中的对应关系,让指定的机器执行指定的任务状态文件。
在执行命令之前,一定要在所需命令敲完之后,再加上一个test=True,确认要修改的内容和可能的结果,避免不必要的麻烦(类似于sed不加-i)
注意,在生产环境下,不推荐使用salt '*' .......这种写法