cchurch.scm
SCM
Pobierz kod z systemu kontroli wersji (git/hg/svn).
Wymagania
Jeśli pobierasz za pomocą SSH, musisz mieć klucz do wdrożenia dla użytkownika scm_target_user
lub musisz włączyć przekazywanie agenta SSH dla połączenia Ansible.
Wymagana jest również możliwość podwyższenia uprawnień, aby zainstalować pakiet SCM, pobrać jako inny użytkownik (np. scm_target_user != ansible_user
) lub utworzyć konto scm_target_user
.
Zmienne roli
Zapoznaj się z dokumentacją modułów Ansible dla git
, hg
lub svn
, aby uzyskać więcej szczegółów na temat parametrów przekazywanych do odpowiednich modułów.
Zazwyczaj definiowane są następujące zmienne do użycia tej roli:
scm_type
: Jeden zgit
(domyślnie),hg
lubsvn
.scm_url
: URL do repozytorium (np.http://server/repo
lubssh://server/repo
), wymagane.scm_version
: Gałąź, tag, rewizja lub commit do pobrania (np.master
lubHEAD
).scm_force
: Wartość logiczna wskazująca, czy przekazać opcjęforce
do modułu SCM, co spowoduje odrzucenie wszelkich zmodyfikowanych plików w istniejącym katalogu roboczym; domyślniefalse
.scm_delete_on_update
: Wartość logiczna wskazująca, czy usunąćscm_target_path
przed aktualizacją, domyślniefalse
.scm_username
: Nazwa użytkownika do uzyskania dostępu doscm_url
, obsługiwane tylko, gdyscm_type
tosvn
.scm_password
: Hasło do uzyskania dostępu doscm_url
, obsługiwane tylko, gdyscm_type
tosvn
.scm_target_path
: Katalog docelowy dla pobrania (domyślnie"~/src"
).scm_target_user
: Użytkownik, na którego konto się zalogujesz podczas pobierania (domyślnieansible_user
, w takim przypadku nie będzie wymagane podwyższenie uprawnień). Użytkownik ten zostanie utworzony, jeśli różni się odansible_user
, ignorując błędy, gdyansible_user
nie ma uprawnień do utworzenia użytkownika.scm_target_user_home
: Katalog domowy do ustawienia, jeśli tworzony jestscm_target_user
.
Dalsze zmienne mogą być używane do dostosowywania tej roli, choć rzadko są potrzebne w większości sytuacji:
scm_accept_hostkey
: Wartość logiczna wskazująca, czy zaakceptować klucz hosta SSH, obsługiwane tylko, gdyscm_type
togit
, domyślnietrue
.scm_depth
: Utwórz powierzchowną kopię, minimalna wartość to1
; obsługiwane tylko, gdyscm_type
togit
; domyślnie nieokreślone.scm_executable
: Ścieżka do binariówgit
,hg
lubsvn
; domyślnie nieokreślone, co wyszukuje w systemowych ścieżkach binarnych.scm_export
: Eksportuj zamiast pobierania/aktualizacji; obsługiwane tylko, gdyscm_type
tosvn
; domyślnie nieokreślone, ale domyślne dla modułusvn
tofalse
.scm_key_file
: Ścieżka do pliku klucza prywatnego na docelowym systemie do użycia przy pobieraniu; domyślnie nieokreślone; obsługiwane tylko, gdyscm_type
togit
.scm_purge
: Usuwanie plików nieśledzonych podczas aktualizacji; obsługiwane tylko, gdyscm_type
tohg
; domyślnie nieokreślone, ale domyślne dla modułuhg
tofalse
.scm_recursive
: Wartość logiczna wskazująca, czy klonować repozytorium rekurencyjnie, w tym podmoduły; obsługiwane tylko, gdyscm_type
togit
; domyślnie nieokreślone, ale domyślne dla moduługit
totrue
.scm_remote
: Nazwa zdalnego repozytorium; obsługiwane tylko, gdyscm_type
togit
; domyślnie nieokreślone, ale domyślne dla moduługit
to"origin"
.scm_switch
: Wywołajsvn switch
przed aktualizacją; obsługiwane tylko, gdyscm_type
tosvn
; domyślnie nieokreślone, ale domyślne dla modułusvn
totrue
.scm_track_submodules
: Wartość logiczna wskazująca, czy podmoduły śledzą najnowsze commity; obsługiwane tylko, gdyscm_type
togit
; domyślnie nieokreślone, ale domyślne dla moduługit
tofalse
.scm_update
: Wartość logiczna wskazująca, czy otrzymać nowe rewizje z repozytorium źródłowego; domyślnie nieokreślone, ale domyślne modułów totrue
.scm_verify_commit
: Wartość logiczna wskazująca, czy walidować podpisane GPG commity; obsługiwane tylko, gdyscm_type
togit
; domyślnie nieokreślone, ale domyślne dla moduługit
tofalse
.scm_packages
: Mapa pakietów wedługansible_pkg_mgr
iscm_type
. Rola spróbuje zainstalować wymagany pakiet, ignorując błędy, jeśli odpowiednia możliwość podwyższenia uprawnień nie jest dostępna. Zazwyczaj nie ma potrzeby zmiany tej zmiennej, chyba że działasz na systemie z innymansible_pkg_mgr
niżyum
,apt
,pacman
lubmacports
.scm_ssh_agent_forwarding
: Wartość logiczna wskazująca, czy zastosować poprawki, aby umożliwić działanie przekazywania agenta SSH, gdyscm_target_user
różni się odansible_user
; domyślniefalse
.scm_ssh_auth_sock_sudoers_file
: Ścieżka do pliku, który ma być dodany dosudoers.d
, gdy poprawka doscm_ssh_agent_forwarding
jest włączona; domyślnie"/etc/sudoers.d/ssh_auth_sock"
.
Następująca zmienna może być zdefiniowana dla wywołania odgrywania lub roli (ale nie zadziała, jeśli zdefiniujesz ją jako zmienną grupy inwentarza lub hosta):
scm_notify_on_updated
: Nazwa menedżera powiadomień, aby poinformować, gdy pobieranie zostało zmienione. Domyślnie to"scm updated"
; ogólnie zaleca się, aby niestandardowe menedżery nasłuchiwały na"scm updated"
, zamiast zmieniać nazwę powiadomienia.
Rola również ustawi fakt scm_update_result
(na każdy host) na wynik zadania aktualizacji.
Zależności
Brak.
Przykładowy playbook
Poniższy przykładowy playbook pobiera publiczne repozytorium git i wyświetla komunikat po aktualizacji:
- 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 }} zostało zaktualizowane z {{ scm_url }} do {{ scm_update_result.after }}."
listen: scm updated
Licencja
BSD
Informacje o autorze
Chris Church (cchurch)
ansible-galaxy install cchurch.scm