尝试在ansible playbook中使用变量文件中的变量

Posted

技术标签:

【中文标题】尝试在ansible playbook中使用变量文件中的变量【英文标题】:Trying to use variables from variable file in ansible playbook 【发布时间】:2022-01-23 03:36:29 【问题描述】:

您好,我很难在我的剧本中使用变量文件中的变量。我正在使用相同的变量文件快照这是我的代码,我只是想遍历列表中的一项。

snapshotvar.yml

kvm1
  - vm1
  - vm2
kvm2
  - vm4
  - vm3
  - vm5

kvmsnapshot.yml

---
- hosts: kvm2
  vars_files:
    - snapshot.yml
  tasks:
  - name: Create kvm snapshot
    ovirt_snapshot:
      vm_name: " item "
      description: prepatch
    loop: " kvm2[2] "

【问题讨论】:

【参考方案1】:

您的 var 文件中有一些错误:(您忘记了 :) 并给出正确的名称 (snapshot.yml)

kvm1:
  - vm1
  - vm2
kvm2:
  - vm4
  - vm3
  - vm5

如果您只想使用具有第二个索引的项目,则无需循环:

---
- hosts: kvm2
  vars_files:
    - snapshot.yml
  tasks:
  - name: Create kvm snapshot
    ovirt_snapshot:
      vm_name: " kvm2[2] "
      description: prepatch

如果你想遍历 kvm2 的所有值:

---
- hosts: kvm2
  vars_files:
    - snapshot.yml
  tasks:
  - name: Create kvm snapshot
    ovirt_snapshot:
      vm_name: " item "
      description: prepatch
    loop: " kvm2 "

【讨论】:

【参考方案2】:

有几个语法错误。

    修复文件 snapshotvar.yml 的 YAML
shell> cat snapshotvar.yml 
kvm1:
  - vm1
  - vm2
kvm2:
  - vm4
  - vm3
  - vm5
    修正文件snapshotvar.yml的名称和你要迭代的变量kvm2的名称
- hosts: localhost
  vars_files:
    - snapshotvar.yml
  tasks:
    - debug:
        var: item
      loop: " kvm2 "

给予

  item: vm4
  item: vm3
  item: vm5

根据您的需要调整任务。

【讨论】:

以上是关于尝试在ansible playbook中使用变量文件中的变量的主要内容,如果未能解决你的问题,请参考以下文章

ansible 配置 vault 加密

将变量传递给主机的 Ansible playbook:使用双引号

Ansible自动化运维之playbook详解(含yaml介绍)及ansible的加密控制

Ansible之Playbook中使用变量

Ansible中playbook的变量

ansible-playbook 主机变量2