12

我有一个带保险库的 Ansible 剧本,我想通过我的 Web 界面中的提示框询问保险库密码,然后在运行 ansible 剧本时传递发布的密码。我尝试使用:

echo $password | ansible-playbook test.yml --ask-vault-pass

将密码传递给剧本,但它不起作用,错误消息是:

"msg": "正在尝试解密但未找到保管库机密"

我不想将密码存储在某些文件中,现在我只想尝试在运行时自动将密码传递给剧本。对我有什么建议吗?ansible 版本是 2.4。

4

4 回答 4

14

您可以使用脚本而不是通过交互式界面提供密码。

这是您的用例的示例:

  1. 使用以下内容保存path_to/vault_secret.sh文件(添加执行权限):

    #!/bin/bash
    echo $password
    
  2. 执行:

    ansible-playbook test.yml --vault-password-file path_to/vault_secret.sh
    

或者:

  1. 添加到ansible.cfg

    [defaults]
    vault_password_file=path_to/vault_secret.sh
    
  2. 执行:

    ansible-playbook test.yml
    
于 2018-01-30T06:32:24.333 回答
2

您可以使用--vault-password-file文件描述符:

ansible-playbook test.yml --vault-password-file <(echo somepassword)
于 2020-02-06T12:23:06.853 回答
0

@All 确保将 vault_password_file = 添加到 ansible.cfg 文件的 [defaults] 部分。

当我在另一个部分中添加 vault_password_file = 时,我遇到了同样的问题,该部分在将其移动到 [defaults] 后得到解决

如果有帮助,试试你的运气。

于 2019-09-09T20:33:20.093 回答
0

这是我做事的方式,而且效果很好。我的命令行如下所示:

[prompt/]$ansible-playbook -i <inventory>, /mnt/m/NetworkGetters/get_vpn_status.yml --extra-vars varsfilepath=/mnt/m/NetworkVars/host_vars/test-oci-test-vpn-config.yml

我清理过的 passwords.yml(保险库文件)如下所示:

---
credentials:
  base: &base
    host: "{{ansible_host}}"
    timeout: 30
    transport: cli
  svc_rhelsystemrw:
    <<: *base
    username: svc_rhelsystemrw
    password: dWERE#@kds23

我的剧本遵循这个约定:

name: Set VPN Configuration
  hosts: all
  connection: local
  gather_facts: no
  vars_files:
    - "{{ varsfilepath }}"
    - "/etc/ansible/NetworkVars/passwords.yml"
  vars:
    # ssh_auth credentials come from ansible vault
    provider_rw:
      username:  "{{ credentials['svc_rhelsystemrw'].username }}"
      password:  "{{ credentials['svc_rhelsystemrw'].password }}"

  tasks:
  - name: Capture Pre-change Configuration
    ios_command:
      provider: "{{ provider_rw }}"    
      commands:
        - show running-config
    register: running_config_before
    tags: vpn 

  - debug:
      var: running_config_before.stdout
    tags: vpn
于 2019-10-30T18:25:18.507 回答