首页 文章

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

提问于
浏览
0

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

- hosts: localhost
  connection: local
  gather_facts: false

  roles:
    - env

  environment:
      AWS_ACCESS_KEY_ID: "{{ access }}"

  tasks:

    - debug:
        msg: "Hello"

我得到以下错误:

任务[env:加载VPC变量文件] **************************************** ************************************************** 致命:[localhost]:失败了! => {“failed”:true,“msg”:“字段'环境'有一个无效值,似乎包含一个未定义的变量 . 错误是:'access'未定义\ n \ n出现错误已经在'/var/yogesh/test/roles/env/tasks/main.yml':第1行第3列,但可能在文件的其他位置,具体取决于确切的语法问题 . \ n \ n出现有问题的行将:\ n \ n \ n-名称:加载VPC变量文件\ n ^此处\ n“}播放回放********** ************************************************** ************************************************** ****** localhost:ok = 0 changed = 0 unreachable = 0 failed = 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 回答

  • 1

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

    Solution :停止使用过时的Ansible版本 . 如果您真的必须使用2.3.x,请使用Ansible 2.3.2 .

相关问题