1. 主机规划
注意事项
修改了master或者minion的配置文件,那么必须重启对应的服务。
2. 了解YAML
具体地址
https://docs.saltstack.com/en/latest/topics/yaml/index.html
YAML:三板斧
1、缩进: 2个空格,不能使用Tab 2、冒号: key: value 注意有空格 3、短横线: - list1 注意有空格 - list2
3. 配置管理路径指定
3.1. master指定配置管理基本路径
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 # 修改了配置文件,必须重启服务
3.2. 创建对应的目录
[root@salt100 ~]# mkdir -p /srv/salt
4. 测试案例--单个状态管理
4.1. 编写测试案例----安装apache
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
4.2. 在master机器salt100上执行
给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
4.3. 执行结果信息讲解
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 ………………
5. Salt高级状态管理
生产环境使用,注意事项:
1、执行时不能使用 '*' ,所有minion执行 2、不能直接执行,要先 test=True;
5.1. 高级状态sls文件的位置和名称
默认file_roots的位置
不用修改配置文件,默认即可。
5.2. 编写top.sls文件
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
5.3. 执行高级状态
1 [root@salt100 ~]# salt 'salt01' state.highstate test=True # 必须先执行这个 2 ……………… 3 # 原因:防止自己手动改了minion机器上组件的配置信息,但是没有同步到salt; 4 # 结果直接执行后,又改回去了。 5 [root@salt100 ~]# salt 'salt01' state.highstate # 执行高级状态,通过top.sls 去查找 6 ………………