如果基于主机名不在该文件中,我们需要添加行。
这意味着:
abc
,则行"ABC"
会转到/etc/app.conf
"XYZ"
转到/etc/app.conf
档。对此有什么更好的方法?
我们是否使用jinja2模板或在playbook中定义逻辑?
请在两者上建议。
答案 0 :(得分:4)
这真的是一个偏好问题以及您想要在输出中登录的内容。我想使用以下这么简单的任务是最简单的:
- name: Ensure line ABC is configured for host ABC
lineinfile:
dest: /etc/abc.conf
line: "ABC"
when: inventory_hostname == "abc"
- name: Ensure line XYZ is configured for hosts other than ABC
lineinfile:
dest: /etc/abc.conf
line: "XYZ"
when: inventory_hostname != "abc"
或者在一项任务中使用三元过滤器:
- lineinfile:
dest: /etc/abc.conf
line: "{{ ( inventory_hostname == 'abc' ) | ternary ('ABC','XYZ') }}"
如果配置文件需要更多更改,或者您希望确保配置完全符合您的要求,那么模板文件将更适合。