首页 文章

未检测到group_vars中的Ansible保管库密码[重复]

提问于
浏览
0

这个问题在这里已有答案:

我正在尝试使用ansible-vault来保护单个Windows登录密码 . 我不想将hte密码作为纯文本放在我的windows.yml文件中(见下文),所以我试图使用 ansible-vault 来保护/加密这个密码 .

我有这个目录结构:

myansiblehome
- windows_manage
  - group_vars
    - windows.yml
    - vault
  - hosts
  - win_playbook.yml

我的问题是关于文件 vault . 我试图在这里将Windows登录密码作为加密变量放置,如this教程 . 变量名是 ansible_password ,我的想法是我应该在 vault 文件中有一个哈希,而不是文本中的实际密码 .

我的 windows.yml 文件看起来像这样(遵循指导here):

ansible_user: administrator
ansible_password: "{{ vault_ansible_password }}"
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore

现在,要创建 vault 文件,以下是我的步骤:

cd windows_manage
ansible-vault create group_vars/vault

然后,这里是我放入 vault 文件的所有内容:

---
vault_ansible_password: mypassword

当我用 ansible-playbook -i ./hosts win_playbook.yml --ask-vault-pass 运行此文件时,我收到此错误(问题A):

The field 'password' has an invalid value, which includes an
undefined variable. The error was: 'vault_ansible_password' is 
undefined\nexception type: <...>\nexception: 'vault_ansible_password' is 
undefined.

所以,我尝试生成哈希而不是使用文本 . 我这样做了:

mkpasswd --method=SHA-512
# copy the resulting hash to the clipboard
ansible-vault create group_vars/vault

我用这个哈希替换了文本mypassword . 我将哈希粘贴到 vi 编辑器中并保存了 vault 文件 . 再次,我用 ansible-playbook -i ./hosts win_playbook.yml --ask-vault-pass 运行了剧本 . 这次我得到了一个不同的错误(问题B):

fatal: [...]: UNREACHABLE! => ..."ssl: the specified
credentials were rejected by the server", "unreachable": true}

为了克服这个问题,我必须做两件事:

  • 要解决问题A:在 win_playbook.yml 中,我需要添加 vars_files: group_vars\vault ,有点类似于this StackOverflow帖子 .

  • 解决问题B:我必须用文本中的实际密码(mypassword)替换 vault 中的哈希值 .

Questions:

1 回答

  • 1

    group_vars 依赖文件/目录名 - 它应该对应于特定的组名 .

    在您的情况下, windows.yml 将应用于名为 windows 的组,但 vault 将应用于名为 vault 的组 .

    要解决您的问题,请创建名为 windows 的目录并将文件放在那里( windows 目录下的每个文件将按字母顺序应用于 windows 组中的主机):

    myansiblehome
    \ windows_manage
      \ group_vars
        \ windows
          \ windows.yml
          - vault
    

相关问题