我想从我的标准输出设置变量。 我在任务中使用
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 }}"
不起作用。
答案 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