Hash 未检测到组中的Ansible vault密码
我正在尝试使用ansible vault保护单个Windows登录密码。我不想在我的windows.yml文件中以纯文本形式放置密码,请参见下文,因此我尝试使用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
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