在ansible playbook中使用include_vars模块包含json文件

4

包含变量模块指出可以使用JSON文件来加载变量。然而,当我尝试在我的playbook中使用该模块时,我遇到了YAML语法错误。

---
- hosts: my_hosts
- include_vars: out.json
- tasks:
    command: hostname

语法错误如下:

错误!'include_vars' 不是 Play 的有效属性

1个回答

6
如果您查看错误信息,您会发现您正在误读它:
语法错误是ERROR! 'include_vars'不是Play的有效属性。
在这种情况下,您的Playbook目前有3个列表项目(在YAML中由开头的“-”表示),它们都代表Plays。
因此,Ansible将您的Playbook视为包含3个单行Play,一个只有主机行,一个有您的include_vars行和一个任务。
相反,您应该在这里只有一个Play,并且还应注意模块(例如include_vars)用于任务。
因此,您的Playbook应该像这样:
---
- hosts: my_hosts
  tasks:
  - name: include vars
    include_vars: out.json

  - name: hostname
    command: hostname

请注意play的tasks属性有其自己的列表,每个列表项代表另一个任务。

太棒了。我对YAML还很陌生,所以这篇文章帮了我很多。 - Zee
如果所有的主机都需要引用 var,我们不能将其包含在所有任务中吗? - realtebo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接