linux-system-roles.ssh

ssh

ansible-centos.yml ansible-debian.yml ansible-fedora.yml ansible-lint.yml ansible-test.yml ansible-ubuntu.yml markdownlint.yml shellcheck.yml tft.yml tft_citest_bad.yml woke.yml

Rola Ansible do zarządzania konfiguracją klientów ssh.

Wymagania

Ta rola powinna działać na każdym systemie, który obsługuje klienta openssh i jest wspierany przez ansible. Rola była testowana na:

  • RHEL/CentOS 6, 7, 8, 9
  • Fedora
  • Debian
  • Ubuntu

Wymagania dotyczące kolekcji

Aby zarządzać systemami rpm-ostree, rola wymaga modułów z zewnętrznych kolekcji. Użyj poniższego polecenia, aby je zainstalować:

ansible-galaxy collection install -vv -r meta/collection-requirements.yml

Zmienne roli

Domyślnie rola nie powinna modyfikować konfiguracji systemu i generować globalnego ssh_config, który odpowiada domyślnym ustawieniom systemu (generowana konfiguracja nie zachowuje komentarzy i kolejności opcji).

ssh_user

Domyślnie (null) rola zmodyfikuje globalną konfigurację dla wszystkich użytkowników. Inne wartości będą interpretowane jako nazwa użytkownika, a rola zmodyfikuje konfigurację dla konkretnego użytkownika, przechowywaną w ~/.ssh/config . Użytkownik musi istnieć przed wywołaniem tej roli, w przeciwnym razie operacja zakończy się niepowodzeniem.

ssh_skip_defaults

Domyślnie (auto), rola zapisuje globalny plik konfiguracyjny /etc/ssh/ssh_config i zachowuje domyślne ustawienia systemu tam zdefiniowane (true). To automatycznie jest wyłączane, gdy tworzony jest plik konfiguracyjny drop-in (ssh_drop_in_name!=null) lub gdy tworzony jest plik konfiguracyjny dla użytkownika (ssh_user!=null).

ssh_drop_in_name

Określa nazwę pliku konfiguracyjnego drop-in, który ma być umieszczony w systemowym katalogu drop-in. Nazwa ta jest używana w szablonie /etc/ssh/ssh_config.d/{name}.conf, aby odwołać się do pliku konfiguracyjnego do zmodyfikowania. Jeśli system nie obsługuje katalogu drop-in, ustawienie tej opcji spowoduje błąd. Domyślna wartość to null, jeśli system nie obsługuje katalogu drop-in, oraz 00-ansible w przeciwnym przypadku.

Zalecany format to NN-nazwa, gdzie NN to dwucyfrowy numer używany do sortowania, a nazwa to dowolna opisowa nazwa zawartości lub właściciela pliku.

ssh dict

Słownik zawierający opcje konfiguracyjne oraz ich wartości. Zobacz przykład poniżej.

  • ssh_...:

Proste zmienne składające się z nazwy opcji z prefiksem ssh_ mogą być używane zamiast powyższego słownika. Prosta zmienna nadpisuje wartości w powyższym słowniku.

ssh_additional_packages

Ta rola automatycznie instaluje pakiety potrzebne dla najczęściej występujących przypadków użycia na danej platformie. Jeśli wymagane są dodatkowe pakiety (na przykład openssh-keysign dla uwierzytelniania opartego na hoście), można je określić w tej zmiennej.

ssh_config_file

Plik konfiguracyjny, który zostanie zapisany przez tę rolę. Domyślna wartość to szablon /etc/ssh/ssh_config.d/{name}.conf, jeśli system ma katalog drop-in, lub /etc/ssh/ssh_config w przeciwnym razie. Jeśli ssh_user!=null, domyślna wartość to ~/.ssh/config.

Aby zapisać /etc/ssh/ssh_config, nawet jeśli katalog drop-in jest obsługiwany, ustaw ssh_drop_in_name na null.

ssh_config_owner, ssh_config_group, ssh_config_mode

Właściciel, grupa i tryb utworzonego pliku konfiguracyjnego. Pliki są właścicielami root:root z trybem 0644 domyślnie, chyba że ssh_user!=null. W tym przypadku tryb to 0600, a właściciel i grupa są określane na podstawie nazwy użytkownika podanej w zmiennej ssh_user.

ssh_backup

Gdy ustawione na false, oryginalny plik ssh_config nie jest kopiowany. Domyślnie jest true.

ssh_transactional_update_reboot_ok

Ta zmienna służy do zarządzania ponownymi uruchomieniami wymaganymi przez aktualizacje transakcyjne. Jeśli transakcyjna aktualizacja wymaga ponownego uruchomienia, rola będzie kontynuować restart, jeśli ssh_transactional_update_reboot_ok jest ustawione na true. Jeśli ustawione na false, rola powiadomi użytkownika, że wymagany jest restart, co pozwala na dostosowanie obsługi wymogu ponownego uruchomienia. Jeśli ta zmienna nie jest ustawiona, rola zakończy się niepowodzeniem, aby upewnić się, że wymóg ponownego uruchomienia nie zostanie pominięty.

Przykład Playbooka

Poniższy playbook konfiguruje konfigurację ssh użytkownika root w jego katalogu domowym, aby używał kompresji, multiplexingu control-master oraz włączył uwierzytelnianie GSSAPI w bloku "match final all". Dodatkowo, tworzy alias "example" do łączenia się z hostem example.com jako użytkownik somebody. Ostatnia linia wyłącza przesyłanie X11.

- name: Zarządzaj klientami ssh
  hosts: all
  tasks:
  - name: Skonfiguruj klientów ssh
    include_role:
      name: linux-system-roles.ssh
    vars:
      ssh_user: root
      ssh:
        Compression: true
        ControlMaster: auto
        ControlPath: ~/.ssh/.cm%C
        Match:
          - Condition: "final all"
            GSSAPIAuthentication: true
        Host:
          - Condition: example
            Hostname: example.com
            User: somebody
      ssh_ForwardX11: false

Więcej przykładów znajdziesz w katalogu examples/.

rpm-ostree

Zobacz README-ostree.md

Licencja

LGPLv3, szczegóły znajdują się w pliku LICENSE.

Informacje o autorze

Jakub Jelen, 2021 - 2023