Hash 未检测到组中的Ansible vault密码

Hash 未检测到组中的Ansible vault密码,hash,ansible,ansible-vault,Hash,Ansible,Ansible Vault,我正在尝试使用ansible vault保护单个Windows登录密码。我不想在我的windows.yml文件中以纯文本形式放置密码,请参见下文,因此我尝试使用ansible vault保护/加密此密码 我有以下目录结构: myansiblehome - windows_manage - group_vars - windows.yml - vault - hosts - win_playbook.yml 我的问题是关于档案库的。根据教程,我正在尝试将Windows

我正在尝试使用ansible vault保护单个Windows登录密码。我不想在我的windows.yml文件中以纯文本形式放置密码,请参见下文,因此我尝试使用ansible vault保护/加密此密码

我有以下目录结构:

myansiblehome
- windows_manage
  - group_vars
    - windows.yml
    - vault
  - hosts
  - win_playbook.yml
我的问题是关于档案库的。根据教程,我正在尝试将Windows登录密码作为加密变量放置在此处。变量名是ansible_password,其思想是我应该在vault文件中有一个散列,而不是文本中的实际密码

我的windows.yml文件如下所示:

现在,要创建vault文件,请执行以下步骤:

cd windows_manage
ansible-vault create group_vars/vault
下面是我放入vault文件的所有内容:

当我使用ansible playbook-I./hosts win_playbook.yml-ask vault pass运行此文件时,我遇到以下错误问题:

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.
我用这个散列替换了文本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_文件:group_vars\vault,有点类似于StackOverflow post。 要解决问题B:我必须用文本mypassword中的实际密码替换vault中的哈希。 问题:

关于A:在我遇到的ansible vault教程中,我没有看到vars\u文件:group\u vars\vars应该出现在主剧本文件中的特定原因,请参见下面的链接1-4。在任何地方都没有提到这一点。我以为Ansible会自动检测group_vars目录中的变量???是否有需要此行的原因

这些人使用组变量/vars未加密变量文件,类似于我的组变量/vars;组变量/vault加密变量文件,类似于我的组变量/vault,但他们使用的是角色,而我不使用Ansible角色 关于B:看起来其他用户正在使用哈希作为他们的变量。实际上,要使用mkpasswd生成密码。也许我误解了什么。我们是否应该使用mkpasswd-method=SHA-512对密码进行散列,然后将散列作为变量值?是否不能将哈希用作vault文件中key:value的值

组变量依赖于文件/目录名–它应该对应于特定的组名

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

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

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

啊,谢谢!正在检查…使用密码作为纯文本mypassword有效。谢谢将密码用作哈希仍然无法解决问题B。。有什么想法吗?密码应该以明文形式存储在加密的vault中。如果需要将其应用于每个主机,请使用特殊的组名all–group_vars/all/vault和/group_vars/all/main.yml。
mkpasswd --method=SHA-512
# copy the resulting hash to the clipboard
ansible-vault create group_vars/vault
fatal: [...]: UNREACHABLE! => ..."ssl: the specified
credentials were rejected by the server", "unreachable": true}
myansiblehome
\ windows_manage
  \ group_vars
    \ windows
      \ windows.yml
      - vault