ede*_*esz 3 hash ansible ansible-vault
我正在尝试使用 ansible-vault 来保护单个 Windows 登录密码。我不想将密码作为纯文本放在 windows.yml 文件中(见下文),因此我尝试使用它ansible-vault
来保护/加密该密码。
我有这个目录结构:
myansiblehome
- windows_manage
- group_vars
- windows.yml
- vault
- hosts
- win_playbook.yml
Run Code Online (Sandbox Code Playgroud)
我的问题是关于文件的vault
。我尝试按照本教程将 Windows 登录密码作为加密变量放置在此处。变量名称是ansible_password
,想法是我应该在文件中包含哈希值vault
,而不是文本中的实际密码。
我的windows.yml
文件如下所示(遵循此处的指导):
ansible_user: administrator
ansible_password: "{{ vault_ansible_password }}"
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
Run Code Online (Sandbox Code Playgroud)
现在,要创建vault
文件,我的步骤如下:
cd windows_manage
ansible-vault create group_vars/vault
Run Code Online (Sandbox Code Playgroud)
然后这是我放入文件中的所有内容vault
:
---
vault_ansible_password: mypassword
Run Code Online (Sandbox Code Playgroud)
当我使用 运行此文件时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.
Run Code Online (Sandbox Code Playgroud)
因此,我尝试生成哈希而不是使用文本。我这样做了:
mkpasswd --method=SHA-512
# copy the resulting hash to the clipboard
ansible-vault create group_vars/vault
Run Code Online (Sandbox Code Playgroud)
我用这个哈希替换了文本 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}
Run Code Online (Sandbox Code Playgroud)
为了克服这个问题,我必须做两件事:
win_playbook.yml
,我需要添加vars_files: group_vars\vault
,有点类似于此StackOverflow 帖子。vault
为文本中的实际密码(mypassword)。问题:
关于A:在我遇到的ansibleVault教程中,我没有看到为什么vars_file: group_vars\vars
应该出现在主剧本文件中的特殊原因(参见下面的链接1-4)。即没有任何地方提到这一点。我以为 Ansible 会自动检测目录中的变量group_vars
???需要这条线有什么原因吗?
group_vars/vars
(与我类似的未加密变量文件group_vars/vars
)和group_vars/vault
(与我类似的加密变量文件group_vars/vault
),但他们正在使用角色,而我没有使用 Ansible 角色关于B:它看起来像其他用户(请参阅此处使用哈希作为变量)。实际上,即使 Ansible 文档也建议使用它mkpasswd
来生成密码。也许我误解了一些东西。我们是否应该使用mkpasswd --method=SHA-512
散列密码,然后将散列作为变量值?是否不能使用哈希作为文件中 key:value 中的值vault
?
group_vars
依赖文件/目录名称 \xe2\x80\x93 它应该对应于特定的组名称。
在您的情况下,windows.yml
应用于名为 的组windows
,但vault
本应应用于名为 的组vault
。
要解决您的问题,请创建名为 的目录windows
并将文件放置在其中(目录下的每个文件都将按字母顺序windows
应用于组中的主机):windows
myansiblehome\n\\ windows_manage\n \\ group_vars\n \\ windows\n \\ windows.yml\n - vault\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
8075 次 |
最近记录: |