Linux Ansible-如何将三元函数与LINEINFLE模块一起使用?

Linux Ansible-如何将三元函数与LINEINFLE模块一起使用?,linux,ansible,jinja2,Linux,Ansible,Jinja2,我们需要根据主机名添加一行,如果它不在该文件中 这意味着: 如果主机名是abc,则第abc行转到/etc/app.conf 否则,第XYZ行转到/etc/app.conf文件。 对于这一点,有什么更好的方法? 我们是使用jinja2模板还是在剧本中定义逻辑? 请就这两个问题提出建议。这实际上是一个偏好问题,以及您希望在输出中登录什么。我想对于这样一项简单的任务,使用以下方法将是最简单的: - name: Ensure line ABC is configured for host ABC l

我们需要根据主机名添加一行,如果它不在该文件中

这意味着:

如果主机名是abc,则第abc行转到/etc/app.conf 否则,第XYZ行转到/etc/app.conf文件。 对于这一点,有什么更好的方法? 我们是使用jinja2模板还是在剧本中定义逻辑?
请就这两个问题提出建议。

这实际上是一个偏好问题,以及您希望在输出中登录什么。我想对于这样一项简单的任务,使用以下方法将是最简单的:

- 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') }}"

如果配置文件需要进行更多更改,或者您希望确保配置完全符合您的要求,则模板文件将更适合您。

这实际上是您的首选项以及您希望在输出中记录的内容。我想对于这样一项简单的任务,使用以下方法将是最简单的:

- 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') }}"

如果配置文件需要更多更改,或者您希望确保配置完全符合您的要求,则模板文件更适合。

StackOverflow不是这样工作的:我们不为您编写代码,但我们很乐意帮助您解决特定的技术问题。向我们展示您迄今为止所做的尝试,并明确您遇到的问题。有错误吗?文档中是否有不清楚的部分?谢谢larsks,我想将三元过滤器与Lineinfle模块一起使用,但无法实现,并且遇到了语法相关的问题。StackOverflow不是这样工作的:我们不为您编写代码,但我们很乐意帮助您解决特定的技术问题。向我们展示您迄今为止所做的尝试,并明确您遇到的问题。有错误吗?文档中是否有不清楚的部分?感谢larsks,我想将三值过滤器与Lineinfle模块一起使用,但无法实现,并出现语法相关问题。thnaks techrf,有没有办法将三值过滤器与Lineinfle一起使用?thnaks techrf,有没有办法将三值过滤器与Lineinfle一起使用?