在 Jenkins Job 中使用 ansible-galaxy 的凭据和私有 gitlab 存储库



我需要在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

我输入一次我的凭据,然后它会记住它

但是我应该如何在 Jenkins 工作中做什么?

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

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

但这似乎不是工作。

知道吗?

目前不支持在运行时将凭据参数传递到 ansible-galaxy 中。

可以将凭据添加到requirements.yml中,但通常将凭据添加到代码中并不理想,因为其他人有一天很容易利用它们。

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

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

使用

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

在 Jenkins 脚本中使用 sedansible-galaxy install之前更新requirements.yml

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

如果你安装了 git,你可以把它用于 GitHub:

git config --global credential.helper store
echo "https://gitlab-ci-token:${CI_JOB_TOKEN}@$mygitlab.com" >>  ~/.git-credentials
chmod 600 ~/.git-credentials

CI_JOB_TOKEN是运行器用来提取代码的令牌。您可以使用自己的(不太安全(

最新更新