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 .
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"
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)