在 ansible 清单中安全地使用凭据
Using credentials securely in ansible inventory
为了连接到 windows 主机,我需要在清单文件中传递凭据。这是我的清单文件:
[windows]
100.100.100.100
[windows:vars]
ansible_user=Adminuser
ansible_password="Mypassword"
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
Ansible 文档说凭证应该用 ansible-vault 加密。我可以在我的清单文件中使用使用 ansible-vault 加密的变量文件吗?如果是这样,我如何将我的 ansible-vault 凭据传递到我的清单文件?我还将在我的剧本中使用凭证,如下所示:
- hosts: windows
gather_facts: no
vars_files:
- vars.yml
tasks:
- win_domain_membership:
dns_domain_name: my.domain.com
hostname: ansible-host
domain_admin_user: {{ admin_user }}
domain_admin_password: {{ passwd }}
domain_ou_path: "OU=Windows,OU=Servers,DC=ansible,DC=com"
state: domain
register: domain_state
然后我将使用 ansible-vault 为这个剧本加密我的变量文件。
---
admin_user:myusername@my.domain.com
passwd:mypassword
然后在命令行将我的 ansible-vault 凭据传递到我的剧本:
$ ansible-playbook myplaybook.yml --ask-vault-pass
是否可以将我的清单中使用的变量文件和我的剧本中使用的变量文件存储在同一个 ansible-vault 中?这样我就可以在命令行传递两个文件的 ansible-vault 凭据?
ansible-vault
命令加密单个文件。 Ansible 在运行时对其进行解密,并以与未加密文件相同的方式对其进行解释(因此您不能“将我的清单中使用的变量文件和我的剧本中使用的变量文件存储在同一个 ansible-vault 中”因为那是两个不同的文件)。
我只想从你的清单中删除变量,让它像这样:
[windows]
100.100.100.100
然后创建 group_vars/windows.yml
作为具有以下内容 (ansible-vault create groups_vars/windows.yml
) 的保管库文件:
ansible_user: Adminuser
ansible_password: "Mypassword"
ansible_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
当你有一个针对 windows
组的游戏时,Ansible 将自动应用 group_vars/windows.yml
中的变量。
为了连接到 windows 主机,我需要在清单文件中传递凭据。这是我的清单文件:
[windows]
100.100.100.100
[windows:vars]
ansible_user=Adminuser
ansible_password="Mypassword"
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
Ansible 文档说凭证应该用 ansible-vault 加密。我可以在我的清单文件中使用使用 ansible-vault 加密的变量文件吗?如果是这样,我如何将我的 ansible-vault 凭据传递到我的清单文件?我还将在我的剧本中使用凭证,如下所示:
- hosts: windows
gather_facts: no
vars_files:
- vars.yml
tasks:
- win_domain_membership:
dns_domain_name: my.domain.com
hostname: ansible-host
domain_admin_user: {{ admin_user }}
domain_admin_password: {{ passwd }}
domain_ou_path: "OU=Windows,OU=Servers,DC=ansible,DC=com"
state: domain
register: domain_state
然后我将使用 ansible-vault 为这个剧本加密我的变量文件。
---
admin_user:myusername@my.domain.com
passwd:mypassword
然后在命令行将我的 ansible-vault 凭据传递到我的剧本:
$ ansible-playbook myplaybook.yml --ask-vault-pass
是否可以将我的清单中使用的变量文件和我的剧本中使用的变量文件存储在同一个 ansible-vault 中?这样我就可以在命令行传递两个文件的 ansible-vault 凭据?
ansible-vault
命令加密单个文件。 Ansible 在运行时对其进行解密,并以与未加密文件相同的方式对其进行解释(因此您不能“将我的清单中使用的变量文件和我的剧本中使用的变量文件存储在同一个 ansible-vault 中”因为那是两个不同的文件)。
我只想从你的清单中删除变量,让它像这样:
[windows]
100.100.100.100
然后创建 group_vars/windows.yml
作为具有以下内容 (ansible-vault create groups_vars/windows.yml
) 的保管库文件:
ansible_user: Adminuser
ansible_password: "Mypassword"
ansible_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
当你有一个针对 windows
组的游戏时,Ansible 将自动应用 group_vars/windows.yml
中的变量。