我正在尝试使用ansible 1.9.4为我的家庭办公室设置一个非常hacky的vm部署环境。
我很远,但最后一步是行不通的。我有一个写的10loc插件,它为staging vlan生成临时dns名称,我希望将该值作为主机传递给下一个playbook角色。
TASK: [localhost-eval | debug msg="{{ hostvars['127.0.0.1'].dns_record.stdout_lines }}"] *** ok: [127.0.0.1] => { "msg": "['vm103.local', 'vm-tmp103.local']" }
可通过hostvars在全球剧本范围内访问:
{{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }}
并且应该传递给:
- name: configure vm template hosts: "{{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }}" gather_facts: no roles: - template-vm-configure
导致:
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
但它仍然不匹配。
答案 0 :(得分:0)
我认为这不是我想要的行为。 #9733引导我找到解决方案。
添加此任务可让我将分段作为一个小组使用。
tasks:
- set_fact: hostname_next="{{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }}"
- add_host: group=staging name='{{ hostname_next }}'