zoukankan      html  css  js  c++  java
  • SaltStack配置管理--状态间的关系(六)

    一.include的引用

    需求场景:用于含有多个SLS的状态,使用include可以进行多个状态的组合,将安装apache,php,mysql集合在一个sls中

    [root@7mini-node1 prod]# pwd
    /srv/salt/prod
    [root@7mini-node1 prod]# vim lamp.sls
    include:
      - apache.init
      - php.init
      - mysql.init
    [root@7mini-node1 prod]# vim ../base/top.sls 
    prod:
      '7mini-node1':
        - lamp
    [root@7mini-node1 prod]# salt  "7mini-node1" state.highstate    #执行无报错为正确
    

    二.extend的使用

    需求场景:软件包安装的时候,需求假设:只在node1上按装php-mbstring包,其他的机器不安装。单独在组合的sls中添加,不需要可以删掉

    [root@7mini-node1 prod]# pwd
    /srv/salt/prod
    [root@linux-node1 prod]# vim lamp.sls 
    include:
      - apache.init
      - php.init
      - mysql.init
    
    extend:
      php-install:
        pkg.installed:
          - name: php-mbstring
    [root@linux-node1 prod]# salt  "7mini-node1" state.highstate
    

    三、require和require_in的使用

    require:我依赖谁
    require_in:我被谁依赖
    需求场景:如果安装不成功或者配置httpd不成功,不启动httpd

    (1)require使用
    [root@7mini-node1 apache]# pwd
    /srv/salt/prod/apache
    [root@7mini-node1 apache]# systemctl stop httpd
    [root@7mini-node1 apache]# vim init_require.sls 
    apache-install:
      pkg.installed:
        - name: httpd
    
    apache-config:
      file.managed:
        - name: /etc/httpd/conf/httpd.conf
        - source: salt://apache/files/httpd1.conf----->将此处的文件改错,模拟配置错误
        - user: root
        - group: root
        - mode: 644
    
    apache-service:
      service.running:
        - name: httpd
        - enable: True
        - require:---------------------------->使用require,表示依赖
          - pkg: apache-install--------------->依赖的状态模块为pkg模块,id为apache-install
          - file: apache-config--------------->依赖的状态模块为file模块,id为apache-config
    [root@7mini-node1 apache]# salt   "7nini-noed1" state.highstate   #执行模块提示会有报错,此时httpd不会正常启动
    

     

    (2)require_in使用               #与require是相同的只是表达方式的不同
    [root@7mini-node1 apache]# vim init_require_in.sls 
    apache-install:
      pkg.installed:
        - name: httpd
        - require_in:------------------>被依赖
          - service: apache-service---->被依赖的模块是service,id为apache-service
    
    apache-config:
      file.managed:
        - name: /etc/httpd/conf/httpd.conf
        - source: salt://apache/files/httpd.conf
        - user: root
        - group: root
        - mode: 644
        - require_in:
          - service: apache-service
    
    apache-service:
      service.running:
        - name: httpd
        - enable: True
    
    解释说明:require和require_in都能实现依赖的功能,主动和被动的关系不同
    

      

    四、watch和watch_in的使用

    需求场景:监控配置文件变动,重启服务或重载服务

    设置重启

    [root@7mini-node1 apache]# pwd
    /srv/salt/prod/apache
    [root@7mini-node1 apache]# vim init_watch.sls 
    apache-install:
      pkg.installed:
        - name: httpd
    
    apache-config:
      file.managed:
        - name: /etc/httpd/conf/httpd.conf
        - source: salt://apache/files/httpd.conf
        - user: root
        - group: root
        - mode: 644
    
    apache-service:
      service.running:
        - name: httpd
        - enable: True
        - watch:---------------------->使用watch
          - file: apache-config------->监控的模块为file,id为apache-config
    [root@7mini-node1 apache]# vim files/httpd.conf     #随意修改配置文件
    [root@7mini-node1 apache]# salt  "7mini-node1" state.highstate            
    

     设置重载

    [root@7mini-node1 apache]# vim init_watch.sls 
    apache-install:
      pkg.installed:
        - name: httpd
    
    apache-config:
      file.managed:
        - name: /etc/httpd/conf/httpd.conf
        - source: salt://apache/files/httpd.conf
        - user: root
        - group: root
        - mode: 644
    
    apache-service:
      service.running:
        - name: httpd
        - enable: True
        - reload: True----------------------------------->增加参数重载
        - watch:
          - file: apache-config
    
    [root@7mini-node1 apache]# salt -S "192.168.56.11" state.highstate
    

    五、unless:状态间的条件判断

    需求场景:给apache的admin目录进行加密登陆查看    #如果某文件存在将不执行

    (1)修改配置文件,添加认证功能
    [root@7mini-node1 apache]# vim files/httpd.conf 
    <Directory "/var/www/html/admin">
            AllowOverride All
            Order allow,deny
            Allow from all
            AuthType Basic
            AuthName "haha"
            AuthUserFile /etc/httpd/conf/htpasswd_file
            Require user admin
    </Directory>
    
    (2)修改状态文件init.sls
    [root@7mini-node1 apache]# vim init.sls 
    apache-install:
      pkg.installed:
        - name: httpd
    
    apache-config:
      file.managed:
        - name: /etc/httpd/conf/httpd.conf
        - source: salt://apache/files/httpd.conf
        - user: root
        - group: root
        - mode: 644
    
    apache-auth:
      pkg.installed:
        - name: httpd-tools
      cmd.run:------>使用cmd模块的run方法
        - name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin---->生成密码文件
        - unless: test -f /etc/httpd/conf/htpasswd_file---->unless判断条件,test -f判断为假则执行。即htpasswd文件如果不存在就执行生成密码
    
    apache-service:
      service.running:
        - name: httpd
        - enable: True
        - reload: True
        - watch:
          - file: apache-config
    
    [root@7mini-node1 apache]# salt  "7mini-node1" state.highstate
    

     浏览器访问10.0.0.11/admin/index.html会出现密码验证 

      

     

     

      

      

  • 相关阅读:
    高性能网站优化-确保异步加载脚本时保持执行顺序
    sublime安装和汉化
    解决IE6下a标签的onclick事件里的超链接不跳转问题
    C++大数据处理
    HDRtools-OpenExr
    Effective C++学习进阶版
    我的算法学习之路
    一个应届计算机毕业生的2012求职之路
    存储器管理
    程序员的自我修养——操作系统篇
  • 原文地址:https://www.cnblogs.com/jimmy-xuli/p/9128883.html
Copyright © 2011-2022 走看看