Saltstack_使用指南10_配置管理-状态模块

1. 主机规划

salt 版本

1 [[email protected] ~]# salt --version
2 salt 2018.3.3 (Oxygen)
3 [[email protected] ~]# salt-minion --version
4 salt-minion 2018.3.3 (Oxygen)

状态模块文档

https://docs.saltstack.com/en/latest/ref/states/all/index.html

注意事项

修改了master或者minion的配置文件,那么必须重启对应的服务。

1.1. 特别注意

 1 # 状态一定要「支持多次执行」
 2 # 生产环境不能直接 slat ‘*‘ state.highstate
 3 # 而是:
 4 slat ‘172.16.1.11‘ state.highstate test=True
 5 # 如果没问题
 6 slat ‘172.16.1.11‘ state.highstate
 7 # 如果没问题
 8 slat ‘*‘ state.highstate
 9
10 # 否则:可能造成生产挂了
11
12 注意:- source: salt://lamp/file/httpd.conf    等价为  - source: /srv/salt/lamp/file/httpd.conf
13 表示配置文件的来源,salt:// 在哪个环境就表示哪个环境的根目录
14     当前是在base的环境,所以根目录为:/srv/salt/
15 file_roots:
16   base:
17     - /srv/salt/

1.2. 状态文件sls讲解

1 # 每个声明ID下面相同状态模块只能有一个【不能重复使用】
2 # 但可以有多个不同的状态模块
3 apache-service:            # ID声明,  高级状态,ID 必须唯一
4   service.running:        # state声明,状态证明 【我要使用这个状态模块】
5     - name: httpd        # 选项声明
6   file.managed:
7     - name: /etc/httpd/conf/httpd.conf

2. 常用状态模块

2.1. states.pkg

https://docs.saltstack.com/en/latest/ref/states/all/salt.states.pkg.html#module-salt.states.pkg

2.2. states.file

https://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html#module-salt.states.file

2.3. states.service

https://docs.saltstack.com/en/latest/ref/states/all/salt.states.service.html#module-salt.states.service    

3. 案例-LAMP架构

3.1. 构思

1 1、安装软件包        pkg
2 2、修改配置文件        file
3 3、启动服务            service
4 # 其中数据库单独部署【因为只需要部署一个数据库即可】

3.2. 数据库SLS【单独一个SLS】

 1 [[email protected] lamp]# pwd
 2 /srv/salt/lamp
 3 [[email protected] lamp]# ll /srv/salt/lamp/file/my.cnf  # 涉及的数据库配置文件
 4 -rw-r--r-- 1 root root 600 Dec 30 17:09 /srv/salt/lamp/file/my.cnf
 5 [[email protected] lamp]# cat mariadb.sls
 6 mariadb-installed:
 7   pkg.installed:
 8     - name: mariadb
 9     - name: mariadb-server
10
11 mariadb-config:
12   file.managed:
13     - name: /etc/my.cnf
14     - source: salt://lamp/file/my.cnf
15     # 如下写法也可以,都可以正常执行。但是不利于后期维护
16     # - source: /srv/salt/lamp/file/my.cnf  # 不使用 salt 协议,直接使用绝对路径
17     - user: root
18     - group: root
19     - mode: 644
20     - backup: minion
21
22 mariadb-service:
23   service.running:
24     # 具体的服务名称
25     # systemctl status mariadb.service  那么名称就为 mariadb.service 或 mariadb
26     - name: mariadb.service  # 服务名称
27     - enable: True  # 开机自启动
28     # - reload: True  # 重加载服务, 但 mariadb 没有该项
29     - restart: True  # 重启服务
30     - watch:
31       # 下文的意思是: 名称 mariadb-config 中 file 管理的文件发生改变时那么重启 mariadb 服务
32       # 也就是说文件 /srv/salt/lamp/file/my.cnf 发生改变时,重启 mariadb 服务
33       - file: mariadb-config 

执行该状态SLS

1 [[email protected] lamp]# salt ‘salt100‘ state.sls lamp.mariadb test=True  # 然后查看返回信息
2 [[email protected] lamp]# salt ‘salt100‘ state.sls lamp.mariadb  # 执行,如果上一步无异常的话

3.3. SLS编写方式一:根据salt模块编写【在salt03上生效】

 1 [[email protected] lamp]# pwd
 2 /srv/salt/lamp
 3 [[email protected] lamp]# ll
 4 total 8
 5 -rw-r--r-- 1 root root 1062 Dec 30 19:09 apache-php.sls
 6 drwxr-xr-x 2 root root   53 Dec 30 19:10 file
 7 -rw-r--r-- 1 root root  816 Dec 30 19:11 mariadb.sls
 8 [[email protected] lamp]# ll file/  # 涉及到的配置文件
 9 total 80
10 -rw-r--r-- 1 root root 11784 Dec 30 17:24 httpd.conf
11 -rw-r--r-- 1 root root   675 Dec 30 19:10 my.cnf
12 -rw-r--r-- 1 root root 64945 Oct 31 03:33 php.ini
13 [[email protected] lamp]# cat apache-php.sls  # sls 信息
14 ### 根据模块编写
15 # yum 包安装模块
16 apache-php-installed:
17   pkg.installed:
18     - name: httpd
19     - name: php
20     - name: php-devel
21     - name: mariadb  # 数据库连接客户端,用于数据库连接测试
22     - name: php-mysql
23     - name: php-cli
24     - name: php-mbstring
25
26 ### 文件管理模块----用于管理配置文件
27 # Apache 配置文件
28 apache-config:
29   file.managed:
30     - name: /etc/httpd/conf/httpd.conf
31     - source: salt://lamp/file/httpd.conf
32     - user: root
33     - group: root
34     - mode: 644
35     - backup: minion
36
37 # PHP 配置文件
38 php-config:
39   file.managed:
40     - name: /etc/php.ini
41     - source: salt://lamp/file/php.ini
42     - user: root
43     - group: root
44     - mode: 644
45     - backup: minion
46
47 ### 服务管理模块----是否开机自启动等等
48 apache-service:
49   service.running:
50     - name: httpd
51     - enable: True
52     - reload: True
53     - watch:
54       # 下文的意思是: 名称 apache-config 中 file 管理的文件发生改变时那么重加载 httpd 服务
55       # 也就是说文件 /srv/salt/lamp/file/httpd.conf 发生改变时,重加载 httpd 服务
56       - file: apache-config

执行该状态SLS

1 [[email protected] lamp]# salt ‘salt03‘ state.sls lamp.apache-php test=True
2 [[email protected] lamp]# salt ‘salt03‘ state.sls lamp.apache-php  # 执行,如果上一步无异常的话

3.4. SLS编写方式二:根据安装的服务编写【在salt01、salt02上生效】

比如根据Apache服务、PHP等,进行分类编写

 1 [[email protected] lamp]# pwd
 2 /srv/salt/lamp
 3 [[email protected] lamp]# ll
 4 total 12
 5 -rw-r--r-- 1 root root  908 Dec 30 19:29 apache-php2.sls
 6 -rw-r--r-- 1 root root 1062 Dec 30 19:09 apache-php.sls
 7 drwxr-xr-x 2 root root   53 Dec 30 19:10 file
 8 -rw-r--r-- 1 root root  816 Dec 30 19:11 mariadb.sls
 9 [[email protected] lamp]# ll file/   # 涉及到的配置文件
10 total 80
11 -rw-r--r-- 1 root root 11784 Dec 30 17:24 httpd.conf
12 -rw-r--r-- 1 root root   675 Dec 30 19:10 my.cnf
13 -rw-r--r-- 1 root root 64945 Oct 31 03:33 php.ini
14 [[email protected] lamp]# cat apache-php2.sls  # sls 信息
15 ### 根据服务编写
16 # Apache 服务
17 apache-service:
18   pkg.installed:
19     - name: httpd
20
21   file.managed:
22     - name: /etc/httpd/conf/httpd.conf
23     - source: salt://lamp/file/httpd.conf
24     - user: root
25     - group: root
26     - mode: 644
27     - backup: minion
28
29   service.running:
30     - name: httpd
31     - enable: True
32     - reload: True
33     - watch:
34       # 下文的意思是: 名称 apache-service 中 file 管理的文件发生改变时那么重加载 httpd 服务
35       # 也就是说文件 /srv/salt/lamp/file/httpd.conf 发生改变时,重加载 httpd 服务
36       - file: apache-service
37
38 # PHP 服务
39 php-service:
40   pkg.installed:
41     - name: php
42     - name: php-devel
43     - name: mariadb  # 数据库连接客户端,,用于数据库连接测试
44     - name: php-mysql
45     - name: php-cli
46     - name: php-mbstring
47
48   file.managed:
49     - name: /etc/php.ini
50     - source: salt://lamp/file/php.ini
51     - user: root
52     - group: root
53     - mode: 644
54     - backup: minion

执行该状态SLS

1 [[email protected] lamp]# salt ‘salt01‘ state.sls lamp.apache-php2 test=True  # 然后查看返回信息
2 [[email protected] lamp]# salt ‘salt01‘ state.sls lamp.apache-php2  # 查看执行结果
3 [[email protected] lamp]# salt -L ‘salt01,salt02‘ state.sls lamp.apache-php2  # 批量执行

原文地址:https://www.cnblogs.com/zhanglianghhh/p/10828026.html

时间: 2024-10-08 18:35:22

Saltstack_使用指南10_配置管理-状态模块的相关文章

Saltstack_使用指南17_salt-ssh

1. 主机规划 salt 版本 1 [[email protected] ~]# salt --version 2 salt 2018.3.3 (Oxygen) 3 [[email protected] ~]# salt-minion --version 4 salt-minion 2018.3.3 (Oxygen) salt ssh文档 https://docs.saltstack.com/en/latest/topics/ssh/index.html 2. salt-ssh实现步骤 2.1.

SaltStack实战之配置管理-状态间关系

SaltStack实战之配置管理-状态间关系 学习 SaltStack SaltStack实战之配置管理-状态间关系 1. 状态相关模块 1.1 pkg 1.2 file 1.3 service 1.4 requisites 2. 实际应用 1. 状态相关模块 1.1 pkg 状态模块:pkg 功能:管理软件包状态 常用方法: pkg.installed # 确保软件包已安装,如果没有安装则安装 pkg.latest # 确保软件包是最新版本,如果不是,则进行升级 pkg.remove # 确保

SaltStack配置管理--状态间的关系

SaltStack配置管理--状态间的关系 1.include的引用 需求场景:用于含有多个SLS的状态,使用include可以进行多个状态的组合 [[email protected] prod]# pwd /srv/salt/prod [[email protected] prod]# vim lamp.sls include: - apache.init - php.init - mysql.init [[email protected] prod]# vim ../base/top.sls

nginx状态模块详解及实战

nginx status介绍 nginx软件的功能模块中有一个ngx_http_stub_status_module模块,这个模块的主要功能是记录nginx的基本访问状态信息,让使用者了解nginx的工作状态,例如:连接数等信息.要想使用状态模块,在编译nginx时必须增加http_stub_status_module支持. 可通过如下方法检查编译安装nginx时是否设定支持上述模块支持: [[email protected] extra]# /application/nginx/sbin/ng

SaltStack源码分析之user状态模块

user状态模块用于在sls文件中指定安装包的uid等属性 /usr/lib/python2.6/site-packages/salt/states/user.py ''' Management of user accounts =========================== The user module is used to create and manage user settings, users can be set as either absent or present ..

SaltStack源码分析之group状态模块

group状态模块用于创建并管理UNIX组账号设置. /usr/lib/python2.6/site-packages/salt/states/group.py ''' Management of user groups ========================= The group module is used to create and manage unix group settings, groups can be either present or absent: .. cod

SaltStack源码分析之pkg状态模块

pkg状态模块使用各个操作系统自带的包管理工具来安装各种软件包,例如RedHat系列使用YUM安装软件包,Ubuntu使用apt-get安装等 /usr/lib/python2.6/site-packages/salt/states/pkg.py ''' Installation of packages using OS package managers such as yum or apt-get ================================================

web 服务器监控状态模块权限控制不严格,导致信息泄露

Apache  服务器状态监控模块开启默认是禁止外网访问,如果更改了权限,可能导致信息泄露 ExtendedStatus On <Location /server-status> SetHandler server-status Order deny,allow #   Deny from all Allow from .example.com </Location> 默认访问地址 http://site/server-status nginx  服务器状态监控模块开启需要配置lo

SaltStack配置管理--状态间的关系(六)

一.include的引用 需求场景:用于含有多个SLS的状态,使用include可以进行多个状态的组合,将安装apache,php,mysql集合在一个sls中 [[email protected] prod]# pwd /srv/salt/prod [[email protected] prod]# vim lamp.sls include: - apache.init - php.init - mysql.init [[email protected] prod]# vim ../base/