如果目录为空,则仅在Salt中执行命令

时间:2017-01-19 17:56:10

标签: mysql devops salt-stack

我正在尝试将以下命令集成到salt状态:

mysql_install_db --user=mysql --basedir=/usr/ --ldata=/data/mysql/

但仅当/ data / mysql为空或mysql不包含数据库时。

有人可以建议一个好方法吗?

提前致谢

2 个答案:

答案 0 :(得分:3)

在任何州,您都可以使用unlessonlyif条件。这些条件是在对状态进行评估时对minion启动的命令。

根据您的需要,您可以使用:

mysql_install_db:
  cmd.run:
    - name: mysql_install_db --user=mysql --basedir=/usr/ --ldata=/data/mysql/
    - onlyif: test -z "$(ls -A /data/mysql)"

答案 1 :(得分:1)

在状态文件中使用unless验证是否存在路径:

mysql_install_db:
  cmd.run: 
    - name: mysql_install_db --user=mysql --basedir=/usr/ --ldata=/data/mysql/
    - unless: file.path_exists_glob('/data/mysql/*')

修改

正如@Christophe所述,该州的先前版本存在一些问题。基于此以及我认为最合适的状态更新了状态。