第六章:SaltStack模块状态间的关系3 min read

  • A+
所属分类:SaltStack

  

    

官方文档:https://docs.saltstack.com/en/latest/ref/states/requisites.html

  

  功能名称:requisites

  功      能:处理状态间的关系

  常用方法:

      - require:我依赖某个状态

      - require_in:我被某个状态依赖

      - watch:我关注某个状态

      - watch_in:我被某个状态关注

  

文档:https://www.unixhot.com/docs/saltstack/ref/states/all/salt.states.cmd.html#module-salt.states.cmd

  

  功能名称:cmd

  功      能:执行命令

  常用方法:

      - name:执行命令

      - unless:判断条件为真则不执行

  

sls文件配置为例说明状态间的关系,如下:

  1. lamp-install:  
  2.   pkg.installed:  
  3.     - pkgs:  
  4.       - httpd  
  5.       - php  
  6.       - php-pdo  
  7.       - php-mysql  
  8.   
  9. apache-config:  
  10.   file.managed:  
  11.     - name: /etc/httpd/conf/httpd.conf  
  12.     - source: salt://web/files/httpd.conf  
  13.     - user: root  
  14.     - group: root  
  15.     - mode: 644  
  16.     - require:    #我依赖lamp-install状态,lamp-install必须执行成功我才能执行。  
  17.       - pkg: lamp-install  
  18.   
  19. apache-auth:  
  20.   pkg.installed:  
  21.     - name: httpd-tools  
  22.     - require_in:    #我被apache-auth状态依赖,apache-auth必须执行成功才会执行改状态  
  23.       - cmd: apache-auth  
  24.   cmd.run:          #命令状态模块,执行命令使用的模块(上面的require_in执行不成功它就不会执行)  
  25.     - name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin    #执行的命令  
  26.     - unless: test -f /etc/httpd/conf/htpasswd_file     #unless判断该文件是否存在,条件为真,cmd.run则不执行  
  27.   
  28. apache-conf:  
  29.   file.recurse:  
  30.     - name: /etc/httpd/conf.d  
  31.     - source: salt://web/files/apache-conf.d  
  32.     - watch_in:   #我被id为lamp-service的状态关注,当该文件发生变化时就会触动lamp-service  
  33.       - service: lamp-service  
  34.   
  35. /etc/php.ini:  
  36.   file.managed:  
  37.     - source: salt://web/files/php.ini  
  38.     - user: root  
  39.     - group: root  
  40.     - mode: 644  
  41.     - watch_in:     #我被id为lamp-service的状态关注,当该文件发生变化时就会触动lamp-service  
  42.       - service: lamp-service  
  43.   
  44. lamp-service:  
  45.   service.running:  
  46.     - name: httpd  
  47.     - enable: True  
  48.     - reloadTrue  #如果文件发生变化,服务就会重载(如果服务不支持reload就不能这样写)  
  49.     - watch:           #当我发现该文件发生变化时就会启动该模块  
  50.       - file: apache-config    #当这个文件发生变化,服务就会重载  


   

zhaoyulin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: