环境变量未使用ansible角色中的Vault文件进行设置

时间:2017-11-06 13:23:24

标签: ansible ansible-vault

我的剧本(test.yml)如下所示:

- hosts: localhost
  connection: local
  gather_facts: false

  roles:
    - env

  environment:
      AWS_ACCESS_KEY_ID: "{{ access }}"

  tasks:

    - debug:
        msg: "Hello"

我得到以下错误:

  

TASK [env:加载VPC变量文件]   ************************************************** ************************************************** ****致命:[localhost]:失败! => {“失败”:是的,“msg”:“该字段   'environment'具有无效值,似乎包含a   未定义的变量。错误是:'access'是   undefined \ n \ n错误似乎已经出现   '/var/yogesh/test/roles/env/tasks/main.yml':第1行,第3列,但   可能在文件的其他位置,具体取决于确切的语法   问题。\ n \ n违规行似乎是:\ n \ n \ n-名称:加载VPC   变量文件\ n ^ here \ n“}

     

PLAY RECAP   ************************************************** ************************************************** ****************************** localhost:ok = 0 changed = 0 unreachable = 0
  失败= 1

我的角色(roles/env/tasks/main.yml)如下所示:

- name: Load VPC variables file
  include_vars: "vault.yml"

vault.yml看起来像是:

access: 1234

test.ymlvault.yml位于同一目录中。

现在,如果我改变下面的剧本test.yml,那么它会起作用。

- hosts: localhost
  connection: local
  gather_facts: false
  vars_files:
     - vault.yml

  environment:
      AWS_ACCESS_KEY_ID: "{{ access }}"

  tasks:

    - debug:
        msg: "Hello"

我不确定为什么会这样。有人可以说清楚这个吗?我们是否必须仅在vars_files中声明保管库文件?有没有更好/最佳实践的选择?

Ansible版本:2.3.0.0

1 个答案:

答案 0 :(得分:1)

代码没问题,错误很容易在2.3.0.0中重现。

解决方案:停止使用过时的Ansible版本。如果您真的必须使用2.3.x,请使用Ansible 2.3.2