ansible - 如何使用 Ansible 中的主机变量值更新角色的参数?
问题描述
我正在使用 Ansible Datadog 角色并尝试在目标服务器中安装和配置 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
有没有一种方法可以根据以下格式的变量值解析 playbook 的 while execution 标签部分。
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 }}"
推荐阅读
- sequelize.js - 如何在sequelize中返回逆关系
- java - Spring Data JPA规范继承`criterialBuilder.treat`不起作用
- .net-core - 如何通过 Razor 页面的 UserId 从 .NetCore Identities 获取用户名?
- python - 如何在 Python 中获取用户输入?
- python - 在 Flask 呈现的 html 模板上显示列表(Python) - 页面呈现为空
- python - 通过合并附近的值来减少排序的数字列表的更好方法?
- c# - 如何在C#中从字符串中拆分数字
- javascript - 我尝试ajax部分刷新html,但它不起作用
- python - 在 Python 中覆盖 IDLE 中的打印语句
- vhdl - VHDL 在 if 语句中更改和保持信号