创建目录
/home/work/logs/{{ project }}:file.directory:- order: 1- makedirs: True- user: work- group: work- dir_mode: 755
unless用法:
{{ project }}-file:file.managed:- order: 3- name: /home/work/www/code/{{ project}}/{{ version }}.tar.gz- source: salt://webapps/{{ project}}/files/code/{{ env }}/{{ version }}.tar.gz- user: work- group: work- unless: test -f /home/work/www/code/{{ project}}/{{ version }}.tar.gz # 只有结果为False,才执行state
onlyif用法:
与unless正好相反,结果返回True才会执行。
watch用法
里面任何一个状态变化(有 change),就触发。 并不是所有 state 都支持 watch。(service state 能支持。)
# 可以让某个 service 在配置文件被修改时,自动执行 reload / restart# (Salt 会直接调用 restart,除非设置 reload: True)ntpd:service.running:- watch:- file: /etc/ntp.conf
require:
vim:pkg.installed/etc/vimrc:file.managed:- source: salt://edit/vimrc- require:- pkg: vim
在这个例子中, /etc/vimrc 文件并不会被placed(managed),直到 vim 软件包已安装
cmd.run
cmd.run:- order: 4- name: tar -zxf {{ version }}.tar.gz && chown -R work:work {{ version }} && rm {{ version }}.tar.gz- cwd: /home/work/www/code/{{ project}}- unless: test -d /home/work/www/code/{{ project}}/{{ version }}
name:shell真正执行的命令,cwd是命令在哪个目录下执行
创建软连接
/tmp/haha:file.symlink:- makedirs: True- force: True- user: work- group: work- target: /proc
force会覆盖已经存在的软连接
target:是软连接的源路径
cmd.run
php-fpm-service:cmd.wait:- order: 7- name: kill -USR2 `cat /home/work/php/var/run/php-fpm.pid`- watch:- file: /home/work/www/run/{{ project }}
cmd.wait不能自己用需要配合watch来使用,watch监控文件发生改变后,执行cmd.wait函数定义的内容,比如这个例子就是运行命令kill -USER2等等。