ansible - 在 delegate_to 语句中循环包含 Ansible 主机组的变量
问题描述
我的 Ansible 计划中有一个变量,我是这样设置的 -
pre_tasks:
- name: Hosts
debug:
msg: "dev_web"
register: web_server_group
在我的主机文件中,我有一个这样的条目 -
[dev_web]
1.1.1.6
在我的 Ansible 计划中,我有一个delegate_to
命令试图通过使用web_server_group
为组名定义的变量在该 dev_web 组内的主机上运行。
- name: Folder creation
file:
path: /tmp/dummy
owner: apache
group: apache
mode: 0770
state: directory
delegate_to: "{{ web_server_group }}"
这给了我这个错误 -
UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname web_server_group: Name or service not known", "unreachable": true}
有没有办法让 delegate_to 命令填充应该在我设置为预任务的 web_server_group 变量中的主机?
我尝试用delegate_to
这个替换命令 -
delegate_to: '{{ item }}'
with_items: "{{ groups['web_server_group'] }}"
但我得到这个错误 -
FAILED! => {"msg": "'dict object' has no attribute 'web_server_group'"}
有没有另一种方法可以完成这个或类似的事情?
谢谢。
解决方案
我不完全清楚你想做什么。具体来说,我不知道你想用这个来完成什么:
- name: Hosts
debug:
msg: "dev_web"
register: web_server_group
这将创建一个web_server_group
具有以下内容的变量:
{
"changed": false,
"failed": false,
"msg": "dev_web"
}
您已经有一个名为的组,该组dev_web
似乎包含您尝试定位的主机。
如果您想在特定主机组上运行任务,只需创建一个针对该组的播放。例如:
- hosts: dev_web
tasks:
- name: Folder creation
file:
path: /tmp/dummy
owner: apache
group: apache
mode: 0770
state: directory
这将在您组/tmp/dummy
中的所有主机上创建目录。dev_web
没有任何理由在这里使用委托。
推荐阅读
- node.js - 在dynamodb中获取单个alexa响应的时间戳
- python - 尝试在 while 循环中重新定义变量时,NoneType 对象不可调用
- javascript - 如何在回调方法中保留“this”?
- python - SQLAlchemy 子查询获取 AttributeError:“查询”对象没有属性“is_clause_element”
- docker - -v 从 docker 容器中删除所有数据
- c# - 从外部类传递双重形式
- python - 图断开连接 - keras
- java - 求解三次公式 Java
- mysql - mysql用if语句替换成
- android - Android Studio 无法访问 adb 来运行构建