我正在尝试使用 ansible 1.9.4 为我的家庭办公室设置一个非常 hacky 的 vm 部署环境。
我很远,但最后一步是行不通的。我有一个书面的 10loc 插件,它为暂存 vlan 生成临时 dns 名称,我想将该值作为主机传递给下一个剧本角色。
任务:[本地主机评估 | 调试 msg="{{ hostvars['127.0.0.1'].dns_record.stdout_lines }}"] *** 好的:[127.0.0.1] => { “味精”:“['vm103.local', 'vm-tmp103.local']” }
它可以通过主机变量在全局剧本范围内访问:
{{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }}
并应传递给:
- 名称:配置虚拟机模板 主机:“{{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }}” 收集事实:没有 角色: - 模板虚拟机配置
这导致:
PLAY [configure vm template] **************************************************
skipping: no hosts matched
我的库存看起来像这样,并且似乎有效。硬编码“vm-tmp103.local”使角色运行。
[vm]
vm[001:200].local
[vm-tmp]
vm-tmp[001:200].local
提前谢谢你,希望有人能指出我正确的方向。计划 B 包括将 dns 记录传递给 bash 脚本以完成配置,因为我只想在将 vm 添加到监控之前配置网络接口。
编辑:修改播放以使用添加主机并将它们添加到临时组 - add_host: name={{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }} groups=just_vm
但它仍然不匹配。