Ansible Galaxy Provisioner 未在 Vagrant 中使用私钥
Posted
技术标签:
【中文标题】Ansible Galaxy Provisioner 未在 Vagrant 中使用私钥【英文标题】:Ansible galaxy provisionner is not using private key in Vagrant 【发布时间】:2016-10-25 16:14:52 【问题描述】:我有以下 vagrantfile
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
引用了一些私有的 ansible 角色,它们是 git 克隆的
喜欢这个
- src: git@gitlab.mydomain.com:ansible-roles/myrole.git
scm: git
version: 'master'
name: myrole
我将我的桌面私钥注入到 vagrant 中
它在销售供应商中工作 如果在我在机器内vagrant ssh
之后它可以工作
但它不适用于 ansible_local 供应商 有错误
==> 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 使用特定的私钥?
【问题讨论】:
【参考方案1】:我认为这是因为 ssh 客户端要么无法找到您的私钥,要么无法在 vagrant 框中使用它(权限问题?)以用于对 git 存储库进行身份验证。您或许应该添加一个默认配置文件 (~/.ssh/config
)。
这似乎得到了确认,因为当您使用 ssh 连接到 vagrant box 时,本地 ssh 客户端能够使用与您的桌面计算机的连接一起转发的 ssh-agent
获取密钥。
如果要手动调试
在 vagrant box 中使用 ssh 杀死 ssh 代理 (ssh-agent -k
)
手动检索 git 存储库 (git clone git@gitlab.mydomain.com:ansible-roles/myrole.git
) 或尝试直接 ssh (ssh git@gitlab.mydomain.com
) 可能会有所帮助
找出错误
【讨论】:
以上是关于Ansible Galaxy Provisioner 未在 Vagrant 中使用私钥的主要内容,如果未能解决你的问题,请参考以下文章
Ansible 角色/包 - Ansible Galaxy - 安装 MAC OSX 时出错