AnsibleのGitモジュールで内部的にホストされているプライベートGitリポジトリ(GitLabインスタンスなど)のクローン、プッシュ、またはプルを行っているときに、Gitサーバーで認証するためのユーザー名とパスワードを指定するにはどうすればよいですか?
documentation でこれを行う方法がわかりません。
次のようなものを使用できます。
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: install git package
apt:
name: git
- name: Get updated files from git repository
git:
repo: "https://{{ githubuser | urlencode }}:{{ githubpassword }}@github.com/privrepo.git"
dest: /tmp
注:パスワードに特殊文字@、#、$なども含まれている場合は、urlencode
もパスワードと共に使用します:{{ githubpassword | urlencode }}
次に、次のプレイブックを実行します。
ansible-playbook -i hosts github.yml -e "githubuser=arbabname" -e "githubpassword=xxxxxxx"
Arbab Nazar の答えを改善すると、資格情報の入力を求めることで、ターミナルでパスワードを公開することを回避できます。
playbook.yml
---
- name: ANSIBLE - Shop Installation
hosts: '{{ target }}'
vars_Prompt:
- name: "githubuser"
Prompt: "Enter your github username"
private: no
- name: "githubpassword"
Prompt: "Enter your github password"
private: yes
[...]
タスクで変数を参照します。
task.yml
- name: Get updated files from git repository
git:
repo=https://{{ githubuser | urlencode }}:{{ githubpassword | urlencode }}@github.com/privrepo.git
dest=/tmp
これにより、パスワードはクリアテキストとして.git/config
にremote "Origin"
のurl
として保存されます。次のタスクを使用して削除できます。
- name: Ensure remote URL does not contain credentials
git_config:
name: remote.Origin.url
value: https://github.com/privrepo.git
scope: local
repo: /tmp