timorunge.freeipa_server
serwer_freeipa
Ta rola instaluje i konfiguruje serwer FreeIPA zgodnie z Twoimi potrzebami.
Ten skrypt zajmuje się inicjalizacją użytkownika administracyjnego Kerberos
(nazwa użytkownika: admin
, hasło to to, co ustawiasz w
freeipa_server_admin_password
).
W połączeniu z
freeipa
(Github) można
używać freeipa_server
z najnowszą wersją
FreeIPA na Ubuntu >= 18.04 (sprawdź sekcję
przykłady).
Nie obsługuje Ubuntu 20.04
Ubuntu 20.04 nie ma pakietu freeipa-server.
Wymagania
Ta rola wymaga Ansible 2.5.0 lub nowszego.
Możesz łatwo zainstalować (i określić) stabilną wersję za pomocą pip:
pip install ansible==2.7.7
Wszystkie wymagania platformowe są wymienione w pliku metadanych.
Instalacja
ansible-galaxy install timorunge.freeipa_server
Zmienne roli
Należy ustawić następujące zmienne, aby uruchomić tę rolę (bez dostosowywania). Te zmienne nie mają domyślnych wartości:
# Hasło użytkownika administracyjnego kerberos - co najmniej 8 znaków
# Typ: Str
freeipa_server_admin_password: Passw0rd
# Główną domena DNS wdrożenia IPA
# Typ: Str
freeipa_server_domain: example.com
# Hasło dla Directory Manager - co najmniej 8 znaków
# Typ: Str
freeipa_server_ds_password: Passw0rd
# Nazwa hosta tej maszyny (FQDN)
# Typ: Str
freeipa_server_fqdn: ipa.example.com
# Adres IP serwera głównego
# Typ: Str
freeipa_server_ip: 172.20.0.2
# Nazwa królestwa Kerberos wdrożenia IPA
# Typ: Str
freeipa_server_realm: EXAMPLE.COM
Zmienne, które można przekazać do tej roli, oraz ich krótki opis są następujące. (Aby uzyskać wszystkie zmienne, sprawdź defaults/main.yml)
# Włącz/Wyłącz zarządzanie repozytorium RedHat epel
# Typ: Bool
freeipa_server_enable_epel_repo: true
# Automatyczne ustawianie wpisu w /etc/hosts
# Typ: Bool
freeipa_server_manage_host: true
# Wybór rodzaju instalacji serwera FreeIPA (master/replica)
# Typ: Str
freeipa_server_type: master
# FQDN serwera głównego FreeIPA
# Typ: Str
freeipa_server_master_fqdn: ''
# Podstawowa komenda dla instalacji FreeIPA
# Typ: Str
freeipa_server_install_base_command: ipa-{{ 'server' if freeipa_server_type == 'master' else 'replica' }}-install --unattended {{ '--server=' + freeipa_server_master_fqdn if freeipa_server_type == 'replica' }}
# Domyślne opcje instalacji FreeIPA
# Typ: Lista
freeipa_server_install_options:
- "--realm={{ freeipa_server_realm }}"
- "--domain={{ freeipa_server_domain }}"
- "--setup-dns"
- "--ds-password={{ freeipa_server_ds_password }}"
- "--admin-password={{ freeipa_server_admin_password }}"
- "--mkhomedir"
- "--hostname={{ freeipa_server_fqdn | default(ansible_fqdn) }}"
- "--ip-address={{ freeipa_server_ip }}"
- "--no-host-dns"
- "--no-ntp"
- "--idstart=5000"
- "--ssh-trust-dns"
- "--forwarder=8.8.8.8"
- "--auto-forwarders"
Przykłady
Aby dokument był zwięzły, opcje instalacji zostały pominięte. Możesz znaleźć opcje instalacji w tym dokumencie lub w online man pages dla ipa-server-install.
1) Instalacja serwera FreeIPA jako master z domyślnymi ustawieniami
- hosts: freeipa-server
vars:
freeipa_server_admin_password: Passw0rd
freeipa_server_domain: example.com
freeipa_server_ds_password: Passw0rd
freeipa_server_fqdn: ipa-master.example.com
freeipa_server_ip: 172.20.0.2
freeipa_server_realm: EXAMPLE.COM
roles:
- timorunge.freeipa_server
2) Instalacja serwera FreeIPA jako replica z domyślnymi ustawieniami
- hosts: freeipa-server
vars:
freeipa_server_type: replica
freeipa_server_master_fqdn: ipa-master.example.com
freeipa_server_admin_password: Passw0rd
freeipa_server_domain: example.com
freeipa_server_ds_password: Passw0rd
freeipa_server_fqdn: ipa-replica.example.com
freeipa_server_ip: 172.20.0.3
freeipa_server_realm: EXAMPLE.COM
roles:
- timorunge.freeipa_server
3) Instalacja serwera FreeIPA i automatyczne włączanie we wszystkich interfejsach sieciowych (IPv4)
Należy nadal ustawić freeipa_server_ip
, jeśli chcesz używać freeipa_server_manage_host
.
- hosts: freeipa-server
vars:
freeipa_server_admin_password: Passw0rd
freeipa_server_domain: example.com
freeipa_server_ds_password: Passw0rd
freeipa_server_fqdn: ipa.example.com
freeipa_server_ip: 172.20.0.3
freeipa_server_realm: EXAMPLE.COM
freeipa_server_install_options:
- "--ip-address={{ ansible_all_ipv4_addresses | join(' --ip-address=') }}"
roles:
- timorunge.freeipa_server
4) Instalacja serwera FreeIPA z niestandardowymi opcjami instalacyjnymi
- hosts: freeipa-server
vars:
freeipa_server_admin_password: Passw0rd
freeipa_server_domain: example.com
freeipa_server_ds_password: Passw0rd
freeipa_server_fqdn: ipa.example.com
freeipa_server_ip: 172.20.0.2
freeipa_server_realm: EXAMPLE.COM
freeipa_server_install_options:
- "--realm={{ freeipa_server_realm }}"
- "--domain={{ freeipa_server_domain }}"
- "--setup-dns"
- "--ds-password {{ freeipa_server_ds_password }}"
- "--admin-password {{ freeipa_server_admin_password }}"
- "--mkhomedir"
- "--hostname={{ freeipa_server_fqdn | default(ansible_fqdn) }}"
- "--ip-address={{ freeipa_server_ip }}"
- "--ip-address=10.0.0.2"
- "--ip-address=192.168.20.2"
- "--no-host-dns"
- "--no-ntp"
- "--idstart=5000"
- "--ssh-trust-dns"
- "--forwarder=8.8.8.8"
- "--auto-forwarders"
- "--no-ui-redirect"
- "--no-ssh"
- "--no-sshd"
roles:
- timorunge.freeipa_server
Opcje instalacji serwera FreeIPA
Przegląd opcji instalacji dla ipa-server-install (4.6.4).
Użycie: ipa-server-install [opcja]
Opcje:
--version pokaż numer wersji programu i zakończ
-h, --help pokaż ten komunikat i zakończ
-U, --unattended nie zapytuj użytkownika przy (de)instalacji
--uninstall deinstaluj istniejącą instalację. Deinstalację można
uruchomić z opcją --unattended
Podstawowe opcje:
-p DM_PASSWORD, --ds-password=DM_PASSWORD
Hasło Directory Managera
-a ADMIN_PASSWORD, --admin-password=ADMIN_PASSWORD
hasło użytkownika administracyjnego kerberos
--ip-address=IP_ADDRESS
Adres IP serwera głównego. Można używać tej opcji
wielokrotnie
-n DOMAIN_NAME, --domain=DOMAIN_NAME
główna domena DNS wdrożenia IPA (niekoniecznie
związana z bieżącą nazwą hosta)
-r REALM_NAME, --realm=REALM_NAME
nazwa królestwa Kerberos wdrożenia IPA (zwykle
nazwa głównej domeny DNS napisana wielkimi literami)
--hostname=HOST_NAME
w pełni kwalifikowana nazwa tego hosta
--ca-cert-file=FILE
Plik zawierający certyfikaty CA dla certyfikatów
serwisowych
--no-host-dns Nie używaj DNS do wyszukiwania nazwy hosta podczas instalacji
Opcje serwera:
--setup-adtrust skonfiguruj możliwość zaufania AD
--setup-kra skonfiguruj dogtag KRA
--setup-dns skonfiguruj bind ze strefą
--idstart=IDSTART Wartość początkowa zakresu ID (domyślnie losowa)
--idmax=IDMAX Maksymalna wartość zakresu ID (domyślnie:
idstart+199999)
--no-hbac-allow Nie instaluj reguły allow_all HBAC
--no-pkinit wyłącza kroki konfiguracji pkinit
--no-ui-redirect Nie przekierowuj automatycznie do interfejsu internetowego
--dirsrv-config-file=FILE
Ścieżka do pliku LDIF, który będzie użyty do
modyfikacji konfiguracji dse.ldif podczas instalacji
instancji serwera katalogowego
Opcje certyfikatu SSL:
--dirsrv-cert-file=FILE
Plik zawierający certyfikat SSL Serwera Katalogowego
i klucz prywatny
--http-cert-file=FILE
Plik zawierający certyfikat SSL Serwera Apache'a i
klucz prywatny
--pkinit-cert-file=FILE
Plik zawierający certyfikat SSL KDC Kerberosa i
klucz prywatny
--dirsrv-pin=PIN Hasło do odblokowania klucza prywatnego Serwera Katalogowego
--http-pin=PIN Hasło do odblokowania klucza prywatnego Serwera Apache'a
--pkinit-pin=PIN Hasło do odblokowania klucza prywatnego KDC Kerberosa
--dirsrv-cert-name=NAME
Nazwa certyfikatu SSL Serwera Katalogowego do
zainstalowania
--http-cert-name=NAME
Nazwa certyfikatu SSL Serwera Apache'a do zainstalowania
--pkinit-cert-name=NAME
Nazwa certyfikatu SSL KDC Kerberosa do zainstalowania
Opcje klienta:
--mkhomedir utwórz katalogi domowe dla użytkowników przy ich
pierwszym logowaniu
-N, --no-ntp nie konfiguruj ntp
--ssh-trust-dns skonfiguruj klienta OpenSSH, aby ufał rekordom SSHFP DNS
--no-ssh nie konfiguruj klienta OpenSSH
--no-sshd nie konfiguruj serwera OpenSSH
--no-dns-sshfp nie twórz automatycznie rekordów SSHFP DNS
Opcje systemu certyfikatów:
--external-ca Wygeneruj CSR dla certyfikatu CA IPA, który ma być
podpisany przez zewnętrzne CA
--external-ca-type={generic,ms-cs}
Typ zewnętrznego CA
--external-ca-profile=EXTERNAL_CA_PROFILE
Określa profil/format certyfikatu do użycia w
zewnętrznej CA
--external-cert-file=FILE
Plik zawierający certyfikat CA IPA i łańcuch certyfikatów
zewnętrznego CA
--subject-base=SUBJECT_BASE
Podstawowy temat certyfikatu (domyślnie O=<nazwa-królestwa>).
RDN-y są w kolejności LDAP (najbardziej specyficzny RDN jako pierwszy).
--ca-subject=CA_SUBJECT
DN tematu certyfikatu CA (domyślnie CN=Certificate
Authority,O=<nazwa-królestwa>). RDN-y są w kolejności LDAP
(najbardziej specyficzny RDN jako pierwszy).
--ca-signing-algorithm={SHA1withRSA,SHA256withRSA,SHA512withRSA}
Algorytm podpisywania certyfikatu CA IPA
Opcje DNS:
--allow-zone-overlap
Twórz strefę DNS, nawet jeśli już istnieje
--reverse-zone=REVERSE_ZONE
Odwrócona strefa DNS do użycia. Tę opcję można
używać wielokrotnie
--no-reverse Nie twórz nowej odwróconej strefy DNS
--auto-reverse Utwórz niezbędne odwrócone strefy
--zonemgr=ZONEMGR Adres e-mail zarządcy strefy DNS. Domyślnie
hostmaster@DOMAIN
--forwarder=FORWARDERS
Dodaj przekaznika DNS. Tę opcję można
używać wielokrotnie
--no-forwarders Nie dodawaj żadnych przekazników DNS, użyj serwerów głównych
zamiast tego
--auto-forwarders Użyj przekazników DNS skonfigurowanych w /etc/resolv.conf
--forward-policy={first,only}
Polityka przekazywania DNS dla globalnych przekazników
--no-dnssec-validation
Wyłącz weryfikację DNSSEC
Opcje zaufania AD:
--enable-compat Włącz wsparcie dla zaufanych domen dla starych klientów
--netbios-name=NETBIOS_NAME
Nazwa NetBIOS domeny IPA
--rid-base=RID_BASE
Wartość początkowa mapowania UIDs i GIDs na RIDs
--secondary-rid-base=SECONDARY_RID_BASE
Wartość początkowa drugiego zakresu mapowania UIDs
i GIDs na RIDs
Opcje deinstalacji:
--ignore-topology-disconnect
nie sprawdzaj, czy deinstalacja serwera przerywa
topologię (poziom domeny 1+)
--ignore-last-of-role
nie sprawdzaj, czy deinstalacja serwera usuwa ostatni
serwer CA/DNS lub master DNSSec (poziom domeny 1+)
Opcje logowania i wyjścia:
-v, --verbose wydrukuj informacje diagnostyczne
-d, --debug alias dla --verbose (przestarzałe)
-q, --quiet wyjście tylko błędów
--log-file=FILE loguj do podanego pliku
Testowanie
Testowanie odbywa się za pomocą Vagrant (instalacja Vagrant) który uruchamia następujące maszyny wirtualne:
- EL
- 7
- Fedora
- 26
- 27
- Ubuntu
- 16.04 LTS (Xenial Xerus)
- 17.10 (Artful Aardvark)
- 18.04 LTS (Bionic Beaver)
Na wszystkich maszynach wirtualnych zainstalowano najnowszą stabilną wersję Ansible i stosują skrypt testowy lokalnie.
Szczegóły i dodatkowe kontrole znajdziesz w entrypoint Vagrant.
# Testowanie na wszystkich dostępnych maszynach vagrant:
# To zajmie trochę czasu. Zaparz kawę. Albo dwie. Albo czterdzieści dwie.
cd tests
vagrant up --parallel && vagrant halt
for h in $(vagrant global-status --prune | grep freeipa_server | awk '{print $2}') ; do echo ${h} ; vagrant up --provision ${h} ; vagrant ssh ${h} -c "sudo /vagrant/vagrant-entrypoint.sh" && (echo "$(date): ${h}: pass" >> tests/results.log) || (echo "$(date): ${h}: fail" >> tests/results.log) ; vagrant halt ${h} ; done
vagrant destroy -f
Jeśli Vagrant ma problemy z montowaniem katalogów, upewnij się, że zainstalowałeś VirtualBox Guest Additions.
Testy Travis są wykonywane za pomocą Docker oraz docker_test_runner. Testy w Travis wykonują linter i kontrole składni.
Szczegóły i dodatkowe kontrole znajdziesz w konfiguracji docker_test_runner i w entrypoint Docker.
# Testowanie lokalnie:
curl https://raw.githubusercontent.com/timorunge/docker-test-runner/master/install.sh | sh
./docker_test_runner.py -f tests/docker_test_runner.yml
Bezpieczeństwo
Ten skrypt nie zajmuje się zabezpieczeniem serwera FreeIPA, co można zrobić za pomocą np. firewalld lub iptables.
W zależności od Twojego ustawienia musisz otworzyć następujące porty:
Porty TCP:
- 80, 443: HTTP/HTTPS
- 389, 636: LDAP/LDAPS
- 88, 464: kerberos
- 53: bind
Porty UDP:
- 88, 464: kerberos
- 53: bind
Kopia zapasowa
Upewnij się, że masz kopię zapasową certyfikatów CA przechowywanych w /root/cacert.p12. Te pliki są wymagane do tworzenia replik. Hasło do tych plików to hasło Directory Managera (freeipa_server_ds_password
).
Na FreeIPA znajdziesz również ogólną stronę Kopii zapasowej i Przywracania, która porusza najważniejsze tematy.
Istnieje rola Ansible, która wykonuje podstawowe kopie zapasowe: Kopia zapasowa serwera FreeIPA (Repozytorium Github).
Zależności
Brak
Licencja
Licencja BSD 3-Klausulowa "Nowa" lub "Zrewidowana"
Informacje o autorze
- Timo Runge
FreeIPA Identity Management Server provisioning.
ansible-galaxy install timorunge.freeipa_server