saltstack-state用例
创建目录
/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等等。