4、saltstack学习 状态判断


 1、状态判断

先在之前完成的lamp环境里,写个phpinfo

cd /var/www/html/

mkdir admin

vim admin/info.php

<?php
phpinfo()
?>

给这个phpinfo目录加密码认证

先修改salt-master的httpd文件,在156行下边加入下边一段

[root@master-1 web]# vim files/httpd.conf 

"/var/www/html/admin">
        AllowOverride All
        Order allow,deny
        Allow from All
        AuthUserFile /etc/httpd/conf/htpasswd_file
        AuthName "haha"
        AuthType Basic
        Require user admin

[root@master-1 web]# vim  /srv/salt/base/web/lamp.sls 

lamp-install: # 安装
  pkg.installed:
    - pkgs:
      - httpd
      - php
      - php-pdo
      - php-mysql

#配置
apache-config:
  file.managed: # 文件管理
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://web/files/httpd.conf #这是个相对目录,相当于base目录下的web
    - user: root
    - group: root
    - mode: 644
    - require: #依赖某个状态
      - pkg: lamp-install
apache-auth:
  pkg.installed:
    - name: httpd-tools
    - require_in:
      - cmd: apache-auth # 确保httpd-tools安装
  cmd.run:
    - name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin # 调用htpasswd命令生成用户名密码,用户名和密码都是admin,保存到认证文件/etc/httpd/conf/htpasswd_file
apache-conf:
  file.recurse:
    - name: /etc/httpd/conf.d
    - source: salt://web/files/apache-conf.d

php-config:
  file.managed:
    - name: /etc/php.ini
    - source: salt://web/files/php.ini
    - user: root
    - group: root
    - mode: 644
lamp-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch: # 关注某个状态,只要下边的配置文件有变更,就重载服务
      - file: apache-conf #监控的状态模块,后边是状态ID
      - file: apache-config

2、判断命令是否执行unless

格式 

test -f /etc/httpd/conf/htpasswd_file # 判断命令返回值为真,那么cmd.run就不执行,再修改lamp.sls
[root@master-1 web]# vim  /srv/salt/base/web/lamp.sls 
lamp-install: # 安装
  pkg.installed:
    - pkgs:
      - httpd
      - php
      - php-pdo
      - php-mysql

#配置
apache-config:
  file.managed: # 文件管理
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://web/files/httpd.conf #这是个相对目录,相当于base目录下的web
    - user: root
    - group: root
    - mode: 644
    - require: #依赖某个状态
      - pkg: lamp-install
apache-auth:
  pkg.installed:
    - name: httpd-tools
    - require_in:
      - cmd: apache-auth # 确保httpd-tools安装
  cmd.run:
    - name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin # 调用htpasswd命令生成用户名密码,用户名和密码都是admin,保存到认证文件/etc/httpd/conf/htpasswd_file
    - unless: test -f /etc/httpd/conf/htpasswd_file # 判断命令返回值为真,那么cmd.run就不执行
apache-conf:#目录管理
  file.recurse:
    - name: /etc/httpd/conf.d
    - source: salt://web/files/apache-conf.d

php-config:
  file.managed:
    - name: /etc/php.ini
    - source: salt://web/files/php.ini
    - user: root
    - group: root
    - mode: 644
lamp-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch: # 关注某个状态,只要下边的配置文件有变更,就重载服务
      - file: apache-conf #监控的状态模块,后边是状态ID
      - file: apache-config