saltstck的require和watch命令以及watch_in

(1)require:

解释:  用于指定说"我依赖于某些东西"或"一些东西依赖于我"

举例如下:

在这个例子中:

对于require:

指定了extract_nginx 依赖 nginx_source,也就是说要先有nginx_source才能

执行extract_nginx下的功能语句 。

对于unless:

表示如果/tmp下不存在nginx-1.4.5.tar.gz 才去执行file.managed 命令

解释: ubless 后的命令如果为false 才去执行命令

(2)require_in用法

备注: require_in 和require的用大致相同

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":

#####################################################

(3)watch详解:

监视文件的变化,如果发生变化,将会触发定义的操作,常用于监视文件的变化.

上面这个例子的含义: 如果 /usr/local/nginx/conf下的文件发生变化 ,则发出nginx -s relaod的操作

要注意: watch后面的file一定要之前要定义,不然会提示:

(4)watch_in

解释:/etc/ntp.conf 声明(declaring)依赖于服务,watch_in常用于依赖于监视服务

结论: ntp.conf文件的操作依赖于watch_in的服务是正常的不然不进行文件推送

总结:

在State规则中,你可以通过强大的 require 、 require_in 、 watch 及 watch_in 指定state间的依赖关系. 无论是一个服务应该watch一个文件的变化,还是一个服务运行前必须确保软件包已安装都可以通过它们来指定state的逻辑执行顺序.

scp.sls 配置文件如下:

{% 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

 

发布了56 篇原创文章 · 获赞 29 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/knight_zhou/article/details/103756158