微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Ansible 中的主机变量值更新角色的参数?

如何解决如何使用 Ansible 中的主机变量值更新角色的参数?

我正在使用 Ansible Datadog role 并尝试在目标服务器中安装和配置 datadog 代理,但是,我遇到了需要使用主机变量并使用这些变量更新剧本部分的问题。该变量有多个由空格分隔的值。我想确保根据变量值将这些值添加到剧本中。以下示例将有助于理解需求。

剧本:

- hosts: servers
  roles:
    - { role: datadog.datadog,become: yes }
  vars:
    datadog_api_key: "{{ DD_API_KEY }}"
    datadog_config:
      tags:
        - "AID:"{{ AID }}"

这里,标签值 AID 使用了一个同名的宿主变量,即 AID,在某些情况下,这个宿主变量可以有如下值:

AID: 100 101 102 103

有没有办法根据以下格式的变量值解析剧本的 while 执行标记部分。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。