如果目录为空,则仅在 Salt 中执行命令
Only execute a command in Salt if a directory is empty
我正在尝试将以下命令集成到盐状态中:
mysql_install_db --user=mysql --basedir=/usr/ --ldata=/data/mysql/
但仅当 /data/mysql 为空或 mysql 不包含数据库时。
谁能推荐一个好的方法吗?
提前致谢
在状态文件中使用 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 所述,该状态的先前版本存在一些问题。基于此以及我认为最合适的内容更新了状态。
在任何状态下,您都可以使用unless
或onlyif
条件。这些条件是在评估状态时在 minion 上启动的命令。
根据您的需要,您可以使用:
mysql_install_db:
cmd.run:
- name: mysql_install_db --user=mysql --basedir=/usr/ --ldata=/data/mysql/
- onlyif: test -z "$(ls -A /data/mysql)"
我正在尝试将以下命令集成到盐状态中:
mysql_install_db --user=mysql --basedir=/usr/ --ldata=/data/mysql/
但仅当 /data/mysql 为空或 mysql 不包含数据库时。
谁能推荐一个好的方法吗?
提前致谢
在状态文件中使用 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 所述,该状态的先前版本存在一些问题。基于此以及我认为最合适的内容更新了状态。
在任何状态下,您都可以使用unless
或onlyif
条件。这些条件是在评估状态时在 minion 上启动的命令。
根据您的需要,您可以使用:
mysql_install_db:
cmd.run:
- name: mysql_install_db --user=mysql --basedir=/usr/ --ldata=/data/mysql/
- onlyif: test -z "$(ls -A /data/mysql)"