web-dev-qa-db-ja.com

Ansible Gitモジュールの使用中にユーザー名とパスワードを渡すにはどうすればよいですか?

AnsibleのGitモジュールで内部的にホストされているプラ​​イベートGitリポジトリ(GitLabインスタンスなど)のクローン、プッシュ、またはプルを行っているときに、Gitサーバーで認証するためのユーザー名とパスワードを指定するにはどうすればよいですか?

documentation でこれを行う方法がわかりません。

23
karthik vee

次のようなものを使用できます。

---
- 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"
39
Arbab Nazar

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/configremote "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

取得元: パスワードプロンプトを使用してAnsibleでプライベートgitリポジトリを複製

19
F. Santiago