【发布时间】:2015-01-15 08:33:37
【问题描述】:
我正在努力解决在 Ansible 模板中提取库存变量的模式,请帮忙。 :)
我正在设置一个监控服务器,并且我希望能够使用 Ansible 自动配置服务器。我正在努力处理模板中的循环以允许我这样做。
到目前为止,我的半工作解决方案在调用我拥有的模板任务的剧本中:
monitoringserver.yml
vars:
servers_to_monitor:
- {cname: web1, ip_address: 192.168.33.111}
- {cname: web2, ip_address: 192.168.33.112}
- {cname: db1, ip_address: 192.168.33.211}
- {cname: db2, ip_address: 192.168.33.212}
模板.yml
all_hosts += [
{% for host in servers_to_monitor %}
"{{ host.cname }}{{ host.ip }}|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
{% endfor %}
]
但这并不理想,因为我无法为要监控的不同服务器定义不同的 IP 地址。其他人是如何做到这一点的?我敢肯定它一定是微不足道的,但我的大脑在语法上苦苦挣扎。
谢谢
艾伦
编辑:澄清生成的模板如下所示:
all_hosts += [
"web1|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
"web2|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
"db1|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
"db2|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
]
我希望 web1/web2/db1/db2 的值根据我使用的是生产库存文件还是开发库存文件而有所不同。
【问题讨论】:
-
你能添加你想要的实际结果吗?
-
谢谢拉蒙,添加了一个编辑来澄清:)
-
我现在设法通过创建两个 group_var dirs monitor-dev 和 monitor-pub 来解决这个问题,然后让游戏簿使用所有角色,并且生产的库存文件调用特定的组变量。不过好像不太对:)
-
你能澄清一下吗?你说“我正在设置一个监控服务器”,然后是“不同的监控服务器的不同 IP 地址”虽然这可能并不重要,但你设置了多少台服务器?另外,我在您提供的结果语法中看不到 IP。这有点令人困惑。您在哪里需要 IP 地址?
-
对不起,我是个白痴 :) 我已经更新了问题
标签: jinja2 ansible ansible-playbook