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 z git (domyślnie), hg lub svn.
  • scm_url: URL do repozytorium (np. http://server/repo lub ssh://server/repo), wymagane.
  • scm_version: Gałąź, tag, rewizja lub commit do pobrania (np. master lub HEAD).
  • 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ślnie false.
  • scm_delete_on_update: Wartość logiczna wskazująca, czy usunąć scm_target_path przed aktualizacją, domyślnie false.
  • scm_username: Nazwa użytkownika do uzyskania dostępu do scm_url, obsługiwane tylko, gdy scm_type to svn.
  • scm_password: Hasło do uzyskania dostępu do scm_url, obsługiwane tylko, gdy scm_type to svn.
  • scm_target_path: Katalog docelowy dla pobrania (domyślnie "~/src").
  • scm_target_user: Użytkownik, na którego konto się zalogujesz podczas pobierania (domyślnie ansible_user, w takim przypadku nie będzie wymagane podwyższenie uprawnień). Użytkownik ten zostanie utworzony, jeśli różni się od ansible_user, ignorując błędy, gdy ansible_user nie ma uprawnień do utworzenia użytkownika.
  • scm_target_user_home: Katalog domowy do ustawienia, jeśli tworzony jest scm_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, gdy scm_type to git, domyślnie true.
  • scm_depth: Utwórz powierzchowną kopię, minimalna wartość to 1; obsługiwane tylko, gdy scm_type to git; domyślnie nieokreślone.
  • scm_executable: Ścieżka do binariów git, hg lub svn; domyślnie nieokreślone, co wyszukuje w systemowych ścieżkach binarnych.
  • scm_export: Eksportuj zamiast pobierania/aktualizacji; obsługiwane tylko, gdy scm_type to svn; domyślnie nieokreślone, ale domyślne dla modułu svn to false.
  • scm_key_file: Ścieżka do pliku klucza prywatnego na docelowym systemie do użycia przy pobieraniu; domyślnie nieokreślone; obsługiwane tylko, gdy scm_type to git.
  • scm_purge: Usuwanie plików nieśledzonych podczas aktualizacji; obsługiwane tylko, gdy scm_type to hg; domyślnie nieokreślone, ale domyślne dla modułu hg to false.
  • scm_recursive: Wartość logiczna wskazująca, czy klonować repozytorium rekurencyjnie, w tym podmoduły; obsługiwane tylko, gdy scm_type to git; domyślnie nieokreślone, ale domyślne dla modułu git to true.
  • scm_remote: Nazwa zdalnego repozytorium; obsługiwane tylko, gdy scm_type to git; domyślnie nieokreślone, ale domyślne dla modułu git to "origin".
  • scm_switch: Wywołaj svn switch przed aktualizacją; obsługiwane tylko, gdy scm_type to svn; domyślnie nieokreślone, ale domyślne dla modułu svn to true.
  • scm_track_submodules: Wartość logiczna wskazująca, czy podmoduły śledzą najnowsze commity; obsługiwane tylko, gdy scm_type to git; domyślnie nieokreślone, ale domyślne dla modułu git to false.
  • scm_update: Wartość logiczna wskazująca, czy otrzymać nowe rewizje z repozytorium źródłowego; domyślnie nieokreślone, ale domyślne modułów to true.
  • scm_verify_commit: Wartość logiczna wskazująca, czy walidować podpisane GPG commity; obsługiwane tylko, gdy scm_type to git; domyślnie nieokreślone, ale domyślne dla modułu git to false.
  • scm_packages: Mapa pakietów według ansible_pkg_mgr i scm_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 innym ansible_pkg_mgr niż yum, apt, pacman lub macports.
  • scm_ssh_agent_forwarding: Wartość logiczna wskazująca, czy zastosować poprawki, aby umożliwić działanie przekazywania agenta SSH, gdy scm_target_user różni się od ansible_user; domyślnie false.
  • scm_ssh_auth_sock_sudoers_file: Ścieżka do pliku, który ma być dodany do sudoers.d, gdy poprawka do scm_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)

O projekcie

Checkout code from SCM (git/hg/svn).

Zainstaluj
ansible-galaxy install cchurch.scm
Licencja
other
Pobrania
2.1k
Właściciel
Python/Django/Ansible, will code for sweet tea and beer.