zoukankan      html  css  js  c++  java
  • 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  # 批量执行

  • 相关阅读:
    TOMCAT源码分析(转)
    CSS从零开始(1)--CSS基础语法
    java生成验证码
    [转]java中作用域public private protected 以及不写的区别
    Java Socket NIO详解(转)
    mysql数据库单表只有一个主键自增id字段,ibatis实现id自增
    手机验证码执行流程
    javaweb之Filter过滤器详解
    HttpSessionListener的用法
    SpringContextHolder 静态持有SpringContext的引用
  • 原文地址:https://www.cnblogs.com/zhanglianghhh/p/10828026.html
Copyright © 2011-2022 走看看