Git Ansible galaxy provisionner未在Vagrant中使用私钥

Git Ansible galaxy provisionner未在Vagrant中使用私钥,git,ansible,vagrant,ssh-keys,ansible-galaxy,Git,Ansible,Vagrant,Ssh Keys,Ansible Galaxy,我有以下文件 Vagrant.configure(2) do |config| config.ssh.insert_key = true config.vm.define "dev" do |app| app.vm.provider "docker" do |d| d.image = "allansimon/allan-docker-dev-python" d.has_ssh = true end app.ssh.username =

我有以下文件

Vagrant.configure(2) do |config|

  config.ssh.insert_key = true
  config.vm.define "dev" do |app|
    app.vm.provider "docker" do |d|
      d.image = "allansimon/allan-docker-dev-python"
      d.has_ssh = true
    end

    app.ssh.username = "vagrant"

    app.vm.provision "file", source: "~/.ssh/id_rsa", destination: ".ssh/id_rsa"


    app.vm.provision "permits-root-to-clone", type: "shell" do |s|
      s.inline = "cp /home/vagrant/.ssh/id_rsa /root/.ssh/id_rsa"
    end
    # if i put here a new shell provisionner , to the exact same repo than in my galaxy roles , it works

    app.vm.provision "ansible_local" do |ansible|
      ansible.galaxy_role_file = "build_scripts/ansible/requirements.yml"
      ansible.playbook = "build_scripts/ansible/bootstrap.yml"
    end
  end
end
requirements.yml
引用了一些git克隆的私有ansible角色

像这样

- src: git@gitlab.mydomain.com:ansible-roles/myrole.git
  scm: git
  version: 'master'
  name: myrole
我正在把我的桌面私钥注射到流浪汉体内

  • 它在销售供应器中工作
  • 如果在机器内部执行I
    vagrant ssh
    后,它会工作
但它不适用于ansible_本地供应器 带着错误

==> dev: Running provisioner: ansible_local...
    dev: Running ansible-galaxy...
 [WARNING]: - supervisord was NOT installed successfully: - command git clone
git@gitlab.mydomain.com:ansible-roles/myrole.git myrole failed in
directory /tmp/tmpQNgCTo (rc=128)
ERROR! - you can use --ignore-errors to skip failed roles and finish processing the list.
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.

有没有办法强制vagrant中的ansible使用特定的私钥?

我假设这是因为ssh客户端无法找到您的私钥,或者无法在vagrant框中使用它(权限问题?)来对git存储库进行身份验证。您可能应该添加一个默认配置文件(
~/.ssh/config

这似乎得到了确认,因为当您使用ssh连接到vagrant box时,本地ssh客户端能够使用
ssh代理获取密钥,该代理将与桌面计算机的连接一起转发

如果要手动调试

  • 宋承宪在流浪汉的盒子里
  • 杀死ssh代理(
    ssh代理-k
  • 手动检索git存储库(
    git克隆git@gitlab.mydomain.com:ansible roles/myrole.git
    )或直接尝试ssh(
    sshgit@gitlab.mydomain.com
    )这可能会有所帮助
  • 找出错误