【问题标题】:Environment variables not getting set with vault file in ansible role环境变量未在 ansible 角色中使用 Vault 文件设置
【发布时间】:2018-04-18 16:18:09
【问题描述】:

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

- hosts: localhost
  connection: local
  gather_facts: false

  roles:
    - env

  environment:
      AWS_ACCESS_KEY_ID: "{{ access }}"

  tasks:

    - debug:
        msg: "Hello"

我收到以下错误:

TASK [env : 加载 VPC 变量文件] ****************************************************** ****************************************************** ****致命:[本地主机]:失败! => {“失败”:真,“味精”:“该字段 “环境”的值无效,其中似乎包含 未定义的变量。错误是:“访问”是 未定义\n\n错误似乎出现在 '/var/yogesh/test/roles/env/tasks/main.yml':第 1 行,第 3 列,但是 可能\n位于文件中的其他位置,具体取决于确切的语法 问题。\n\n违规行似乎是:\n\n\n- name: Load VPC 变量文件\n ^ 这里\n"}

播放回顾 ****************************************************** ****************************************************** ****************************** 本地主机:ok=0 已更改=0 无法访问=0
失败=1

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

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

这个vault.yml 看起来像:

access: 1234

test.ymlvault.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_files 中声明 Vault 文件?有没有更好/最佳实践的选择?

Ansible 版本:2.3.0.0

【问题讨论】:

    标签: ansible ansible-vault


    【解决方案1】:

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

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

    【讨论】:

    • 无法升级,将使用 vars_files。感谢您的努力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2020-06-01
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多