使用ansible自动使用SSH本地密钥进行git部署

我正在使用vagrant和ansible。我想自动化ansible的部署角色(You can check my repo here)。
为此,我试图部署我的本地ssh密钥到我的VPS和我的vagrant客机(我正在尝试SSH代理转发)。

目标

使用ansile使用git自动部署过程。我已经这样做:

---

- name: read-write git checkout from github
  git: repo={{ repository }} dest=/home/site

哪里:

---
# Variables here are applicable to all host groups

repository: git@bitbucket.org:dgnest/dgnest.git

问题

当我做:“vagrant provision”,控制台停在这里:

TASK: [deployment | read-write git checkout from github] ********************** 

这是因为我还没有设置ssh密钥。

我试过了

我想使用ansng的git模块的key_file选项。但它也失败了。

---                                                                             

- name: read-write git checkout from github                                     
  git: repo={{ repository }} dest=/home/site key_file=/home/oscar/.ssh/id_rsa.pub

另一个选项是将我的〜/ ssh / id_rsa.pub复制到每个VPS和vagrant,但在这种情况下我的问题是处理所有不同的用户。 Vagrant使用“vagrant”用户和我的VPS使用另一个,所以我不得不把我的ssh本地密钥每个这些用户?

希望你能帮助我。谢谢。

更新:

我刚刚自动化的@leucos答案(谢谢)。复制私钥和公钥rsa密钥。我与this link分享实施。

如果你选择key_file方式,我的猜测是密钥必须在VPS / vagrant机器上。所以你可能想先复制它。注意,这里需要一个私钥,而不是公钥。

对于第二个选项,您可以根据实例类型将您的密钥推送给特定用户。假设VPS中的用户是vpsuser,并且您主要部署在这些VPS上,您可以执行以下操作:

group_vars / all:

deploy_user=vpsuser

group_vars / vagrant

deploy_user=vagrant

然后,你可以有一个剧本:

- name: send key to remote deploy user
  copy: src=files/private_key dest=~/{{deploy_user}}/.ssh/priv_key

- name: read-write git checkout from github                                     
  git: repo={{ repository }} dest=/home/site key_file=~/{{deploy_user}}/.ssh/priv_key

但是,我不知道如何可以询问远程私钥的密码(我不认为允许身份验证代理转发默认情况下(检查-vvvv输出),你可能不得不解开你的〜/ .ansible.cfg )。

我建议您使用特定的键用于部署目的(在您的git存储库只读Perms)。这样,您的私钥不会离开您的机器。使此特殊密钥无密码。我认为安全权衡是可以接受的
– 它只会保护你的代码,
– 您的代码被检出在机器上的私钥是所以游戏已经结束。

另一个选择是使用ansible从您的本地检出分发您的应用程序:制作tarball,复制文件,untar,并且设置。这样,您不需要在您的VPS上留下安全凭证。

祝你好运。

http://stackoverflow.com/questions/21925808/automate-usage-of-ssh-local-key-for-git-deployment-with-ansible

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:使用ansible自动使用SSH本地密钥进行git部署