如何使用Ansible中的主机变量值更新角色的参数?
我正在使用Ansible并尝试在目标服务器中安装和配置datadog代理,但是,我遇到了一个问题,需要使用主机变量并使用这些变量更新剧本的一部分。变量具有多个由空格分隔的值。我希望确保基于变量值将这些值添加到剧本中。下面的示例将有助于理解需求 剧本:如何使用Ansible中的主机变量值更新角色的参数?,ansible,ansible-2.x,datadog,Ansible,Ansible 2.x,Datadog,我正在使用Ansible并尝试在目标服务器中安装和配置datadog代理,但是,我遇到了一个问题,需要使用主机变量并使用这些变量更新剧本的一部分。变量具有多个由空格分隔的值。我希望确保基于变量值将这些值添加到剧本中。下面的示例将有助于理解需求 剧本: - hosts: servers roles: - { role: datadog.datadog, become: yes } vars: datadog_api_key: "{{ DD_API_KEY }}&q
- hosts: servers
roles:
- { role: datadog.datadog, become: yes }
vars:
datadog_api_key: "{{ DD_API_KEY }}"
datadog_config:
tags:
- "AID:"{{ AID }}"
这里,标记值辅助使用具有相同名称的主机变量,即AID,在某些情况下,此主机变量可以具有如下值:
AID:100 101 102 103
是否有一种方法可以根据以下格式的变量值解析playbook的while executing标记部分
tags:
- AID: 100
- AID: 101
- AID: 102
- AID: 103
我相信我不能为这些需求使用模板,因为配置是在角色的vars下使用的。如果您有任何建议,我们将不胜感激。正如@TRW在评论中所说的,使用此选项可以实现以下目的:
- hosts: servers
roles:
- { role: datadog.datadog, become: yes }
vars:
datadog_api_key: "{{ DD_API_KEY }}"
datadog_config:
tags: "{{ ['AID: ']|product(AID.split())|map('join')|list }}"
主机变量
AID
是字符串还是字符串列表?在这两种情况下,您都需要拆分AID
中的值以获得一个字符串列表,然后迭代列表项并将其添加到dictdatadog_config.tags
中,并使用以下标记:“{{{['AID:']| product(AID)| map('join')| list}”-请参阅将AID值更新为字符串值。因此,您需要拆分中的字符串部分将“AID:100 101…”添加到[100101,…]列表中,然后添加前缀(如果确实需要)。我会在执行过程中添加前缀),而不是product()。。。