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

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
状态模块文档

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部署】
salt100 CentOS7.5 172.16.1.100 10.0.0.100 salt100 mariadb
salt01 CentOS7.5 172.16.1.11 10.0.0.11 salt01 httpd、PHP
salt02 CentOS7.5 172.16.1.12 10.0.0.12 salt02 httpd、PHP
salt03 CentOS7.5 172.16.1.13 10.0.0.13 salt03 httpd、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  # 批量执行

微信公众号

发布了129 篇原创文章 · 获赞 128 · 访问量 67万+

猜你喜欢

转载自blog.csdn.net/woshizhangliang999/article/details/89377787