我是ansible的新手,正在尝试使用playbook.yml文件中vars.yml文件中的变量。
vars.yml
---
- firstvar:
id: 1
name: One
- secondvar:
id: 2
name: two
playbook.yml
---
- hosts: localhost
tasks:
- name: Import vars
include_vars:
file: ./vars.yml
name: vardata
- name: Use FirstVar
iso_vlan:
vlan_id: "{{ vardata.firstvar.id }}"
name: "{{ vardata.firstvar.name }}"
state: present
- name: Use Secondvar
iso_vlan:
vlan_id: "{{ vardata.secondvar.id }}"
name: "{{ vardata.secondvar.name }}"
state: present
因此您可以在这里看到我将导入变量数据(存储在vardata中)作为对象对待,并尝试在其他任务中调用它们中的每一个。我很确定在第一个任务中这些导入的var仅在该任务中可用。如何在其他任务中使用它?它将输出为每个任务未定义的变量。任何输入表示赞赏。
答案 0 :(得分:1)
您的vars.yml
文件格式不正确。
尝试一下:
---
firstvar:
id: 1
name: One
secondvar:
id: 2
name: two
我用它来测试它:
---
- hosts: localhost
tasks:
- name: Import vars
include_vars:
file: ./vars.yml
name: vardata
- name: debug
debug:
msg: "{{ vardata.firstvar.name }}"
- name: more debug
debug:
msg: "{{ vardata.secondvar.id }}"
答案 1 :(得分:0)
除了在声明变量时所犯的错误(语法非常重要)之外,您还可以定义include_vars:./vars.yml,以便可以仅调用{{firstvar.name}},{{firstvar。 id}}。更精简/更短。