Ansible动态主机跳过

时间:2016-03-15 15:23:50

标签: ansible stdout ansible-inventory

我正在尝试使用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

但它仍然不匹配。

1 个答案:

答案 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 }}'