我正在尝试使用salt来移动我的php.ini文件,但我只希望它在第一次运行时运行一次。我正在尝试使用盐粒来做到这一点,但这种做法并不一致。有什么想法吗?
#phpinifile.sls
{%- set php_ini_initialized = salt['grains.get']('PHP_INI_INITIALIZED') | default( False, true) %}
{% if php_ini_initialized == False %}
etc-php-70-cli-phpini:
file.managed:
- name: /etc/php/7.0/cli/php.ini
- source: salt://billing/sources/etc/php/7.0/cli/php.ini
- user: root
- group: root
- mode: 644
- context:
set_pear_path: True
- template: jinja
PHP_INI_INITIALIZED:
grains.present:
- value: True
{% endif %}
答案 0 :(得分:3)
使用grain.present的预期行为是什么?
确保谷物存在。换一种说法。当它不存在时,Ik会成功。
有什么想法吗?
你想确保php.ini文件只放在你的minion上一次。在第一个州.apply'
期间 file.managed
将确保您的文件存在,具有正确的权限和正确的内容。
当您执行另一个state.apply时,Salt将看到该文件已经具有正确的内容并继续运行。在这种情况下,您可以根据需要多次运行它而不会出现问题。
如果您的php.ini文件在被Salt放置后手动更改我明白您要确保只运行一次。在这种情况下,您可以使用unless
这样的必要条件:
phpini:
file.managed:
- name: /etc/php/7.0/cli/php.ini
- source: salt://billing/sources/etc/php/7.0/cli/php.ini
- unless: ls /etc/php/7.0/cli/php.ini
unless
必备条件指定只有在任何指定的命令返回False时才运行状态。在这种情况下,如果文件不存在,ls
将返回false。
我希望这会有所帮助。