cchurch.scm
SCM
Récupérer le code depuis SCM (git/hg/svn).
Exigences
Si vous utilisez SSH pour le téléchargement, une clé de déploiement doit être présente pour l'utilisateur scm_target_user
ou le transfert d'agent SSH doit être activé pour la connexion SSH Ansible.
Il est nécessaire d'avoir des privilèges sudo
ou similaires pour installer le paquet SCM, télécharger en tant qu'un autre utilisateur (c'est-à-dire scm_target_user != ansible_user
), ou créer le compte scm_target_user
.
Variables de rôle
Référez-vous à la documentation pour les modules Ansible git
, hg
ou svn
pour plus de détails sur les paramètres passés directement aux modules sous-jacents.
Les variables suivantes sont généralement définies pour utiliser ce rôle :
scm_type
: Un des typesgit
(par défaut),hg
ousvn
.scm_url
: URL du dépôt (par exemplehttp://server/repo
oussh://server/repo
), requis.scm_version
: Branche, tag, révision ou commit à récupérer (par ex.master
ouHEAD
).scm_force
: Booléen indiquant s'il faut passer l'optionforce
au module SCM, ce qui éliminera les fichiers modifiés dans un répertoire de travail existant ; la valeur par défaut estfalse
.scm_delete_on_update
: Booléen indiquant s'il faut supprimerscm_target_path
avant la mise à jour, la valeur par défaut estfalse
.scm_username
: Nom d'utilisateur pour accéder àscm_url
, uniquement pris en charge lorsquescm_type
estsvn
.scm_password
: Mot de passe pour accéder àscm_url
, uniquement pris en charge lorsquescm_type
estsvn
.scm_target_path
: Répertoire cible pour le téléchargement (la valeur par défaut est"~/src"
).scm_target_user
: Utilisateur sous lequel effectuer le téléchargement (la valeur par défaut estansible_user
, dans ce cas aucune élévation de privilège ne sera requise). Cet utilisateur sera créé s'il est différent deansible_user
, en ignorant les erreurs siansible_user
ne peut pas créer l'utilisateur.scm_target_user_home
: Répertoire personnel à définir si vous créezscm_target_user
.
Les variables suivantes peuvent également être utilisées pour personnaliser ce rôle, bien qu'elles ne soient pas nécessairement nécessaires dans la plupart des situations :
scm_accept_hostkey
: Booléen indiquant s'il faut accepter la clé d'hôte SSH, uniquement pris en charge lorsquescm_type
estgit
, la valeur par défaut du rôle esttrue
.scm_depth
: Créer un clone superficiel, la valeur minimale est1
; uniquement pris en charge lorsquescm_type
estgit
; la valeur par défaut du rôle n'est pas spécifiée.scm_executable
: Chemin vers le binairegit
,hg
ousvn
; la valeur par défaut n'est pas spécifiée, ce qui recherche dans les chemins des binaires système.scm_export
: Exporter au lieu de télécharger/metre à jour ; uniquement pris en charge lorsquescm_type
estsvn
; la valeur par défaut du rôle n'est pas spécifiée, mais la valeur par défaut du modulesvn
estfalse
.scm_key_file
: Chemin vers le fichier de clé privée sur la cible à utiliser pour le téléchargement ; la valeur par défaut n'est pas spécifiée ; uniquement pris en charge lorsquescm_type
estgit
.scm_purge
: Supprimer les fichiers non suivis lors de la mise à jour ; uniquement pris en charge lorsquescm_type
esthg
; la valeur par défaut du rôle n'est pas spécifiée, mais la valeur par défaut du modulehg
estfalse
.scm_recursive
: Booléen indiquant s'il faut cloner le dépôt de manière récursive, y compris les sous-modules ; uniquement pris en charge lorsquescm_type
estgit
; la valeur par défaut du rôle n'est pas spécifiée, mais la valeur par défaut du modulegit
esttrue
.scm_remote
: Nom du dépôt distant ; uniquement pris en charge lorsquescm_type
estgit
; la valeur par défaut du rôle n'est pas spécifiée, mais la valeur par défaut du modulegit
est"origin"
.scm_switch
: Appelersvn switch
avant la mise à jour ; uniquement pris en charge lorsquescm_type
estsvn
; la valeur par défaut du rôle n'est pas spécifiée, mais la valeur par défaut du modulesvn
esttrue
.scm_track_submodules
: Booléen indiquant si les sous-modules suivent les derniers commits ; uniquement pris en charge lorsquescm_type
estgit
; la valeur par défaut du rôle n'est pas spécifiée, mais la valeur par défaut du modulegit
estfalse
.scm_update
: Booléen indiquant s'il faut recevoir de nouvelles révisions depuis le dépôt d'origine ; la valeur par défaut du rôle n'est pas spécifiée, mais les modules par défaut sonttrue
.scm_verify_commit
: Booléen indiquant s'il faut valider les commits signés GPG ; uniquement pris en charge lorsquescm_type
estgit
; la valeur par défaut du rôle n'est pas spécifiée mais la valeur par défaut du modulegit
estfalse
.scm_packages
: Groupement des paquets selonansible_pkg_mgr
etscm_type
. Le rôle tentera d'installer le paquet requis, en ignorant les erreurs si l'élévation de privilèges appropriée n'est pas disponible. Il n'est généralement pas nécessaire de modifier cette variable sauf si vous exécutez sur un système utilisant unansible_pkg_mgr
différent deyum
,apt
,pacman
oumacports
.scm_ssh_agent_forwarding
: Booléen indiquant s'il faut appliquer des corrections pour permettre le transfert de l'agent SSH de fonctionner lorsquescm_target_user
n'est pas le même queansible_user
; la valeur par défaut du rôle estfalse
.scm_ssh_auth_sock_sudoers_file
: Chemin du fichier à ajouter danssudoers.d
lorsque la correction descm_ssh_agent_forwarding
est activée ; la valeur par défaut du rôle est"/etc/sudoers.d/ssh_auth_sock"
.
La variable suivante peut être définie pour l'appel de jeu ou de rôle (mais ne fonctionnera pas si elle est définie comme une variable de groupe ou d'hôte d'inventaire) :
scm_notify_on_updated
: Nom du gestionnaire à notifier lorsque le téléchargement est modifié. La valeur par défaut est"scm updated"
; il est généralement recommandé que les gestionnaires personnalisés écoutent"scm updated"
au lieu de changer le nom de notification.
Le rôle définira également le fait scm_update_result
(par hôte) avec le résultat de la tâche de mise à jour.
Dépendances
Aucune.
Exemple de Playbook
L'exemple de playbook suivant télécharge un dépôt git public et affiche un message après la mise à jour :
- hosts: all
roles:
- role: cchurch.scm
vars:
scm_type: git
scm_url: https://github.com/cchurch/ansible-sign.git
scm_target_path: ~/src/ansible-sign
scm_version: master
handlers:
- name: ansible sign updated
debug:
msg: "{{ scm_target_path }} a été mis à jour depuis {{ scm_url }} vers {{ scm_update_result.after }}."
listen: scm updated
Licence
BSD
Informations sur l'auteur
Chris Church (cchurch)
Checkout code from SCM (git/hg/svn).
ansible-galaxy install cchurch.scm