我正在使用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'