如何运行ansible' lineinfile'有条件的

时间:2015-11-26 15:10:03

标签: ansible ansible-playbook

我正在使用 lineinfile 模块,但它不支持 when 子句。
什么是让它只在Ubuntu(== Debian系列)上运行而不在CentOS上运行的简单方法?
我想我可以使用验证条款,但还有另外一种方法吗?如果没有,我会很感激一个有效的例子。

1 个答案:

答案 0 :(得分:2)

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'