【发布时间】:2019-12-27 20:55:36
【问题描述】:
我希望将Play 2的“fdet_APP”变量的值获取到Play 3中。
以下是我的剧本,该案例用作测试用例:
- name: "Play 1"
hosts: localhost
tasks:
- add_host: name={{ item }}
groups=dest_nodes
ansible_user={{ USER }}
with_items: "{{ Dest_IP.split(',') }}"
- name: "Play 2"
hosts: dest_nodes
user: "{{ USER }}"
tasks:
- set_fact:
fdet_APP: "Yellow"
- name: "Play 3"
hosts: localhost
user: "{{ USER }}"
vars:
dbfiledet: "{{ hostvars['dest_nodes']['fdet_APP'] }}"
tasks:
- debug: msg="{{ dbfiledet.stdout }}"
我的尝试出现以下错误:
剧本运行命令:
ansible-playbook variabletest.yml -e "USER=user1 Dest_IP=10.17.44.26,10.17.54.26"
[警告]:提供的主机列表为空,只有 localhost 可用。请注意,隐式 localhost 不匹配 'all'
播放 [播放 1]
TASK [收集事实] ****************************************************** ****************************************************** ************************************ 好的:[本地主机]
任务 [add_host] ****************************************************** ****************************************************** ***************************************** 更改:[localhost] =>(项目=10.17.44.26) 更改:[本地主机] => (项目=10.17.54.26)
播放 [播放 2]
TASK [收集事实] ****************************************************** ****************************************************** ************************************ 好的:[10.17.54.26] 好的:[10.17.44.26]
任务 [set_fact] ****************************************************** ****************************************************** ***************************************** 好的:[10.17.44.26] 好的: [10.17.54.26]
播放 [播放 3]
TASK [收集事实] ****************************************************** ****************************************************** ************************************ 好的:[本地主机]
任务 [调试] ****************************************************** ****************************************************** ************************************************ 致命:[本地主机]:失败的! => {"msg": "任务包含一个选项 带有未定义的变量。错误是:\"hostvars['dest_nodes']\" 未定义\n\n错误似乎在“variabletest.yml”中:行 36,第 6 列,但可能\n位于文件中的其他位置,具体取决于确切的 语法问题。\n\n有问题的行似乎是:\n\n\n - 调试: msg=\"{{ dbfiledet.stdout }}\"\n ^ here\n我们可能错了,但是 这个看起来可能是\n缺少引号的问题。总是 当它们\n开始一个值时,引用模板表达式括号。为了 实例:\n\n with_items:\n - {{ foo }}\n\n应该写成 如:\n\n with_items:\n - \"{{ foo }}\"\n"}
播放回顾
10.17.44.26 : ok=2 更改=0 无法访问=0 失败=0 跳过=0 获救=0 忽略=0
10.17.54.26 : ok=2 更改=0 无法访问=0 失败=0 跳过=0 获救=0 忽略=0 localhost
: ok=3 改变=1 不可达=0 失败=1 跳过=0
获救=0 忽略=0
我正在使用最新版本的 ansible 和 python 2.7.5
有人能建议什么是错的吗?请问我如何获得 Play 3 中变量的值?
【问题讨论】: