clusterapps.rhbase
Rola Ansible rhbase
Rola Ansible do podstawowej konfiguracji serwera z dystrybucją Linuksa opartą na RedHat (CentOS, Fedora, RHEL, ...). Zadania tej roli to:
- Zarządzanie repozytoriami,
- Zarządzanie instalacją i usuwaniem pakietów,
- Włączanie lub wyłączanie określonych usług,
- Tworzenie użytkowników i grup,
- Ustawienie konta administratora z kluczem SSH,
- Zastosowanie podstawowych ustawień zabezpieczeń, takich jak włączenie SELinux i zapory,
- Zarządzanie regułami zapory (w strefie publicznej).
To jest fork projektu bertvv.rh-base. Oryginał jest świetny, ale chciałem iść w innym kierunku.
Wymagania
Brak specjalnych wymagań.
Zmienne roli
Zmienna | Domyślna | Uwagi (typ) |
---|---|---|
rhbase_enable_repos |
[] | Lista słowników określających repozytoria do włączenia. Zobacz poniżej szczegóły. |
rhbase_firewall_allow_ports |
[] | Lista portów, które mają być dozwolone w zaporze, np. 80/tcp, 53/udp itp. |
rhbase_firewall_allow_services |
[] | Lista usług, które mają być dozwolone w zaporze, np. http, dns itp. (1) |
rhbase_firewall_interfaces |
[] | Lista interfejsów sieciowych, które mają być dodane do publicznej strefy reguł zapory. |
rhbase_hosts_entry |
true | Gdy jest ustawione, dodawany jest wpis do /etc/hosts z nazwą hosta maszyny. Przyspiesza to zbieranie danych. |
rhbase_install_packages |
[] | Lista pakietów, które powinny być zainstalowane. Dozwolone są także adresy URL. |
rhbase_motd |
false | Gdy jest ustawione, instalowany jest niestandardowy /etc/motd z informacjami o nazwie hosta i adresach IP. |
rhbase_override_firewalld_zones |
false | Gdy jest ustawione, pozwala NetworkManagerowi na nadpisywanie stref zapory ustawionych przez administratora. (2) |
rhbase_remove_packages |
[] | Lista pakietów, które nie powinny być instalowane |
rhbase_repo_exclude_from_update |
[] | Lista pakietów, które mają być wyłączone z aktualizacji. Dozwolone są znaki wieloznaczne, np. kernel* . |
rhbase_repo_exclude |
[] | Lista repozytoriów, które mają być wyłączone w yum/dnf.conf |
rhbase_repo_gpgcheck |
false | Gdy jest ustawione, będą przeprowadzane kontrole GPG podczas instalacji pakietów. |
rhbase_repo_installonly_limit |
3 | Maksymalna liczba wersji pakietu (np. kernel), które mogą być zainstalowane jednocześnie. Musi być przynajmniej 2. |
rhbase_repo_remove_dependencies |
true | Gdy jest ustawione, zależności, które stają się nieużywane po usunięciu pakietu, będą również usuwane. |
rhbase_repositories |
[] | Lista pakietów RPM (w tym adresy URL), które instalują zewnętrzne repozytoria (np. epel-release ). |
rhbase_selinux_state |
enforcing | Domyślny stan SELinux dla systemu. Po prostu zostaw to jak jest. |
rhbase_selinux_booleans |
[] | Lista booleanów SELinux do ustawienia na włączone, np. httpd_can_network_connect |
rhbase_ssh_key |
- | Publiczny klucz SSH dla użytkownika administratora, który pozwala mu na logowanie bez hasła. Użytkownik powinien istnieć. |
rhbase_ssh_user |
- | Nazwa użytkownika, który będzie zarządzać tą maszyną. Klucz SSH zostanie zainstalowany w katalogu domowym użytkownika. (3) |
rhbase_start_services |
[] | Lista usług, które powinny być uruchomione i włączone. |
rhbase_stop_services |
[] | Lista usług, które nie powinny być uruchomione |
rhbase_tz |
:/etc/localtime | Ustawia zmienną środowiskową $TZ (4) |
rhbase_update |
false | Gdy jest ustawione, przeprowadzana będzie aktualizacja pakietów. |
rhbase_user_groups |
[] | Lista grup użytkowników, które powinny być obecne. |
rhbase_users |
[] | Lista słowników określających użytkowników, którzy powinni być obecni. Zobacz poniżej przykład. |
rhbase_taskrunner_key |
[] | Autoryzowany klucz publiczny do łączenia się jako taskrunner |
Uwagi:
(1) Pełna lista prawidłowych wartości dla rhbase_firewall_allow_services
może być enumerowana poleceniem firewall-cmd --get-services
.
(2) To jest obejście błędu CentOS #7407. NetworkManager domyślnie zarządza strefami zapory, co nadpisuje reguły dodane za pomocą --permanent
.
(3) Ustawienie zmiennej rhbase_ssh_user
nie tworzy faktycznie użytkownika, ale instaluje rhbase_ssh_key
w katalogu domowym tego użytkownika (~/.ssh/authorized_keys
). W związku z tym rhbase_ssh_user
powinien być nazwą istniejącego użytkownika podaną w rhbase_users
.
(4) Ustawienie zmiennej $TZ
może zmniejszyć liczbę wywołań systemowych. Zobacz https://blog.packagecloud.io/eng/2017/02/21/set-environment-variable-save-thousands-of-system-calls/
Włączanie repozytoriów
Włącz repozytoria (zainstalowane, ale wyłączone) poprzez określenie rhbase_enable_repos
jako listy słowników z kluczami name:
(wymagany) i section:
(opcjonalny), np.:
rhbase_enable_repos:
- name: CentOS-fasttrack
section: fasttrack
- name: epel-testing
Gdy sekcja nie jest określona, domyślnie jest ustawiana na nazwę repozytorium.
Dodawanie użytkowników
Użytkownicy są określani przez słowniki w następujący sposób:
rhbase_users:
- name: johndoe
comment: 'John Doe'
groups:
- users
- devs
password: '$6$WIFkXf07Kn3kALDp$fHbqRKztuufS895easdT [...]'
- name: janedoe
Jedynym obowiązkowym kluczem jest name
.
Klucz | Wymagany | Domyślny | Uwagi |
---|---|---|---|
name |
tak | - | Nazwa użytkownika |
comment |
nie | '' | Tekst komentarza |
shell |
nie | '/bin/bash' | Powłoka poleceń użytkownika |
groups |
nie | [] | Grupy, do których ten użytkownik ma być dodany (1) |
password |
nie | '!!' | Hasło użytkownika (2) |
Uwagi:
(1) Jeśli chcesz uczynić użytkownika administratorem, upewnij się, że jest członkiem grupy wheel
(zobacz Podręcznik administratora systemu RedHat.
(2) Hasło powinno być określone jako hash, jak zwracany przez crypt(3), w formie $algo$salt$hash
. Dla testów i maszyn VMs proof-of-concept można skorzystać z https://www.mkpasswd.net/ do generowania hashy w odpowiedniej formie. Typowe typy hashy dla Linuksa to MD5 (crypt-md5, hashe zaczynające się od $1$
) i SHA-512 (crypt-sha-512, hashe zaczynające się od $6$
).
Zależności
Brak zależności.
Przykładowy playbook
Wkrótce
Testowanie
Wkrótce
Wkład
Problemy, prośby o funkcje, pomysły są mile widziane i mogą być zgłaszane w sekcji Problemy.
Prośby o scalenie są również bardzo mile widziane. Najlepszym sposobem na przesłanie PR jest najpierw utworzenie forka tego projektu Github, a następnie utworzenie gałęzi tematycznej dla proponowanej zmiany i wypushowanie tej gałęzi do własnego forka. Github może następnie łatwo utworzyć PR na podstawie tej gałęzi. Nie zapomnij dodać swojego imienia do listy współtwórców poniżej!
Licencja
BSD
Współtwórcy
- Michael Cleary (utrzymujący)
Oryginalni Współtwórcy
- Bert Van Vreckem
- Jeroen De Meerleer
- Sebastien Nussbaum
Base setup of a server with a RedHat-based Linux distribution with the systemd init system.
ansible-galaxy install clusterapps.rhbase