web-dev-qa-db-ja.com

Jenkinsジョブでプライベートgitlabリポジトリを使用して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

しかし、それはうまくいかないようです。

何か案が ?

9

現在、実行時に資格情報パラメーターをansible-galaxyに渡すことはサポートされていません。

資格情報をrequirements.ymlに追加することは可能ですが、他の人がいつかそれらを悪用する可能性があるため、一般にコードに資格情報を追加することは理想的ではありません。

解決策は、実行時にrequirements.ymlを更新することです。

プロファイルを表示して設定を更新することにより、Gitlabパーソナルアクセストークンを作成します: https://private.gitlab/profile/personal_access_tokens

選択したシークレットマネージャーを使用して、実行時にトークンで変数PAT_TOKENを設定します。

Jenkinsスクリプトで、sedを使用してrequirements.ymlの前にansible-galaxy installを更新します

sed -i "s#https://gitlab.private/#https://oauth2:[email protected]/#g requirements.yml

Jenkinsの代わりにGitlab-ciを使用していた場合は、既存のciトークンを使用できます。

sed -i "s#https://gitlab.private/#https://gitlab-ci-token:[email protected]/#g requirements.yml
2
Steve E.