2017-05-30 30 views
0

我需要使用svn + ssh编写一个任务来检出一个版本库。加载ssh_keys以运行svn + ssh

这里是我能够做手工,其完美的作品

ssh-add /home/my_user/.ssh/id_rsa 
svn co svn+ssh://svnserver/repo/src /path/to/checkout 

但是使用下面的任务似乎是失败的,因为我的密钥不被加载

- name: Checkout code 
    subversion: 
    repo: svn+ssh://svnserver/repo/src 
    dest: /path/to/checkout 
    become_user: my_user 
    become: no 

当我手动加载密钥后运行ssh-add -L,我确实看到我的密钥已加载。然而,当它运行导致任务失败且使用以下内容的subversion任务时,ansible似乎不会加载我的密钥。

Unable to connect to a repository at URL 'svn+ssh:/svnserver/repo/src 

任何想法如何运行此操作,以便我的用户密钥在任务运行时加载?

+0

你是否为你的subversion任务使用'local'连接类型?你是否执行了与你的代理执行相同的shell的可靠剧本? –

回答

0

我有强烈的感觉,你的手册ssh-add添加SSH密钥来用户的代理,所以运行svn co svn+ssh://svnserver/repo/src /path/to/checkout在将工作记录,但对于Ansible运行的任务,因为my_userbecome_user: my_user)和my_user您尚未添加私钥。

你能否看到它是否有助于切换到my_user,然后执行ssh-add命令?

但是,老实说,我不是ssh-agent的忠实粉丝。我发现它更透明,并依赖于我自己的ssh配置文件。

+0

感谢您的反馈。实际上,my_user也是运行任务的完美用户。 – crusadecoder