在Jenkins Job中使用带有私有gitlab repo的ansible-galaxy凭据

时间:2018-04-09 15:59:47

标签: git jenkins credentials ansible-galaxy

我需要使用ansible-galaxy安装一组角色。

- src: 'https://gitlab.private/role-openstack-net.git'
  scm: 'git'
  version: '1.0.0'
  name: 'role-openstack-net'

- src: 'https://gitlab.private/role-openstack-subnet.git'
  scm: 'git'
  version: '1.0.0'
  name: 'role-openstack-subnet'

在实际情况中,我有大约20个角色。

所有角色都是私有的,所以当我跑:

ansible-galaxy install -f -c -r galaxy.yml

它要求我为每个角色提供用户/通行证,这有点令人烦恼

手动,我做:

git config --global credential.helper store

我输入一次凭据,然后记住所有

但我应该怎样做詹金斯的工作?

我在这里看到有一种放置令牌的方法:

https://github.com/ansible/ansible/pull/34621

但它似乎没有用。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

目前不支持在运行时将凭据参数传递到ansible星系。

可以将凭据添加到requirements.yml中,但是一般来说,将凭据添加到代码中并不理想,因为其他人有一天可以轻松地利用它们。

解决方案是在运行时更新requirements.yml

通过查看个人资料并更新设置来创建Gitlab个人访问令牌: https://private.gitlab/profile/personal_access_tokens

使用您选择的秘密管理器在运行时使用令牌设置变量PAT_TOKEN。

在您的Jenkins脚本中,使用sedrequirements.yml之前更新ansible-galaxy install

sed -i "s#https://gitlab.private/#https://oauth2:$PAT_TOKEN@gitlab.private/#g requirements.yml

如果您使用的是Gitlab-ci而不是Jenkins,则可以使用现有的ci令牌:

sed -i "s#https://gitlab.private/#https://gitlab-ci-token:$CI_JOB_TOKEN@gitlab.private/#g requirements.yml