web-dev-qa-db-fra.com

Comment transmettre le nom d'utilisateur et le mot de passe lorsque j'utilise le module Ansible Git?

Lors du clonage, du push ou du pull d'un référentiel git privé hébergé en interne (par exemple sur une instance GitLab) avec le module Git d'Ansible, comment spécifier le nom d'utilisateur et le mot de passe pour s'authentifier auprès du serveur Git?

Je ne vois aucun moyen de le faire dans le documentation .

23
karthik vee

Vous pouvez utiliser quelque chose comme ceci:

---
- 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

Remarque: Si votre mot de passe contient également des caractères spéciaux @, #, $ etc, utilisez également urlencode avec le mot de passe: {{ githubpassword | urlencode }}

Exécutez ensuite le playbook suivant:

ansible-playbook -i hosts github.yml -e "githubuser=arbabname" -e "githubpassword=xxxxxxx"
39
Arbab Nazar

En améliorant la réponse de Arbab Nazar , vous pouvez éviter d'exposer votre mot de passe dans le terminal en demandant les informations d'identification.

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 

  [...] 

Et dans la tâche référence les variables.

task.yml

- name: Get updated files from git repository 
  git:
    repo=https://{{ githubuser | urlencode }}:{{ githubpassword | urlencode }}@github.com/privrepo.git
    dest=/tmp

Cela enregistrera le mot de passe en texte clair dans .git/config comme url de remote "Origin". La tâche suivante peut être utilisée pour le supprimer.

- name: Ensure remote URL does not contain credentials
  git_config:
    name: remote.Origin.url
    value: https://github.com/privrepo.git
    scope: local
    repo: /tmp

Tiré de: Cloner un référentiel git privé avec Ansible (en utilisant l'invite de mot de passe)

19
F. Santiago