include包含
上篇安装LAMP环境是一个个环境安装,可以通过include模块全部安装
lamp.sls
include:
- apache.init
- php.init
- mysql.init
安装
salt -S '192.168.56.12' state.sls lamp saltenv=prod
也可以直接写在top.sls里面使用高级状态执行 prod是环境linux-node2.example.com是主机ID
扩展extend
需求:需要在一台主机安装php包并且只在这台主机新安装一个包php-mbstring但是不要修改原sls文件
修改lamp.sls文件增加扩展
include:
- apache.init
- php.init
- mysql.init
extend:
php-install:
pkg.installed:
- name: php-mbstring
相当于追加了红色部分的安装,在没有修改原文件的情况下追加安装包
require需求依赖
需求:apache安装的时候假如配置文件有错误就不执行启动操作
修改sls文件添加 file是模块名apache-config是模块ID 同理pkg也是
如果把配置文件改错写一个不存在的httpd配置文件执行会报错
报错1 没有发现配置文件
报错2 require失败所以没有启动
require-in我被谁依赖(两个记住一个即可)
watch我观察谁
如果文件修改则重载或者重启
执行状态发现文件变化重载(不加reload就是重启restart)
watch_in我被谁观察(两个记住一个即可)
状态间的条件判断
需求:网页在进入admin文件夹的时候需要输入用户名和密码
修改apache配置文件/etc/httpd/conf/httpd.conf添加需要加密的文件夹
<Directory "/var/www/html/admin" >
AllowOverride All
Order allow,deny
Allow from all
AuthType Basic
AuthName "hehe"
AuthUserFile /etc/httpd/conf/htpasswd_file
Require user admin
</Directory>
以非交换的方式设置用户名和密码
htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin
查看
查看设置的需要加密的文件
输入地址访问需要输入刚刚设置的用户名和密码
在sls里面实现编辑apache的init文件
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
- watch_in:
- service: apache-service
apache-auth:
pkg.installed:
- name: httpd-tools
cmd.run:
- name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin
- unless: test -f /etc/httpd/conf/htpasswd_file
apache-service:
service.running:
- name: httpd
- enable: True
- reload: True
安装httpd-tools包是htpasswd命令执行需要该包
unless是判断添加如果为真及加密文件存在则不执行以免重复添加
验证
执行第一次添加
再次执行判断条件为真就不添加该密码文件