如何在有条件的情况下运行 ansible 'lineinfile'



我正在使用lineinfile模块,但它不支持when子句
有什么简单的方法可以让它只在Ubuntu(=Debian家族)上运行,而不在CentOS上运行
我想我可以使用validate子句,但有其他方法吗?如果没有,我将感谢一个有效的例子。

lineinfile任务当然支持when子句以及所有其他标准任务修饰符。这里有一个简单的测试用例:

- name: test
  hosts: localhost
  tasks:
    - local_action: lineinfile
                    dest=/tmp/test.txt
                    line="this is a test"
                    state=present
      when: foo is defined

在未定义变量foo:的情况下运行时

TASK: [lineinfile dest=/tmp/test.txt line="this is a test" state=present] *****
skipping: [localhost]

当运行并定义foo时:

TASK: [lineinfile dest=/tmp/test.txt line="this is a test" state=present] *****
changed: [localhost -> 127.0.0.1]

因此,只需在任务中添加以下内容就可以实现您的愿望:

when: ansible_distribution == 'Ubuntu'

最新更新