如何在运行Ansible playbook时自动传递vault密码?

如何在运行Ansible playbook时自动传递vault密码?,ansible,ansible-vault,Ansible,Ansible Vault,我有一个带vault的Ansible playbook,我想通过web界面中的提示框请求vault密码,然后在运行Ansible playbook时传递发布的密码。我尝试使用: echo $password | ansible-playbook test.yml --ask-vault-pass 要将密码传递到playbook,但密码无效,错误消息为: “msg”:“正在尝试解密,但未找到vault机密” 出于某些原因,我不想在文件中存储密码,现在我只想尝试在运行playbook时自动将密码传

我有一个带vault的Ansible playbook,我想通过web界面中的提示框请求vault密码,然后在运行Ansible playbook时传递发布的密码。我尝试使用:

echo $password | ansible-playbook test.yml --ask-vault-pass
要将密码传递到playbook,但密码无效,错误消息为:

“msg”:“正在尝试解密,但未找到vault机密”


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

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

以下是您的用例示例:

  • 使用以下内容将路径保存到/vault\u secret.sh文件(添加执行权限):

    #!/bin/bash
    echo $password
    
  • 执行:

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

  • 或者:

  • 添加到
    ansible.cfg

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

    ansible-playbook test.yml --vault-password-file path_to/vault_secret.sh
    
    ansible-playbook test.yml
    
  • @全部 确保将vault\u password\u file=添加到ansible.cfg文件的[defaults]部分

    当我在另一节中添加vault_password_file=时,我也遇到了同样的问题,在将其移动到[默认值]后,该问题得到了解决


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

    以下是我的做法,效果很好。 我的命令行如下所示:

    [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
    
    ---
    credentials:
      base: &base
        host: "{{ansible_host}}"
        timeout: 30
        transport: cli
      svc_rhelsystemrw:
        <<: *base
        username: svc_rhelsystemrw
        password: dWERE#@kds23
    
    您可以将
    --vault密码文件
    与文件描述符一起使用:

    ansible-playbook test.yml --vault-password-file <(echo somepassword)
    

    ansible playbook test.yml--vault密码文件谢谢!我试试看!