Saltstack_使用指南10_配置管理-状态模块
1. 主机规划

salt 版本
[root@salt100 ~]# salt --version
salt 2018.3. (Oxygen)
[root@salt100 ~]# salt-minion --version
salt-minion 2018.3. (Oxygen)
状态模块文档
https://docs.saltstack.com/en/latest/ref/states/all/index.html
注意事项
修改了master或者minion的配置文件,那么必须重启对应的服务。
1.1. 特别注意
# 状态一定要「支持多次执行」
# 生产环境不能直接 slat '*' state.highstate
# 而是:
slat '172.16.1.11' state.highstate test=True
# 如果没问题
slat '172.16.1.11' state.highstate
# 如果没问题
slat '*' state.highstate # 否则:可能造成生产挂了 注意:- source: salt://lamp/file/httpd.conf 等价为 - source: /srv/salt/lamp/file/httpd.conf
表示配置文件的来源,salt:// 在哪个环境就表示哪个环境的根目录
当前是在base的环境,所以根目录为:/srv/salt/
file_roots:
base:
- /srv/salt/
1.2. 状态文件sls讲解
# 每个声明ID下面相同状态模块只能有一个【不能重复使用】
# 但可以有多个不同的状态模块
apache-service: # ID声明, 高级状态,ID 必须唯一
service.running: # state声明,状态证明 【我要使用这个状态模块】
- name: httpd # 选项声明
file.managed:
- 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. 构思
、安装软件包 pkg
、修改配置文件 file
、启动服务 service
# 其中数据库单独部署【因为只需要部署一个数据库即可】

3.2. 数据库SLS【单独一个SLS】
[root@salt100 lamp]# pwd
/srv/salt/lamp
[root@salt100 lamp]# ll /srv/salt/lamp/file/my.cnf # 涉及的数据库配置文件
-rw-r--r-- root root Dec : /srv/salt/lamp/file/my.cnf
[root@salt100 lamp]# cat mariadb.sls
mariadb-installed:
pkg.installed:
- name: mariadb
- name: mariadb-server mariadb-config:
file.managed:
- name: /etc/my.cnf
- source: salt://lamp/file/my.cnf
# 如下写法也可以,都可以正常执行。但是不利于后期维护
# - source: /srv/salt/lamp/file/my.cnf # 不使用 salt 协议,直接使用绝对路径
- user: root
- group: root
- mode:
- backup: minion mariadb-service:
service.running:
# 具体的服务名称
# systemctl status mariadb.service 那么名称就为 mariadb.service 或 mariadb
- name: mariadb.service # 服务名称
- enable: True # 开机自启动
# - reload: True # 重加载服务, 但 mariadb 没有该项
- restart: True # 重启服务
- watch:
# 下文的意思是: 名称 mariadb-config 中 file 管理的文件发生改变时那么重启 mariadb 服务
# 也就是说文件 /srv/salt/lamp/file/my.cnf 发生改变时,重启 mariadb 服务
- file: mariadb-config
执行该状态SLS
[root@salt100 lamp]# salt 'salt100' state.sls lamp.mariadb test=True # 然后查看返回信息
[root@salt100 lamp]# salt 'salt100' state.sls lamp.mariadb # 执行,如果上一步无异常的话
3.3. SLS编写方式一:根据salt模块编写【在salt03上生效】
[root@salt100 lamp]# pwd
/srv/salt/lamp
[root@salt100 lamp]# ll
total
-rw-r--r-- root root Dec : apache-php.sls
drwxr-xr-x root root Dec : file
-rw-r--r-- root root Dec : mariadb.sls
[root@salt100 lamp]# ll file/ # 涉及到的配置文件
total
-rw-r--r-- root root Dec : httpd.conf
-rw-r--r-- root root Dec : my.cnf
-rw-r--r-- root root Oct : php.ini
[root@salt100 lamp]# cat apache-php.sls # sls 信息
### 根据模块编写
# yum 包安装模块
apache-php-installed:
pkg.installed:
- name: httpd
- name: php
- name: php-devel
- name: mariadb # 数据库连接客户端,用于数据库连接测试
- name: php-mysql
- name: php-cli
- name: php-mbstring ### 文件管理模块----用于管理配置文件
# Apache 配置文件
apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://lamp/file/httpd.conf
- user: root
- group: root
- mode:
- backup: minion # PHP 配置文件
php-config:
file.managed:
- name: /etc/php.ini
- source: salt://lamp/file/php.ini
- user: root
- group: root
- mode:
- backup: minion ### 服务管理模块----是否开机自启动等等
apache-service:
service.running:
- name: httpd
- enable: True
- reload: True
- watch:
# 下文的意思是: 名称 apache-config 中 file 管理的文件发生改变时那么重加载 httpd 服务
# 也就是说文件 /srv/salt/lamp/file/httpd.conf 发生改变时,重加载 httpd 服务
- file: apache-config
执行该状态SLS
[root@salt100 lamp]# salt 'salt03' state.sls lamp.apache-php test=True
[root@salt100 lamp]# salt 'salt03' state.sls lamp.apache-php # 执行,如果上一步无异常的话
3.4. SLS编写方式二:根据安装的服务编写【在salt01、salt02上生效】
比如根据Apache服务、PHP等,进行分类编写
[root@salt100 lamp]# pwd
/srv/salt/lamp
[root@salt100 lamp]# ll
total
-rw-r--r-- root root Dec : apache-php2.sls
-rw-r--r-- root root Dec : apache-php.sls
drwxr-xr-x root root Dec : file
-rw-r--r-- root root Dec : mariadb.sls
[root@salt100 lamp]# ll file/ # 涉及到的配置文件
total
-rw-r--r-- root root Dec : httpd.conf
-rw-r--r-- root root Dec : my.cnf
-rw-r--r-- root root Oct : php.ini
[root@salt100 lamp]# cat apache-php2.sls # sls 信息
### 根据服务编写
# Apache 服务
apache-service:
pkg.installed:
- name: httpd file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://lamp/file/httpd.conf
- user: root
- group: root
- mode:
- backup: minion service.running:
- name: httpd
- enable: True
- reload: True
- watch:
# 下文的意思是: 名称 apache-service 中 file 管理的文件发生改变时那么重加载 httpd 服务
# 也就是说文件 /srv/salt/lamp/file/httpd.conf 发生改变时,重加载 httpd 服务
- file: apache-service # PHP 服务
php-service:
pkg.installed:
- name: php
- name: php-devel
- name: mariadb # 数据库连接客户端,,用于数据库连接测试
- name: php-mysql
- name: php-cli
- name: php-mbstring file.managed:
- name: /etc/php.ini
- source: salt://lamp/file/php.ini
- user: root
- group: root
- mode:
- backup: minion
执行该状态SLS
[root@salt100 lamp]# salt 'salt01' state.sls lamp.apache-php2 test=True # 然后查看返回信息
[root@salt100 lamp]# salt 'salt01' state.sls lamp.apache-php2 # 查看执行结果
[root@salt100 lamp]# salt -L 'salt01,salt02' state.sls lamp.apache-php2 # 批量执行

Saltstack_使用指南10_配置管理-状态模块的更多相关文章
- Saltstack_使用指南11_配置管理-状态之间依赖关系
1. 说明 下文的案例是根据上一篇文章进行的修改.因此请优先读取上一篇文章内容<Saltstack_10_配置管理-状态模块> 并且目录进行了变化,从 /srv/salt/lamp 变为了 ...
- Saltstack_使用指南12_配置管理-jinja模板
1. 说明 下文的案例是根据上一篇文章进行的修改.因此请优先读取上一章博文内容<Saltstack_使用指南11_配置管理-状态之间依赖关系> 2. 主机规划 salt 版本 [root@ ...
- Saltstack_使用指南03_配置管理
1. 主机规划 注意事项 修改了master或者minion的配置文件,那么必须重启对应的服务. 2. 了解YAML 具体地址 https://docs.saltstack.com/en/latest ...
- Saltstack_使用指南17_salt-ssh
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...
- SaltStack配置管理之状态模块和jinja2(五)
官方文档 https://docs.saltstack.com/en/latest/topics/states/index.html 配置管理之SLS Salt State SLS描述文件(YAM ...
- 架构师成长之路5.3-Saltstack配置管理(State状态模块)
点击架构师成长之路 架构师成长之路5.3-Saltstack配置管理(State状态模块) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要 ...
- 5 LAMP配置管理:模块(state、file、pkg、service)、jinja模板、job管理、redis主从
1. 配置管理:state和file https://docs.saltstack.com/en/latest/topics/states/index.html Full list of states ...
- Nginx服务编译安装、日志功能、状态模块及访问认证模式实操
系统环境 [root@web ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@web ~]# uname -a Linux d ...
- SaltStack配置管理--状态间的关系(六)
一.include的引用 需求场景:用于含有多个SLS的状态,使用include可以进行多个状态的组合,将安装apache,php,mysql集合在一个sls中 [root@7mini-node1 p ...
随机推荐
- C#中增量类功能的方式之 继承与扩展
之前一次公司培训的时候,将它记录下来,https://www.cnblogs.com/AlvinLee/p/10180536.html这个博客上面比较全面. 1.扩展方法 扩展方法是一种特殊的静态方法 ...
- ArcGIS api for JavaScript 3.27 FindTask查询功能
在ArcGIS API中查询功能是经常使用的,常用的三个查询分别是FindTask,QueryTask,IdentifyTask.它们各自都有自己的特点. 查询功能分为属性查询和空间查询 FindTa ...
- apache部分报错解决方法
AH00558: 进入apache文件夹下的conf文件夹,打开httpd.conf文件,用ctrl+F找到ServerName,如下图 在下面加上一句: ServerName domain_name ...
- JS 注释
JS 注释 JavaScript 注释可用于提高代码的可读性. 单行注释 // 输出标题: document.getElementById("myH1").innerHTML=&q ...
- Java日期处理组件joda-time
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/175 Java日期处理组件joda-time 平常在开发过 ...
- 从0系统学Android--2.6 Activity 的最佳实践
从0系统学Android--2.6 Activity 的最佳实践 本系列文章目录:更多精品文章分类 本系列持续更新中.... 实践中的技巧 2.6.1 知晓当前是在哪个 Activity 这个其实很简 ...
- Druid-代码段-5-1
所属文章:池化技术(一)Druid是如何管理数据库连接的? 本代码段对应主流程5,连接的回收: //DruidPooledConnection类的close方法 @Override public vo ...
- 自定义v-color指令
在自定义指令的时候,和js行为有关的,最好就写在inserted中去,防止js代码不生效.和样似有关的操作放在bind中去Vue.direactive [d儿 Rai K T V] 没有s哈 < ...
- Python学习一、一个小例子
一.题目: 对于一串氨基酸序列(由字母表前二十个大写字母组成),需要得到每一个氨基酸数目,然后输出到文件夹D:\test\frq.txt,要求用循环和字典实现. 氨基酸序列如下: ABCDEFGHIJ ...
- cf之kmp匹配稍稍改一改
看样例就知道要干嘛了 http://codeforces.com/contest/1200/problem/E 每次我们用新的串和答案串匹配,答案串的匹配位置是max(0,(int)ans.size( ...