在另一本剧本中使用一个yml文件中的变量

时间:2018-08-21 03:47:53

标签: variables import ansible

我是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仅在该任务中可用。如何在其他任务中使用它?它将输出为每个任务未定义的变量。任何输入表示赞赏。

2 个答案:

答案 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}}。更精简/更短。