0

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

但它仍然不匹配。

4

1 回答 1

0

我认为这不是预期的行为。 #9733引导我找到解决方案。

添加此任务让我将登台作为一个组使用。

  tasks:
    - set_fact: hostname_next="{{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }}"
    - add_host: group=staging name='{{ hostname_next }}'
于 2016-03-15T16:37:30.103 回答