如何从ansible vault获取密码以用作变量?

How to get password from ansible vault to be used as variable?

我有以下 ansible 角色:

- name: Get latest code from repository
  git:
    repo: 'https://{{ username }}:{{ password }}@{{ repository }}'
    dest: "{{ destination }}"
    force: yes

虽然 usernamerepository 可以是变量,但我对如何从 ansible vault 中检索 password 感到困惑。感谢任何建议和见解。

首先,在 vars/ 文件夹中创建一个 YAML 文件(它可以在任何文件夹中,host_varsgroup_vars 也有效,具体取决于您使用的变量类型保持)包含你的变量。我们称它为 vars/git-data.yml。然后,使用 Vault 加密它:

ansible-vault encrypt vars/git-data.yml

需要密码。记住了。

然后,您有两个选项可以在 运行 您的剧本中包含您的变量:

  • 选项 A:将它们包括在您的剧本中:
--- 
- hosts: localhost
  connection: local
  vars_files:
    -  vars/git-data.yml
  tasks:
    - name: Print variable
      ansible.builtin.debug:
       msg: "{{ username }}"
  • 选项 B:在您致电时介绍他们 ansible-playbook
ansible-playbook --ask-vault-pass -e @vars/git-data.yml cloning-repository.yml

将询问 Vault 的密码。您还可以使用 --vault-password-file ${file}ANSIBLE_VAULT_PASSWORD_FILE 环境变量指示包含密码文件的密码。

此致。