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),hglubsvn.scm_url: URL do repozytorium (np.http://server/repolubssh://server/repo), wymagane.scm_version: Gałąź, tag, rewizja lub commit do pobrania (np.masterlubHEAD).scm_force: Wartość logiczna wskazująca, czy przekazać opcjęforcedo 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_pathprzed aktualizacją, domyślniefalse.scm_username: Nazwa użytkownika do uzyskania dostępu doscm_url, obsługiwane tylko, gdyscm_typetosvn.scm_password: Hasło do uzyskania dostępu doscm_url, obsługiwane tylko, gdyscm_typetosvn.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_usernie 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_typetogit, domyślnietrue.scm_depth: Utwórz powierzchowną kopię, minimalna wartość to1; obsługiwane tylko, gdyscm_typetogit; domyślnie nieokreślone.scm_executable: Ścieżka do binariówgit,hglubsvn; domyślnie nieokreślone, co wyszukuje w systemowych ścieżkach binarnych.scm_export: Eksportuj zamiast pobierania/aktualizacji; obsługiwane tylko, gdyscm_typetosvn; domyślnie nieokreślone, ale domyślne dla modułusvntofalse.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_typetogit.scm_purge: Usuwanie plików nieśledzonych podczas aktualizacji; obsługiwane tylko, gdyscm_typetohg; domyślnie nieokreślone, ale domyślne dla modułuhgtofalse.scm_recursive: Wartość logiczna wskazująca, czy klonować repozytorium rekurencyjnie, w tym podmoduły; obsługiwane tylko, gdyscm_typetogit; domyślnie nieokreślone, ale domyślne dla moduługittotrue.scm_remote: Nazwa zdalnego repozytorium; obsługiwane tylko, gdyscm_typetogit; domyślnie nieokreślone, ale domyślne dla moduługitto"origin".scm_switch: Wywołajsvn switchprzed aktualizacją; obsługiwane tylko, gdyscm_typetosvn; domyślnie nieokreślone, ale domyślne dla modułusvntotrue.scm_track_submodules: Wartość logiczna wskazująca, czy podmoduły śledzą najnowsze commity; obsługiwane tylko, gdyscm_typetogit; domyślnie nieokreślone, ale domyślne dla moduługittofalse.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_typetogit; domyślnie nieokreślone, ale domyślne dla moduługittofalse.scm_packages: Mapa pakietów wedługansible_pkg_mgriscm_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_mgrniżyum,apt,pacmanlubmacports.scm_ssh_agent_forwarding: Wartość logiczna wskazująca, czy zastosować poprawki, aby umożliwić działanie przekazywania agenta SSH, gdyscm_target_userróż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_forwardingjest 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