首页 > 解决方案 > 在ansible中从yaml文件导入变量

问题描述

我正在尝试从 yaml 文件导入变量并在角色中使用它们,但是我试图以我在角色中导入的任何任务文件也可以毫无问题地使用相同变量的方式导入变量。因此,简单来说,我正在尝试为多个角色或任务文件可以使用的变量创建一种存储库,并且可以保留该值。我从文档中找到的代码是:

  include_vars:
    dir: /projects/Variable_files
    files_matching: 
    - default.yml 
    - debian.yml
    name: default_vars

但我收到此错误:

错误!'include_vars' 不是 Play 的有效属性。该错误似乎在“/projects/wordpress.yml”中:第 2 行,第 3 列,但可能在文件中的其他位置,具体取决于确切的语法问题。

标签: ansibleroles

解决方案


破折号-不见了。正确的语法是

- include_vars:
    dir: /projects/Variable_files
    files_matching: '^(.*).yml$'
    name: default_vars

除此之外,参数files_matching是一个带有正则表达式的字符串。例如^(.*).yml$匹配所有扩展名为yml. 请参阅include_vars

可以使用first_found从列表中选择文件。例如,请参阅使用 Ansible 列出已安装包的通用方式


尽管参数files_matching应该是一个字符串,但列表也可以工作

- include_vars:
    dir: /projects/Variable_files
    files_matching: 
    - default.yml 
    - debian.yml
    name: default_vars

推荐阅读