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

未使用ansible角色中的vault文件设置环境变量,ansible,ansible-vault,Ansible,Ansible Vault,我的playbook test.yml如下所示: - hosts: localhost connection: local gather_facts: false roles: - env environment: AWS_ACCESS_KEY_ID: "{{ access }}" tasks: - debug: msg: "Hello" 我得到以下错误: 任务[env:加载VPC变量文件] ***************

我的playbook 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:field “environment”具有无效值,该值似乎包含 未定义的变量。错误为:“access”为 未定义\n\n该错误似乎已被忽略 “/var/yogesh/test/roles/env/tasks/main.yml”:第1行第3列,但 根据确切的语法,可能\n出现在文件的其他位置 问题。\n\n出现问题的行是:\n\n\n-name:Load VPC 变量文件\n^此处\n}

重演 **********************************************************************************************************************************localhost:ok=0已更改=0无法访问=0 失败=1

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

- name: Load VPC variables file
  include_vars: "vault.yml"
此vault.yml看起来像:

access: 1234
test.yml和vault.yml位于同一目录中

现在,如果我像下面这样更改playbook test.yml,它会以某种方式工作

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

  environment:
      AWS_ACCESS_KEY_ID: "{{ access }}"

  tasks:

    - debug:
        msg: "Hello"
我不知道为什么会这样。有人能解释一下吗?我们是否必须仅在vars_文件中声明vault文件?是否有更好/最佳实践的替代方案


Ansible版本:2.3.0.0

代码正常,错误在2.3.0.0中很容易再现


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

无法升级,将使用vars\u文件。谢谢你的努力。