相当于 Puppet 的 "unless" 属性的 Ansible

Ansible equivalent of Puppet's "unless" attribute

在 Puppet 中,当使用 exec resource, you can specify an "unless" 属性时。Puppet exec 不会 运行 除非 "unless" 命令以状态 0 退出。

人偶示例:

exec { 'Make sure frob is installed':
  command => 'apt-get install -y frob',
  unless  => 'frob --version',
}

Ansible 的 command module 有一个查找文件的 "creates" 选项,但我没有看到 "unless" 选项。

如何在 Ansible 中指定 Puppet 风格的 "unless" 属性?

A​​nsible 有 conditionals 可以应用于任务。但是,when 不会直接映射到 Puppet 的 unless,因为它对 Ansible 变量而不是 shell 命令进行操作。

但是,您仍然可以做您想做的事,只是没那么直接。这是文档中的示例:

tasks:
  - command: /bin/false
    register: result
    ignore_errors: True
  - command: /bin/something_else
    when: result|succeeded