【问题标题】:Ansible Vault and encrypted variables using include_varsAnsible Vault 和使用 include_vars 的加密变量
【发布时间】:2019-01-02 12:21:58
【问题描述】:

我需要一个使用 ansible vault 存储和加密密码的文件,我在 group_vars 中创建了一个名为“passes”的加密文件,解密后包含以下内容:

---
testvar: password

我已经创建了剧本文件:

---
- hosts: [machines]

  vars:
    include_vars: 
      file: group_vars/passes


  roles: 

  - role: someroletodeployafilewiththispass

角色只是部署了一个带有来自模板的 pass 的文件:

using vaulted var {{ testvar }}

每次我使用 Tower 启动它时都会收到错误消息

"msg": "AnsibleUndefinedVariable: 'testvar' 未定义"

任何想法我做错了什么?没有迹象表明我的加密文件正在被 ansible 解密。还有我刚刚粘贴的加密文件:

$ANSIBLE_VAULT;1.1;AES256
303965366239313330646366313238...

也许加密的文件应该看起来不同,以便 Ansible 将其解密?

【问题讨论】:

    标签: ansible ansible-vault


    【解决方案1】:

    说明

    在您的代码中,您创建了一个名为 include_vars 的变量、一个带有键 file 和字符串值 group_vars/passes 的字典。


    解决方案

    在 play 中定义 vars_files 的正确语法是 vars_files 声明:

    ---
    - hosts: [machines]
      vars_files:
        - group_vars/passes
      roles: 
        - someroletodeployafilewiththispass
    

    你可以使用include_vars,但它是一个动作模块,应该在tasks下声明,或者在你的情况下(因为你希望它在角色之前执行)pre_tasks

    ---
    - hosts: [machines]
      pre_tasks:
        - include_vars: 
            file: group_vars/passes
      roles: 
        - someroletodeployafilewiththispass
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      相关资源
      最近更新 更多