Mysql 如果目录为空,则仅在Salt中执行命令
我正在尝试将以下命令集成到salt状态:Mysql 如果目录为空,则仅在Salt中执行命令,mysql,devops,salt-stack,Mysql,Devops,Salt Stack,我正在尝试将以下命令集成到salt状态: mysql_install_db --user=mysql --basedir=/usr/ --ldata=/data/mysql/ 但仅当/data/mysql为空或mysql不包含数据库时 有谁能建议一个好的方法吗 提前感谢除非在您的状态文件中验证路径的存在,否则请使用: mysql_install_db: cmd.run: - name: mysql_install_db --user=mysql --basedir=/usr/ -
mysql_install_db --user=mysql --basedir=/usr/ --ldata=/data/mysql/
但仅当/data/mysql为空或mysql不包含数据库时
有谁能建议一个好的方法吗
提前感谢除非在您的状态文件中验证路径的存在,否则请使用:
mysql_install_db:
cmd.run:
- name: mysql_install_db --user=mysql --basedir=/usr/ --ldata=/data/mysql/
- unless: file.path_exists_glob('/data/mysql/*')
编辑
正如@Christophe所说,以前版本的国家存在一些问题。基于此更新状态,并基于我认为最适合的更新状态。在任何状态下,您都可以使用除非或仅限条件。这些条件是在评估状态时对仆从发出的命令
根据您的需要,您可以使用:
mysql_install_db:
cmd.run:
- name: mysql_install_db --user=mysql --basedir=/usr/ --ldata=/data/mysql/
- onlyif: test -z "$(ls -A /data/mysql)"
我敢说这是显而易见的!看看这个文件夹,当然可以从程序上看,不,请你做你必须做的一切。如果文件夹是空的,这会起作用吗?基本上,我只想在没有安装db的情况下运行这个命令。啊,我认为这肯定比使用only更好。如果不满足条件,这个状态将无效。如果目录中的文件与OP想要的正好相反,则满足该条件。如果目录中包含以..开头的隐藏文件,那么@ChristopheDrevet Droguet的观点是正确的。事实上,它将是无效的。必须有else条件才能使状态有效,并且语句中必须有not。关于隐藏的文件,即使有隐藏的文件,返回也会是错误的,我相信这一点更多的是关于用例。