Saltstack_使用指南03_配置管理
1. 主机规划
服务器名称 | 操作系统版本 | 内网IP | 外网IP(模拟) | Hostname | 部署模块 |
---|---|---|---|---|---|
salt100 | CentOS7.5 | 172.16.1.100 | 10.0.0.100 | salt100 | salt-master、salt-minion |
salt01 | CentOS7.5 | 172.16.1.11 | 10.0.0.11 | salt01 | salt-minion |
salt02 | CentOS7.5 | 172.16.1.12 | 10.0.0.12 | salt02 | salt-minion |
salt03 | CentOS7.5 | 172.16.1.13 | 10.0.0.13 | salt03 | salt-minion |
注意事项
修改了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指定配置管理基本路径
[[email protected] salt]# pwd
/etc/salt
[[email protected] salt]# vim master
………………
# Example:
# file_roots:
# base:
# - /srv/salt/
# dev:
# - /srv/salt/dev/services
# - /srv/salt/dev/states
# prod:
# - /srv/salt/prod/services
# - /srv/salt/prod/states
#
# 将如下的注释放开即可
# 也可以不变更配置,因为这是个默认配置★★
file_roots:
base:
- /srv/salt
………………
[[email protected] salt]# systemctl restart salt-master.service # 修改了配置文件,必须重启服务
3.2. 创建对应的目录
[[email protected] ~]# mkdir -p /srv/salt
4. 测试案例–单个状态管理
4.1. 编写测试案例----安装apache
1、为了方便后期维护指定一个特定目录
[[email protected] salt]# pwd
/srv/salt
[[email protected] salt]# mkdir web
[[email protected] salt]# cd web/
[[email protected] web]# pwd
/srv/salt/web
2、编写sls文件
[[email protected] web]# pwd
/srv/salt/web
[[email protected] web]# cat apache.sls # 后缀名 sls,salt执行时会找sls文件
# sls文件允许注释存在,内容可以直接复制使用
# 自定义的一个ID,唯一标识 ★★★★★
apache-install:
# pkg 是一个执行模块 . 引用 installed 使用方法
pkg.installed:
# - names 参数 支持多个列表
- names:
- httpd
- httpd-devel
# enable: True 表示:开机自启动
apache-service:
service.running:
- name: httpd
- enable: True
4.2. 在master机器salt100上执行
给salt01、salt02、salt03部署安装httpd
# 在master机器操作
[[email protected] ~]# salt 'salt0*' test.ping # 看salt01、salt02、salt03是否可通信
salt01:
True
salt03:
True
salt02:
True
[[email protected] ~]# salt 'salt0*' state.sls web.apache # 给 salt01、salt02、salt03 部署httpd
# 说明:
# 1、master 配置管理基本目录为 /srv/salt
# 2、apache.sls 的路径为:/srv/salt/web/apache.sls
# 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的那个位置
# 在minion端查看
[[email protected] salt]# pwd
/var/cache/salt
[[email protected] salt]# ll
total 0
drwxr-xr-x 6 root root 103 Dec 11 23:52 minion
[[email protected] salt]# tree
.
└── minion
├── accumulator
├── extmods
├── files
│ └── base
│ └── web
│ └── apache.sls
├── highstate.cache.p
├── proc
└── sls.p
7 directories, 3 files
4.3. 执行结果信息讲解
# 执行返回结果是无序的
[[email protected] ~]# salt 'salt0*' state.sls web.apache
salt02: # salt02执行结果信息
----------
ID: apache-install # apache.sls 中自定的ID【名称】
Function: pkg.installed
Name: httpd
Result: True
Comment: The following packages were installed/updated: httpd
Started: 23:51:46.604986
Duration: 30335.469 ms
Changes:
----------
httpd:
----------
new:
2.4.6-88.el7.centos
old:
httpd-tools:
----------
new:
2.4.6-88.el7.centos
old:
mailcap:
----------
new:
2.1.41-2.el7
old:
----------
ID: apache-install
Function: pkg.installed
Name: httpd-devel
Result: True
Comment: The following packages were installed/updated: httpd-devel
Started: 23:52:16.965844
Duration: 6661.51 ms
Changes:
----------
apr-devel:
----------
new:
1.4.8-3.el7_4.1
old:
apr-util-devel:
----------
new:
1.5.2-6.el7
old:
cyrus-sasl:
----------
new:
2.1.26-23.el7
old:
cyrus-sasl-devel:
----------
new:
2.1.26-23.el7
old:
expat-devel:
----------
new:
2.1.0-10.el7_3
old:
httpd-devel:
----------
new:
2.4.6-88.el7.centos
old:
libdb-devel:
----------
new:
5.3.21-24.el7
old:
openldap:
----------
new:
2.4.44-20.el7
old:
2.4.44-13.el7
openldap-devel:
----------
new:
2.4.44-20.el7
old:
----------
ID: apache-service
Function: service.running
Name: httpd
Result: True
Comment: Service httpd has been enabled, and is running
Started: 23:52:24.619598
Duration: 314.737 ms
Changes:
----------
httpd:
True
Summary for salt02
------------
Succeeded: 3 (changed=3)
Failed: 0
------------
Total states run: 3
Total run time: 37.312 s
salt01: # salt01执行结果信息
………………
salt03: # salt03执行结果信息
----------
………………
5. Salt高级状态管理
生产环境使用,注意事项:
1、执行时不能使用 '*' ,所有minion执行
2、不能直接执行,要先 test=True;
5.1. 高级状态sls文件的位置和名称
就是file_roots的位置
不用修改配置文件,默认即可。
5.2. 编写top.sls文件
[[email protected] salt]# pwd
/srv/salt
[[email protected] salt]# tree
.
├── top.sls
└── web
└── apache.sls
1 directory, 2 files
[[email protected] salt]# cat top.sls
base:
# 使用通配符
'salt0*':
- web.apache
# - web.nginx # 可以有多个
# 指定具体minion
'salt03':
- web.apache
5.3. 执行高级状态
[[email protected] ~]# salt 'salt01' state.highstate test=True # 必须先执行这个
………………
# 原因:防止自己手动改了minion机器上组件的配置信息,但是没有同步到salt;
# 结果直接执行后,又改回去了。
[[email protected] ~]# salt 'salt01' state.highstate # 执行高级状态,通过top.sls 去查找
………………