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
しかし、それはうまくいかないようです。
何か案が ?
現在、実行時に資格情報パラメーターを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