ansible - Ansible Inventory - 在循环中使用组中的主机条目
问题描述
背景:我有一个由先前运行的进程构建的动态 ansible 库存,直到此任务完成后我才知道 IP。我有 2 个组:库存文件中定义的数据库服务器和 Web 服务器。我要完成的具体任务是创建 some_user@'dynamic_ip_of_webserver_group'。
我想我很接近,但有些事情不太对劲。在我的 dbserver 角色主要任务中,我有:
- name: Create DB User
mysql_user:
name: dbuser
host: "{{ item }}"
password: "{{ mysql_wordpress_password }}"
priv: "someDB.*:ALL"
with_items:
- "{{ ansible_hostname }}"
- 127.0.0.1
- ::1
- localhost
- "{{ hostvars[groups['webservers']] }}"
这会出错:
TASK [dbservers : Create DB User] *******************************************************************************************************************************************************************
fatal: [10.10.10.13]: FAILED! => {"msg": "ansible.vars.hostvars.HostVars object has no element [u'10.10.10.30', u'10.10.10.240']"}
它显示了正确的 IP,只有 2 个,所以这两个都是正确的。我认为它试图将库存项目作为对象而不是实际输入来访问?
库存文件:
[webservers]
10.10.10.30
10.10.10.240
解决方案
简单地:
- "{{ groups['webservers'] }}"
这是有效的,因为with_items
扁平化了列表的第一个嵌套级别。
推荐阅读
- python - Ubuntu 上 wxPython 或其他 GUI 应用程序中后端调用和执行的可视化
- html - 在 mat-select angular 中实现 NgxMatSelectSearch
- google-drive-api - google 检查哪些标准以查看哪些文件需要新的 resourceKey?
- javascript - javascript div表的python网络爬虫
- hibernate - 如何构造条件查询以将指定的字符串与列表匹配
- reactjs - 使用 ReactJS 和 ASP.NET Web API 计算页面浏览量
- c# - 从测试方法迭代 DataGridView 的内容时收到参数超出范围异常
- c# - Linq 按多个值排序
- r - 如何在 90% 置信水平的中位数上下置信限估计中位生存期?
- python - GPR 中的 normalize_y