从ansible烈性黑啤酒中获取行

时间:2019-03-05 11:34:02

标签: ansible

我想从我的标准输出设置变量。 我在任务中使用

  register: output_dhcp
  when: not static_ip

- set_fact:
    vmid: "{{ output_dhcp.results }}"

并获取下一个标准输出

changed: [127.0.0.1] => (item=delete-after-tests) => {
    "changed": true, 
    "invocation": {
        "module_args": {
            "api_host": "192.168.0.203", 
            "api_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", 
            "api_user": "root@pam", 
            "nameserver": null, 
            "netif": {
                "net0": "name=eth0,ip=dhcp,ip6=dhcp,bridge=vmbr0"
            }, 
            "node": "pve3", 
            "vmid": null
        }
    }, 
    "item": "delete-after-tests", 
    "msg": "deployed VM 108 from template local:vztmpl/ubuntu-18.04-standard_18.04.1-1_amd64.tar.gz"
}

我需要获取编号id-108。我无法获得

"msg": "deployed VM 108 from template local:vztmpl/ubuntu-18.04-standard_18.04.1-1_amd64.tar.gz"

用于分析,没有其他行。

- set_fact:
    vmid: "{{ output_dhcp.results.msg }}"

不起作用。

1 个答案:

答案 0 :(得分:0)

您的输出中有onPrepared()的事实意味着您欺骗了我们,因为没有包括几乎肯定隐藏在您的(item=delete-after-tests)行上方的with_items:

当您有register: output_dhcp语句时,它会将实际输出打包在with_列表下面,您在results的提示下暗示了这一点,但是您不能要求字段{{ output_dhcp.results.msg中的1}};您需要提取列表中每个成员的属性,.msg会为您执行以下操作:

list

但是,如果您想要表达式map的{​​{1}},则需要使用- debug: msg: '{{ output_dhcp.results | map(attribute="msg") | list }}' 提取它,但大概只在可能与之匹配的列表项上,像这样:

108