zoukankan      html  css  js  c++  java
  • Saltstack_使用指南11_配置管理-状态之间依赖关系

    1. 说明

    下文的案例是根据上一篇文章进行的修改。因此请优先读取上一篇文章内容《Saltstack_10_配置管理-状态模块

    并且目录进行了变化,从 /srv/salt/lamp 变为了 /srv/salt/lamp2 。

    另外:下文没有根据模块编写,而是根据服务进行编写的。其中数据库也是单独部署的。

    2. 主机规划

    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

    require 和 watch 文档

    https://docs.saltstack.com/en/latest/topics/tutorials/states_pt2.html

    include 和 extend 文档

    https://docs.saltstack.com/en/latest/topics/tutorials/states_pt3.html

    注意事项

    修改了master或者minion的配置文件,那么必须重启对应的服务。

     

    3. 状态之间的依赖关系

     1 状态间关系: 
     2     1、我依赖谁                require        
     3     2、谁依赖我【我被谁依赖】    require_in
     4 
     5     3、我监控谁                watch    # 例如:如果配置文件有修改,那么会重载、重启服务     
     6     4、谁监控我【我被谁监控】    watch_in   # 如果配置文件有修改,那么会重载、重启服务     
     7 
     8     5、我引用谁        include
     9     6、我扩展谁        extend
    10 
    11 如何编写SLS技巧:
    12     1、按状态分类  如果单独使用,很清晰
    13     2、按服务分类  可以被其他的SLS include。例如:LNMP include mysql 的服务     【生产优先使用】    

    4. 依赖关系案例

    4.1. 部署架构

    4.2. Apache和PHP的SLS【正向依赖】

     1 [root@salt100 lamp2]# pwd  # 所在目录
     2 /srv/salt/lamp2
     3 [root@salt100 lamp2]# ll
     4 total 16
     5 -rw-r--r-- 1 root root 599 Dec 31 15:27 apache.sls
     6 drwxr-xr-x 2 root root  53 Dec 31 15:50 file
     7 -rw-r--r-- 1 root root  41 Dec 31 15:49 init.sls
     8 -rw-r--r-- 1 root root 563 Dec 31 15:42 mariadb.sls  # 单独使用
     9 -rw-r--r-- 1 root root 346 Dec 31 15:31 php.sls
    10 [root@salt100 lamp2]# ll file/   # 涉及的配置文件
    11 total 80
    12 -rw-r--r-- 1 root root 11786 Dec 31 15:50 httpd.conf
    13 -rw-r--r-- 1 root root   671 Dec 31 15:43 my.cnf
    14 -rw-r--r-- 1 root root 64945 Oct 31 03:33 php.ini
    15 [root@salt100 lamp2]# cat init.sls 
    16 include:   # 我包含谁
    17   - lamp2.apache
    18   - lamp2.php
    19 
    20 [root@salt100 lamp2]# cat apache.sls 
    21 apache-service:
    22   pkg.installed:
    23     - name: httpd
    24 
    25   file.managed:
    26     - name: /etc/httpd/conf/httpd.conf
    27     - source: salt://lamp2/file/httpd.conf
    28     - user: root
    29     - gourp: root
    30     - mode: 644
    31     - backup: minion
    32     - require:     # 我依赖谁
    33       - pkg: apache-service   # 依赖 apache-service 中 pkg 的安装包
    34 
    35   service.running:
    36     - name: httpd
    37     - enable: True
    38     - reload: True
    39     - require:    # 我依赖谁
    40       - pkg: apache-service
    41     - watch:      # 我监控谁
    42       # 一旦发生变化,就重加载服务
    43       - file: apache-service  # 监控 apache-service 中 file 的文件
    44 
    45 [root@salt100 lamp2]# cat php.sls 
    46 php-service:
    47   pkg.installed:
    48     - name: php
    49     - name: php-devel
    50     - name: mariadb
    51     - name: php-mysql
    52     - name: php-cli
    53     - name: php-mbstring
    54 
    55   file.managed:
    56     - name: /etc/php.ini
    57     - source: salt://lamp2/file/php.ini
    58     - user: root
    59     - group: root
    60     - mode: 644
    61     - backup: minion
    62     - require:     # 我依赖谁
    63       - pkg: php-service

    4.2.1. 执行SLS

     1 [root@salt100 lamp2]# salt 'salt01' state.sls lamp2.init test=True  # 测试是否可行 【查看返回信息】
     2 [root@salt100 lamp2]# salt 'salt01' state.sls lamp2.init  # 查看执行结果
     3 [root@salt100 lamp2]# salt 'salt0*' test.ping   # 将进行批量执行----查看目标选择是否正确
     4 salt01:
     5     True
     6 salt02:
     7     True
     8 salt03:
     9     True
    10 [root@salt100 lamp2]# salt 'salt0*' state.sls lamp2.init  # 批量执行【并查看执行结果】

    4.3. mariadb 的 SLS 【反向依赖】

     1 [root@salt100 lamp2]# pwd  # 所在目录
     2 /srv/salt/lamp2
     3 [root@salt100 lamp2]# ll
     4 total 16
     5 -rw-r--r-- 1 root root 599 Dec 31 15:27 apache.sls
     6 drwxr-xr-x 2 root root  53 Dec 31 15:50 file
     7 -rw-r--r-- 1 root root  41 Dec 31 15:49 init.sls
     8 -rw-r--r-- 1 root root 563 Dec 31 15:42 mariadb.sls  # 单独使用
     9 -rw-r--r-- 1 root root 346 Dec 31 15:31 php.sls
    10 [root@salt100 lamp2]# ll file/   # 涉及的配置文件
    11 total 80
    12 -rw-r--r-- 1 root root 11786 Dec 31 15:50 httpd.conf
    13 -rw-r--r-- 1 root root   671 Dec 31 15:43 my.cnf
    14 -rw-r--r-- 1 root root 64945 Oct 31 03:33 php.ini
    15 [root@salt100 lamp2]# cat mariadb.sls 
    16 mariadb-service:
    17   pkg.installed:
    18     - name: mariadb
    19     - name: mariadb-server
    20     - require_in:   # 谁依赖我「我被谁依赖」
    21       - file: mariadb-service
    22     - watch_in:     # 谁监控我「我被谁监控」
    23       - service: mariadb-service
    24 
    25   file.managed:
    26     - name: /etc/my.cnf
    27     - source: salt://lamp2/file/my.cnf
    28     - user: root
    29     - group: root
    30     - mode: 644
    31     - backup: minion
    32     - watch_in:    # 谁监控我「我被谁监控」
    33       - service: mariadb-service
    34 
    35   service.running:
    36     - name: mariadb.service
    37     - enable: True
    38     - restart: True

    4.3.1. 执行SLS

    1 [root@salt100 lamp2]# salt 'salt100' state.sls lamp2.mariadb test=True  # 测试是否可行 【查看返回信息】
    2 [root@salt100 lamp2]# [root@salt100 lamp2]# salt 'salt100' state.sls lamp2.mariadb  # 查看执行结果

  • 相关阅读:
    D365 FO操作FTP
    D365 FO凭证信息客制化
    input type = number 去除上下箭头,禁用滚轮事件(默认的自带滚轮加减数字)
    touch事件中的touches、targetTouches和changedTouches详解
    css媒体查询
    JavaScript:闭包
    JavaScript:基本包装类型
    十大模板引擎
    关于模板引擎一
    eval详解
  • 原文地址:https://www.cnblogs.com/zhanglianghhh/p/10828102.html
Copyright © 2011-2022 走看看