配置布尔标志的幂等Ansible命令

时间:2018-11-08 10:56:56

标签: ansible

我正在执行以下设置boolean标志的Ansible任务

-
  name: Seting up NodeJS
  command: npm config set strict-ssl false

尽管该命令肯定是幂等的,但ansible-playbook并没有意识到,由于明显的原因,因此在空运行报告中会产生噪音(特别是,如果严格要求运行剧本时ssl标志已经为假)

是否可以告诉Ansible如何检查标志是否已设置?也许像这样:

-
  name: Seting up NodeJS
  command: npm config set strict-ssl false
  when: (npm config get strict-ssl) == true

谢谢!

2 个答案:

答案 0 :(得分:1)

您可能要使用该构造

- command: npm config set strict-ssl false
  args:
    creates: "{{ lock_file }}"

如果 command 没有创建 lock_file ,则可能需要在 block 中运行 command 。并自己创建一个 lock_file

作为 lock_file ,可以使用命令创建的任何文件。

答案 1 :(得分:1)

您对when的想法差不多了。阅读有关https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html#register-variables的信息,然后您可以执行以下操作:

  tasks:

  - name: npm config get strict-ssl
    command: npm config get strict-ssl
    register: npm_strict_ssl
    changed_when: false

  - name: Setting up NodeJS
    command: npm config set strict-ssl false
    when: "npm_strict_ssl['stdout'] == 'true'"

我还要补充一点,您想要禁用的特定设置(严格的SSL)闻起来是一个非常糟糕的主意。请考虑解决问题的根本原因,而不是降低安全性。