将保险箱密码传递给流浪者ansible_local配置者

tur*_*phi 3 vagrant ansible ansible-vault vagrant-provision

我正在使用ansible_local供应商为我的流浪盒.我的一些变量应存储在Vault文件中.

虽然ansible供应商提供ask_vault_pass了配置选项(https://www.vagrantup.com/docs/provisioning/ansible.html#ask_vault_pass),但ansible_local事实并非如此.

有没有解决方法?

小智 6

你可以使用vault_password_file选项.

1.回显密码文件

Vagrant.configure(2) do |config|
  config.vm.box = '...'

  config.vm.provision :shell, inline: "echo 'password' > /tmp/vault_pass"

  config.vm.define :controller do |machine|
    ...

    machine.vm.provision 'ansible_local' do |ansible|
      ...
      ansible.vault_password_file = "/tmp/vault_pass"
      ...
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

2.使用 .synced_folder

创建vault_pass文件,如下所示.

mkdir provision
cd provision
echo password > vault_pass
Run Code Online (Sandbox Code Playgroud)

并且Vagrantfile正在关注.

Vagrant.configure(2) do |config|
  config.vm.box = '...'

  config.vm.synced_folder "./provision", "/provision", id: "ansible", owner: "vagrant", group: "vagrant", mount_options: ["dmode=775,fmode=664"]

  config.vm.define :controller do |machine|
    ...

    machine.vm.provision 'ansible_local' do |ansible|
      ...
      ansible.vault_password_file = "/provision/vault_pass"
      ...
    end
  end
end
Run Code Online (Sandbox Code Playgroud)