Saltstack_使用指南10_配置管理-状态模块
时间:2022-07-26
本文章向大家介绍Saltstack_使用指南10_配置管理-状态模块,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1. 主机规划
salt 版本
1 [root@salt100 ~]# salt --version
2 salt 2018.3.3 (Oxygen)
3 [root@salt100 ~]# 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 [root@salt100 lamp]# pwd
2 /srv/salt/lamp
3 [root@salt100 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 [root@salt100 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 [root@salt100 lamp]# salt 'salt100' state.sls lamp.mariadb test=True # 然后查看返回信息
2 [root@salt100 lamp]# salt 'salt100' state.sls lamp.mariadb # 执行,如果上一步无异常的话
3.3. SLS编写方式一:根据salt模块编写【在salt03上生效】
1 [root@salt100 lamp]# pwd
2 /srv/salt/lamp
3 [root@salt100 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 [root@salt100 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 [root@salt100 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 [root@salt100 lamp]# salt 'salt03' state.sls lamp.apache-php test=True
2 [root@salt100 lamp]# salt 'salt03' state.sls lamp.apache-php # 执行,如果上一步无异常的话
3.4. SLS编写方式二:根据安装的服务编写【在salt01、salt02上生效】
比如根据Apache服务、PHP等,进行分类编写
1 [root@salt100 lamp]# pwd
2 /srv/salt/lamp
3 [root@salt100 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 [root@salt100 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 [root@salt100 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 [root@salt100 lamp]# salt 'salt01' state.sls lamp.apache-php2 test=True # 然后查看返回信息
2 [root@salt100 lamp]# salt 'salt01' state.sls lamp.apache-php2 # 查看执行结果
3 [root@salt100 lamp]# salt -L 'salt01,salt02' state.sls lamp.apache-php2 # 批量执行
- Ryu:如何在LLDP中添加自定义LLDPDU
- 机器学习|kaggle数据挖掘和求解的基本步骤
- mybatis_generator_逆向工程的使用笔记
- 纳税服务系统总结
- 纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】
- 纳税服务系统三(优化处理)【异常处理、抽取BaseAction】
- 机器学习|快速排序思想求topk
- 纳税服务系统二(用户模块)【POI、用户唯一性校验】
- 纳税服务系统四(角色模块)【角色与权限、角色与用户】
- 纳税服务系统五(登陆与系统拦截)【配置系统、子系统首页、登陆与拦截】
- 纳税服务系统六(信息发布管理模块)【Ueditor、异步信息交互、抽取BaseService、条件查询、分页】
- 纳税服务系统七(投诉管理模块)【显示投诉信息、处理回复、我要投诉、Quartz自动受理、统计图FusionCharts】
- Unikernel初体验
- Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Hugo搭建博客(二)— Hugo+Github Pages搭建博客
- 创建bean的实例
- Spring-IOC-默认标签的解析
- Spring-IoC -加载 Bean-总览
- Spring-IOC-创建Bean-属性填充
- vi与vim如何修改tab为4个空格方法示例
- Linux使用Crontab定时访问某个路由地址的方法
- jmeter 在linux服务器的安装和运行教程图解
- Linux中改变文件权限的chmod命令详析
- Ubuntu常用指令及用法详解
- Linux 系统使用私钥登录的教程详解
- Ubuntu如何轻松编译openJDK详解
- 详解Linux下Tomcat开启查看GC信息
- Centos7.4 zabbix3.4.7源码安装的方法步骤
- CentOS7环境搭建python3以及与python2实现共存的方法