(1)require:
解释: 用于指定说"我依赖于某些东西"或"一些东西依赖于我"
指定了extract_nginx 依赖 nginx_source,也就是说要先有nginx_source才能
表示如果/tmp下不存在nginx-1.4.5.tar.gz 才去执行file.managed 命令
解释: ubless 后的命令如果为false 才去执行命令
https://docs.saltstack.com/en/latest/ref/states/requisites.html
Requisite_in statements are the opposite. Instead of saying "I depend on something", requisite_ins say "Someone depends on me":
#####################################################
监视文件的变化,如果发生变化,将会触发定义的操作,常用于监视文件的变化.
上面这个例子的含义: 如果 /usr/local/nginx/conf下的文件发生变化 ,则发出nginx -s relaod的操作
要注意: watch后面的file一定要之前要定义,不然会提示:
解释:/etc/ntp.conf 声明(declaring)依赖于服务,watch_in常用于依赖于监视服务。
结论: ntp.conf文件的操作依赖于watch_in的服务是正常的不然不进行文件推送
在State规则中,你可以通过强大的 require 、 require_in 、 watch 及 watch_in 指定state间的依赖关系. 无论是一个服务应该watch一个文件的变化,还是一个服务运行前必须确保软件包已安装都可以通过它们来指定state的逻辑执行顺序.
{% set module = 'cmd' %}
##scp file
nginx_source:
file.managed:
- source: salt://source/tools/tengine-2.1.2.tar.gz
- name: /opt/tools/tengine-2.1.2.tar.gz
- unless: test -e /opt/tools/tengine-2.1.2.tar.gz
##
Extract_nginx:
cmd.run:
- cwd: /opt/tools
- names:
- tar -xzf tengine-2.1.2.tar.gz
- unless: test -d tengine-2.1.2
- require:
- file: nginx_source
##定义传送文件
txt:
file.managed:
- name: /root/date.txt
- source: salt://source/tools/date.txt
###
Run myscripts:
# cmd.run:
cmd.wait:
- cwd: /root/
- names:
#- /bin/bash {{ module }}.sh
- hostname
- watch:
#- file: /root/date.txt
- file: /root/*.txt