使用requisites对状态进行排序控制,结合前面的file.managed
文件下发和-watch
requisites实现自动化
直接上程序
install_httpd:
pkg.installed:
- name: httpd
httpd_running:
service.running:
- name: httpd
- enable: True
- reload: True
- require:
- pkg: install_httpd
- watch:
- file: httpd_conf
httpd_conf: ## <========================= -watch
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://httpd.conf
- user: root
- group: root
- mode: 600
- 在这里用了状态排序控制
-require
,指定了httpd_running的执行前提是 -pkg: install_httpd(安装了httpd) - 这里使用了
-watch
监控httpd_conf
(不是http.conf),一旦httpd_conf
更改,就触发httpd_running
reload重启 -
httpd_conf
用file.managed
下发文件,将/srv/salt/httpd.conf
文件同步给minion端的/etc/httpd/conf/httpd.conf
文件,所以要提前创建自定义的/srv/salt/httpd.conf
文件 - file.manage下发文件指定了文件(同步)来源、用户和组以及权限。
- 通过
- require
和- watch
两个requisites我们可以完成绝大多数的顺序控制,另外还有其他的一些requisites,可查阅官方文档。另外每个requisites都对应着一个_in形式,功能一样,只是放置位置不同(依赖于……和被……依赖)推荐只用原型。 - sys.list_functions service跟service.running非常像,所以要注意,前者是命令,后者是state模块的文件格式。
部署lamp架构
2017.7.1版本,指定依赖
require
要用- pkg/pkgs,pkg.installed后如果是一个软件包,用name/names,两个或以上的话用pkgs/names。
install_httpd:
pkg.installed:
- pkgs:
- httpd
- httpd-devel
httdp_conf:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://httpd.conf
- user: root
- group: root
- mode: 600
httpd_running:
service.running:
- name: httpd
- enable: True
- require:
- pkg: install_httpd ## 这里注意!
- watch:
- file: httdp_conf
install_php:
pkg.installed:
- pkgs:
- php
- php-mysql
- php-common
- php-gd
- php-mbstring
- php-devel
- php-xml
- php-fpm
php_running:
service.running:
- name: php-fpm
- enable: True
- reload: True
- watch:
- file: php_conf
php_conf:
file.managed:
- name: /etc/php.ini
- source: salt://php.ini
- user: root
- group: root
- mode: 600
mysql_install:
pkg.installed:
- pkgs:
- mysql
- mysql-server
- mysql-devel
service.running:
- name: mysqld
- enable: True
- reload: True
- require:
- pkg: install_httpd
- watch:
- file: mysql_conf
mysql_conf:
file.managed:
- name: /etc/my.cnf
- source: salt://my.cnf
- user: root
- group: root
- mode: 600