Saltstack_使用指南03_配置管理

时间:2022-07-26
本文章向大家介绍Saltstack_使用指南03_配置管理,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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 ………………