cchurch.scm
SCM
Code aus SCM (git/hg/svn) auschecken.
Anforderungen
Wenn Sie über SSH auschecken, muss ein Deployment-Schlüssel für den
scm_target_user
vorhanden sein oder SSH-Agent-Weiterleitung muss für die
Ansible-SSH-Verbindung aktiviert sein.
sudo
oder ähnliche Berechtigungen sind erforderlich, um das SCM-Paket zu installieren,
als ein anderer Benutzer auszuchecken (d.h. scm_target_user != ansible_user
)
oder das Konto scm_target_user
zu erstellen.
Rollenvariablen
Bitte lesen Sie die Dokumentation zu den git
, hg
oder svn
Ansible-Modulen
für genauere Informationen zu den Parametern, die direkt an die zugrunde liegenden
Module übergeben werden.
Die folgenden Variablen werden typischerweise zur Verwendung dieser Rolle definiert:
scm_type
:git
(Standard),hg
odersvn
.scm_url
: URL zum Repository (z.B.http://server/repo
oderssh://server/repo
), erforderlich.scm_version
: Branch, Tag, Revision oder Commit, das ausgecheckt werden soll (z.B.master
oderHEAD
).scm_force
: Boolescher Wert, der angibt, ob dieforce
-Option an das SCM-Modul übergeben werden soll, was alle modifizierten Dateien im bestehenden Arbeitsverzeichnis verwirft; Standard istfalse
.scm_delete_on_update
: Boolescher Wert, der angibt, obscm_target_path
vor dem Update gelöscht werden soll; Standard istfalse
.scm_username
: Benutzername für den Zugriff aufscm_url
, nur unterstützt, wennscm_type
svn
ist.scm_password
: Passwort für den Zugriff aufscm_url
, nur unterstützt, wennscm_type
svn
ist.scm_target_path
: Zielverzeichnis für den Checkout (Standard ist"~/src"
).scm_target_user
: Benutzer, der für den Checkout verwendet werden soll (Standard istansible_user
, in diesem Fall ist keine Privilegieneskalation erforderlich). Dieser Benutzer wird erstellt, wenn er sich vonansible_user
unterscheidet, wobei Fehler ignoriert werden, wennansible_user
den Benutzer nicht erstellen kann.scm_target_user_home
: Home-Verzeichnis, das festgelegt werden soll, wennscm_target_user
erstellt wird.
Die folgenden Variablen können ebenfalls verwendet werden, um diese Rolle anzupassen, sind jedoch in den meisten Situationen wahrscheinlich nicht erforderlich:
scm_accept_hostkey
: Boolescher Wert, der angibt, ob der SSH-Hostschlüssel akzeptiert werden soll, nur unterstützt, wennscm_type
git
ist; Standard der Rolle isttrue
.scm_depth
: Erstellen Sie einen flachen Klon, Mindestwert ist1
; nur unterstützt, wennscm_type
git
ist; Standard der Rolle ist nicht festgelegt.scm_executable
: Pfad zurgit
,hg
odersvn
-Binärdatei; Standard ist nicht festgelegt, was die Suche in den System-Binärpfaden bedeutet.scm_export
: Exportieren anstelle von Checkout/Update; nur unterstützt, wennscm_type
svn
ist; Standard der Rolle ist nicht festgelegt, aber dersvn
-Modulstandard istfalse
.scm_key_file
: Pfad zur privaten Schlüsseldatei auf dem Ziel, die für den Checkout verwendet werden soll; Standard ist nicht festgelegt; wird nur unterstützt, wennscm_type
git
ist.scm_purge
: Löschen Sie nicht verfolgte Dateien beim Aktualisieren; nur unterstützt, wennscm_type
hg
ist; Standard der Rolle ist nicht festgelegt, aber derhg
-Modulstandard istfalse
.scm_recursive
: Boolescher Wert, der angibt, ob das Repository rekursiv geklont werden soll, einschließlich Submodule; nur unterstützt, wennscm_type
git
ist; Standard der Rolle ist nicht festgelegt, aber dergit
-Modulstandard isttrue
.scm_remote
: Name des Remotes; nur unterstützt, wennscm_type
git
ist; Standard der Rolle ist nicht festgelegt, aber dergit
-Modulstandard ist"origin"
.scm_switch
: Ruftsvn switch
vor dem Update auf; nur unterstützt, wennscm_type
svn
ist; Standard der Rolle ist nicht festgelegt, aber dersvn
-Modulstandard isttrue
.scm_track_submodules
: Boolescher Wert, der angibt, ob Submodule die neuesten Commits verfolgen; nur unterstützt, wennscm_type
git
ist; Standard der Rolle ist nicht festgelegt, aber dergit
-Modulstandard istfalse
.scm_update
: Boolescher Wert, der angibt, ob neue Revisionen aus dem Ursprungs-Repository empfangen werden sollen; Standard der Rolle ist nicht festgelegt, aber die Standardmodule sindtrue
.scm_verify_commit
: Boolescher Wert, der angibt, ob GPG-signierte Commits validiert werden sollen; nur unterstützt, wennscm_type
git
ist; Standard der Rolle ist nicht festgelegt, aber dergit
-Modulstandard istfalse
.scm_packages
: Zuordnung von Paketen nachansible_pkg_mgr
undscm_type
. Die Rolle wird versuchen, das erforderliche Paket zu installieren und Fehler zu ignorieren, wenn die entsprechenden Berechtigungen nicht verfügbar sind. Normalerweise ist es nicht erforderlich, diese Variable zu ändern, es sei denn, Sie arbeiten auf einem System, das einen anderenansible_pkg_mgr
alsyum
,apt
,pacman
odermacports
verwendet.scm_ssh_agent_forwarding
: Boolescher Wert, der angibt, ob Korrekturen angewendet werden sollen, um die SSH-Agent-Weiterleitung zu ermöglichen, wennscm_target_user
nicht dasselbe ist wieansible_user
; Standard der Rolle istfalse
.scm_ssh_auth_sock_sudoers_file
: Dateipfad, der insudoers.d
hinzugefügt werden soll, wenn die Korrektur fürscm_ssh_agent_forwarding
aktiviert ist; Standard der Rolle ist"/etc/sudoers.d/ssh_auth_sock"
.
Die folgende Variable kann für die Ausführung des Plays oder der Rolle definiert werden (funktioniert jedoch nicht, wenn sie als Inventargruppe oder Hostvariable definiert ist):
scm_notify_on_updated
: Handler-Name, der benachrichtigt werden soll, wenn der Checkout geändert wurde. Der Standardwert ist"scm updated"
; es wird im Allgemeinen empfohlen, dass benutzerdefinierte Handler auf"scm updated"
hören, anstatt den Benachrichtigungsnamen zu ändern.
Die Rolle wird außerdem das Faktum scm_update_result
(pro Host)
auf das Ergebnis der Aktualisierungsaufgabe setzen.
Abhängigkeiten
Keine.
Beispiel-Playbook
Das folgende Beispiel-Playbook checkt ein öffentliches Git-Repository aus und zeigt eine Nachricht nach dem Update an:
- 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 }} wurde von {{ scm_url }} auf {{ scm_update_result.after }} aktualisiert."
listen: scm updated
Lizenz
BSD
Autoreninformation
Chris Church (cchurch)
Checkout code from SCM (git/hg/svn).
ansible-galaxy install cchurch.scm