我正在尝试创建一个Ansible playbook,可以从我们的开发团队计算机和CI/CD服务器上运行。
playbook中的任务之一是从私有git存储库获取我们项目的源代码。因为playbook必须从CI/CD服务器上运行,所以我们不能使用SSH转发。
我想到的方法是将必要的SSH私钥复制到远程主机,并使用该密钥从私有git存储库克隆代码。
然而,在尝试此操作时,克隆任务会挂起。手动执行命令时,需要为SSH私钥输入密码短语。 SSH密钥不使用密码短语(为空)。
请问是否有人可以分享他们解决这个(可能非常常见的)问题的方案?
如果有人需要,这是我的当前playbook:
- name: Create SSH directory
file: path=/root/.ssh state=directory
- name: Copy SHH key for Git access
copy:
content: "{{ git_ssh_key }}"
dest: /root/.ssh/id_rsa
owner: root
group: root
mode: 0600
# Also tried this, but it also hangs
#- name: Start SSH agent and add SSH key
# shell: eval `ssh-agent -s` && ssh-add
- name: Get new source from GIT
git:
key_file: /root/.ssh/id_rsa
repo: "git@gitlab.com:user/repo.git"
dest: "{{ staging_dir }}"
depth: 1
accept_hostkey: yes
clone: yes
我正在使用 ansible 2.3.1.0,Python 版本 = 2.7.12
ssh-keygen -yf
时需要输入密码吗?/root/.ssh/id_rsa
文件的第二行是否包含单词ENCRYPTED
? - damienfrancoisssh-keygen -yf
需要密码。不,没有ENCRYPTED。 - Laurynas Mališauskasssh-keygen -p
命令删除(空)密码短语或考虑生成新密钥吗? - damienfrancois