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

1. 主机规划

服务器名称操作系统版本内网IP外网IP(模拟)Hostname部署模块
salt100CentOS7.5172.16.1.10010.0.0.100salt100salt-master、salt-minion
salt01CentOS7.5172.16.1.1110.0.0.11salt01salt-minion
salt02CentOS7.5172.16.1.1210.0.0.12salt02salt-minion
salt03CentOS7.5172.16.1.1310.0.0.13salt03salt-minion
状态模块文档

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. 构思

1、安装软件包		pkg
2、修改配置文件		file
3、启动服务			service
# 其中数据库单独部署【因为只需要部署一个数据库即可】
服务器名称操作系统版本内网IP外网IP(模拟)Hostname部署模块【通过salt部署】
salt100CentOS7.5172.16.1.10010.0.0.100salt100mariadb
salt01CentOS7.5172.16.1.1110.0.0.11salt01httpd、PHP
salt02CentOS7.5172.16.1.1210.0.0.12salt02httpd、PHP
salt03CentOS7.5172.16.1.1310.0.0.13salt03httpd、PHP

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

[root@salt100 lamp]# pwd
/srv/salt/lamp
[root@salt100 lamp]# ll /srv/salt/lamp/file/my.cnf  # 涉及的数据库配置文件
-rw-r--r-- 1 root root 600 Dec 30 17:09 /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: 644
    - 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 8
-rw-r--r-- 1 root root 1062 Dec 30 19:09 apache-php.sls
drwxr-xr-x 2 root root   53 Dec 30 19:10 file
-rw-r--r-- 1 root root  816 Dec 30 19:11 mariadb.sls
[root@salt100 lamp]# ll file/  # 涉及到的配置文件
total 80
-rw-r--r-- 1 root root 11784 Dec 30 17:24 httpd.conf
-rw-r--r-- 1 root root   675 Dec 30 19:10 my.cnf
-rw-r--r-- 1 root root 64945 Oct 31 03:33 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: 644
    - backup: minion

# PHP 配置文件
php-config:
  file.managed:
    - name: /etc/php.ini
    - source: salt://lamp/file/php.ini 
    - user: root
    - group: root
    - mode: 644
    - 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 12
-rw-r--r-- 1 root root  908 Dec 30 19:29 apache-php2.sls
-rw-r--r-- 1 root root 1062 Dec 30 19:09 apache-php.sls
drwxr-xr-x 2 root root   53 Dec 30 19:10 file
-rw-r--r-- 1 root root  816 Dec 30 19:11 mariadb.sls
[root@salt100 lamp]# ll file/   # 涉及到的配置文件
total 80
-rw-r--r-- 1 root root 11784 Dec 30 17:24 httpd.conf
-rw-r--r-- 1 root root   675 Dec 30 19:10 my.cnf
-rw-r--r-- 1 root root 64945 Oct 31 03:33 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: 644
    - 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: 644
    - 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  # 批量执行

微信公众号

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值