注意事项
修改了master或者minion的配置文件,那么必须重启对应的服务。
具体地址
https://docs.saltstack.com/en/latest/topics/yaml/index.html
YAML:三板斧
1、缩进: 2个空格,不能使用Tab
2、冒号: key: value 注意有空格
3、短横线: - list1 注意有空格
- list2
1 [root@salt100 salt]# pwd
2 /etc/salt
3 [root@salt100 salt]# vim master
4 ………………
5 # Example:
6 # file_roots:
7 # base:
8 # - /srv/salt/
9 # dev:
10 # - /srv/salt/dev/services
11 # - /srv/salt/dev/states
12 # prod:
13 # - /srv/salt/prod/services
14 # - /srv/salt/prod/states
15 #
16 # 将如下的注释放开即可
17 # 也可以不变更配置,因为这是个默认配置★★
18 file_roots:
19 base:
20 - /srv/salt
21 ………………
22 [root@salt100 salt]# systemctl restart salt-master.service # 修改了配置文件,必须重启服务
[root@salt100 ~]# mkdir -p /srv/salt
1、为了方便后期维护指定一个特定目录
1 [root@salt100 salt]# pwd
2 /srv/salt
3 [root@salt100 salt]# mkdir web
4 [root@salt100 salt]# cd web/
5 [root@salt100 web]# pwd
6 /srv/salt/web
2、编写sls文件
1 [root@salt100 web]# pwd
2 /srv/salt/web
3 [root@salt100 web]# cat apache.sls # 后缀名 sls,salt执行时会找sls文件
4 # sls文件允许注释存在,内容可以直接复制使用
5 # 自定义的一个ID,唯一标识 ★★★★★
6 apache-install:
7 # pkg 是一个执行模块 . 引用 installed 使用方法
8 pkg.installed:
9 # - names 参数 支持多个列表
10 - names:
11 - httpd
12 - httpd-devel
13
14 # enable: True 表示:开机自启动
15 apache-service:
16 service.running:
17 - name: httpd
18 - enable: True
给salt01、salt02、salt03部署安装httpd
1 # 在master机器操作
2 [root@salt100 ~]# salt 'salt0*' test.ping # 看salt01、salt02、salt03是否可通信
3 salt01:
4 True
5 salt03:
6 True
7 salt02:
8 True
9 [root@salt100 ~]# salt 'salt0*' state.sls web.apache # 给 salt01、salt02、salt03 部署httpd
10 # 说明:
11 # 1、master 配置管理基本目录为 /srv/salt
12 # 2、apache.sls 的路径为:/srv/salt/web/apache.sls
13 # 3、state.sls web.apache 说明 state模块,调用 sls方法, 调用的文件是web路径下的apache.sls文件【只是最后的 sls后缀名省略了】
备注:做了哪些事情
1、 将/srv/salt/web/apache.sls文件从master发送给minion;
2、 minion得到文件后,根据master指令执行apache.sls中的内容
master将文件发送到minion的那个位置
1 # 在minion端查看
2 [root@salt01 salt]# pwd
3 /var/cache/salt
4 [root@salt01 salt]# ll
5 total 0
6 drwxr-xr-x 6 root root 103 Dec 11 23:52 minion
7 [root@salt01 salt]# tree
8 .
9 └── minion
10 ├── accumulator
11 ├── extmods
12 ├── files
13 │ └── base
14 │ └── web
15 │ └── apache.sls
16 ├── highstate.cache.p
17 ├── proc
18 └── sls.p
19
20 7 directories, 3 files
1 # 执行返回结果是无序的
2 [root@salt100 ~]# salt 'salt0*' state.sls web.apache
3 salt02: # salt02执行结果信息
4 ----------
5 ID: apache-install # apache.sls 中自定的ID【名称】
6 Function: pkg.installed
7 Name: httpd
8 Result: True
9 Comment: The following packages were installed/updated: httpd
10 Started: 23:51:46.604986
11 Duration: 30335.469 ms
12 Changes:
13 ----------
14 httpd:
15 ----------
16 new:
17 2.4.6-88.el7.centos
18 old:
19 httpd-tools:
20 ----------
21 new:
22 2.4.6-88.el7.centos
23 old:
24 mailcap:
25 ----------
26 new:
27 2.1.41-2.el7
28 old:
29 ----------
30 ID: apache-install
31 Function: pkg.installed
32 Name: httpd-devel
33 Result: True
34 Comment: The following packages were installed/updated: httpd-devel
35 Started: 23:52:16.965844
36 Duration: 6661.51 ms
37 Changes:
38 ----------
39 apr-devel:
40 ----------
41 new:
42 1.4.8-3.el7_4.1
43 old:
44 apr-util-devel:
45 ----------
46 new:
47 1.5.2-6.el7
48 old:
49 cyrus-sasl:
50 ----------
51 new:
52 2.1.26-23.el7
53 old:
54 cyrus-sasl-devel:
55 ----------
56 new:
57 2.1.26-23.el7
58 old:
59 expat-devel:
60 ----------
61 new:
62 2.1.0-10.el7_3
63 old:
64 httpd-devel:
65 ----------
66 new:
67 2.4.6-88.el7.centos
68 old:
69 libdb-devel:
70 ----------
71 new:
72 5.3.21-24.el7
73 old:
74 openldap:
75 ----------
76 new:
77 2.4.44-20.el7
78 old:
79 2.4.44-13.el7
80 openldap-devel:
81 ----------
82 new:
83 2.4.44-20.el7
84 old:
85 ----------
86 ID: apache-service
87 Function: service.running
88 Name: httpd
89 Result: True
90 Comment: Service httpd has been enabled, and is running
91 Started: 23:52:24.619598
92 Duration: 314.737 ms
93 Changes:
94 ----------
95 httpd:
96 True
97
98 Summary for salt02
99 ------------
100 Succeeded: 3 (changed=3)
101 Failed: 0
102 ------------
103 Total states run: 3
104 Total run time: 37.312 s
105 salt01: # salt01执行结果信息
106 ………………
107 salt03: # salt03执行结果信息
108 ----------
109 ………………
生产环境使用,注意事项:
1、执行时不能使用 '*' ,所有minion执行
2、不能直接执行,要先 test=True;
默认file_roots的位置
不用修改配置文件,默认即可。
1 [root@salt100 salt]# pwd
2 /srv/salt
3 [root@salt100 salt]# tree
4 .
5 ├── top.sls
6 └── web
7 └── apache.sls
8
9 1 directory, 2 files
10 [root@salt100 salt]# cat top.sls
11 base:
12 # 使用通配符
13 'salt0*':
14 - web.apache
15 # - web.nginx # 可以有多个
16 # 指定具体minion
17 'salt03':
18 - web.apache
1 [root@salt100 ~]# salt 'salt01' state.highstate test=True # 必须先执行这个
2 ………………
3 # 原因:防止自己手动改了minion机器上组件的配置信息,但是没有同步到salt;
4 # 结果直接执行后,又改回去了。
5 [root@salt100 ~]# salt 'salt01' state.highstate # 执行高级状态,通过top.sls 去查找
6 ………………