timorunge.freeipa_server
freeipa_server
Diese Rolle installiert und konfiguriert den FreeIPA-Server nach deinen Bedürfnissen.
Dieses Playbook kümmert sich um die Initialisierung des Kerberos-Admin-Benutzers (Benutzername: admin
, das Passwort ist das, welches du in freeipa_server_admin_password
festlegst).
In Kombination mit freeipa (Github) ist es möglich (und getestet), freeipa_server
mit der neuesten Version von FreeIPA selbst auf Ubuntu >= 18.04 zu verwenden (schau dir den Beispielbereich an).
Unterstützt kein Ubuntu 20.04
Ubuntu 20.04 hat das Paket freeipa-server nicht.
Anforderungen
Diese Rolle benötigt Ansible 2.5.0 oder höher.
Du kannst einfach pip verwenden, um eine stabile Version zu installieren (und festzulegen):
pip install ansible==2.7.7
Alle Plattformanforderungen sind in der Metadatei aufgeführt.
Installation
ansible-galaxy install timorunge.freeipa_server
Rollenspezifische Variablen
Es ist erforderlich, die folgenden Variablen festzulegen, um diese Rolle zum Laufen zu bringen (ohne Anpassungen). Diese Variablen haben keine Standardwerte:
# Admin-Benutzer Kerberos-Passwort - mindestens 8 Zeichen
# Typ: Str
freeipa_server_admin_password: Passw0rd
# Primäre DNS-Domain der IPA-Implementierung
# Typ: Str
freeipa_server_domain: example.com
# Verzeichnis-Manager Passwort - mindestens 8 Zeichen
# Typ: Str
freeipa_server_ds_password: Passw0rd
# Der Hostname dieses Geräts (FQDN)
# Typ: Str
freeipa_server_fqdn: ipa.example.com
# Master-Server IP-Adresse
# Typ: Str
freeipa_server_ip: 172.20.0.2
# Kerberos-Realm-Name der IPA-Implementierung
# Typ: Str
freeipa_server_realm: EXAMPLE.COM
Die Variablen, die an diese Rolle weitergegeben werden können, und eine kurze Beschreibung sind wie folgt. (Für alle Variablen sieh dir defaults/main.yml an)
# Aktivieren/Deaktivieren des Verwalten des RedHat EPEL-Repositories
# Typ: Bool
freeipa_server_enable_epel_repo: true
# Automatisches Setzen eines Eintrags in /etc/hosts
# Typ: Bool
freeipa_server_manage_host: true
# Auswahl des Installations Typs des FreeIPA Servers (master/replica)
# Typ: Str
freeipa_server_type: master
# FQDN des Master-FreeIPA-Servers
# Typ: Str
freeipa_server_master_fqdn: ''
# Der Basisbefehl für die FreeIPA-Installation
# 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' }}
# Die Standardoptionen für die FreeIPA-Installation
# Typ: Liste
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"
Beispiele
Um das Dokument schlank zu halten, werden die Installationsoptionen gekürzt. Du kannst die Installationsoptionen entweder in diesem Dokument oder in den Online-Man-Seiten für ipa-server-install finden.
1) Installiere den FreeIPA-Server als Master mit den Standardeinstellungen
- 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) Installiere den FreeIPA-Server als Replica mit den Standardeinstellungen
- 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) Installiere den FreeIPA-Server und aktiviere ihn automatisch bei allen (IPv4) Netzwerkschnittstellen
Du solltest trotzdem freeipa_server_ip
festlegen, wenn du freeipa_server_manage_host
verwenden möchtest.
- 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) Installiere den FreeIPA-Server mit benutzerdefinierten Installationsoptionen
- 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
FreeIPA-Server Installationsoptionen
Eine Übersicht über die Installationsoptionen für ipa-server-install (4.6.4).
Nutzung: ipa-server-install [optionen]
Optionen:
--version zeigt die Versionsnummer des Programms an und beendet
-h, --help zeigt diese Hilfemeldung an und beendet
-U, --unattended unbeaufsichtigte (de)Installation fragt nie den Benutzer
--uninstall deinstalliere eine bestehende Installation. Die Deinstallation kann
mit der Option --unattended durchgeführt werden
Grundlegende Optionen:
-p DM_PASSWORD, --ds-password=DM_PASSWORD
Passwort des Verzeichnismanagers
-a ADMIN_PASSWORD, --admin-password=ADMIN_PASSWORD
Passwort des Admin-Benutzers Kerberos
--ip-address=IP_ADDRESS
IP-Adresse des Master-Servers. Diese Option kann mehrere Male verwendet werden
-n DOMAIN_NAME, --domain=DOMAIN_NAME
primäre DNS-Domain der IPA-Implementierung (nicht unbedingt verwandt mit dem aktuellen Hostnamen)
-r REALM_NAME, --realm=REALM_NAME
Kerberos-Realm-Name der IPA-Implementierung (typischerweise ein in Großbuchstaben geschriebener Name der primären DNS-Domain)
--hostname=HOST_NAME
vollqualifizierter Name dieses Hosts
--ca-cert-file=FILE
Datei mit CA-Zertifikaten für die Dienstzertifikatdateien
--no-host-dns Verwende während der Installation keinen DNS für die Hostnamenssuche
Serveroptionen:
--setup-adtrust konfiguriere die AD-Vertraulichkeitsfähigkeit
--setup-kra konfiguriere eine Dogtag KRA
--setup-dns konfiguriere Bind mit unserer Zone
--idstart=IDSTART Der Startwert für den ID-Bereich (standardmäßig zufällig)
--idmax=IDMAX Der Maximalwert für den ID-Bereich (standardmäßig: idstart+199999)
--no-hbac-allow Keine Installation der Regel allow_all HBAC
--no-pkinit deaktiviert die pkinit-Einrichtungs Schritte
--no-ui-redirect Leitet nicht automatisch auf die Web-Oberfläche um
--dirsrv-config-file=FILE
Der Pfad zur LDIF-Datei, die zum Ändern der Konfiguration von dse.ldif während der Installation der Verzeichnisserverinstanz verwendet wird
SSL-Zertifikatsoptionen:
--dirsrv-cert-file=FILE
Datei mit dem SSL-Zertifikat des Verzeichnisservers und dem privaten Schlüssel
--http-cert-file=FILE
Datei mit dem SSL-Zertifikat des Apache-Servers und dem privaten Schlüssel
--pkinit-cert-file=FILE
Datei mit dem SSL-Zertifikat und dem privaten Schlüssel des Kerberos KDC
--dirsrv-pin=PIN Das Passwort zum Entsperren des privaten Schlüssels des Verzeichnisservers
--http-pin=PIN Das Passwort zum Entsperren des privaten Schlüssels des Apache-Servers
--pkinit-pin=PIN Das Passwort zum Entsperren des privaten Schlüssels des Kerberos KDC
--dirsrv-cert-name=NAME
Name des SSL-Zertifikats des Verzeichnisservers, das installiert werden soll
--http-cert-name=NAME
Name des SSL-Zertifikats des Apache-Servers, das installiert werden soll
--pkinit-cert-name=NAME
Name des SSL-Zertifikats des Kerberos KDC, das installiert werden soll
Client-Optionen:
--mkhomedir Erstelle Home-Verzeichnisse für Benutzer bei ihrer ersten Anmeldung
-N, --no-ntp kein NTP konfigurieren
--ssh-trust-dns konfiguriere OpenSSH-Client, um DNS SSHFP-Datensätze zu vertrauen
--no-ssh konfiguriere OpenSSH-Client nicht
--no-sshd konfiguriere OpenSSH-Server nicht
--no-dns-sshfp keine DNS SSHFP-Datensätze automatisch erstellen
Optionen für das Zertifikatsystem:
--external-ca Generiere einen CSR für das IPA-CA-Zertifikat, das von einer externen CA signiert wird
--external-ca-type={generic,ms-cs}
Typ der externen CA
--external-ca-profile=EXTERNAL_CA_PROFILE
Gib das Zertifikatsprofil / die Vorlage an, die bei der externen CA verwendet werden soll
--external-cert-file=FILE
Datei mit dem IPA-CA-Zertifikat und der externen CA-Zertifikatkette
--subject-base=SUBJECT_BASE
Die Zertifikat-Sujet-Basis (standardmäßig O=<realm-name>). RDNs sind in LDAP-Reihenfolge (der spezifischste RDN zuerst).
--ca-subject=CA_SUBJECT
Der Betreff-DN des CA-Zertifikats (standardmäßig CN=Certificate Authority,O=<realm-name>). RDNs sind in LDAP-Reihenfolge (der spezifischste RDN zuerst).
--ca-signing-algorithm={SHA1withRSA,SHA256withRSA,SHA512withRSA}
Signaturalgorithmus des IPA-CA-Zertifikats
DNS-Optionen:
--allow-zone-overlap
Erstelle eine DNS-Zone, auch wenn sie bereits existiert
--reverse-zone=REVERSE_ZONE
Die zu verwendende umgekehrte DNS-Zone. Diese Option kann mehrere Male verwendet werden
--no-reverse Keine neue umgekehrte DNS-Zone erstellen
--auto-reverse Notwendige umgekehrte Zonen erstellen
--zonemgr=ZONEMGR E-Mail-Adresse des DNS-Zonenmanagers. Standardmäßig hostmaster@DOMAIN
--forwarder=FORWARDERS
Füge einen DNS-Forwarder hinzu. Diese Option kann mehrere Male verwendet werden
--no-forwarders Keine DNS-Forwarder hinzufügen, stattdessen Rootserver verwenden
--auto-forwarders Verwende DNS-Forwarder, die in /etc/resolv.conf konfiguriert sind
--forward-policy={first,only}
DNS-Weiterleitungsrichtlinie für globale Forwarder
--no-dnssec-validation
Deaktiviert die DNSSEC-Validierung
AD-Vertrauensoptionen:
--enable-compat Unterstützung für vertrauenswürdige Domänen für alte Clients aktivieren
--netbios-name=NETBIOS_NAME
NetBIOS-Name der IPA-Domain
--rid-base=RID_BASE
Startwert für das Abbilden von UIDs und GIDs auf RIDs
--secondary-rid-base=SECONDARY_RID_BASE
Startwert des sekundären Bereichs für das Abbilden von UIDs und GIDs auf RIDs
Deinstallationsoptionen:
--ignore-topology-disconnect
Überprüfe nicht, ob die Deinstallation des Servers die Topologie trennt (Domänenelement 1+)
--ignore-last-of-role
Überprüfe nicht, ob die Deinstallation des Servers den letzten CA/DNS-Server oder DNSSec-Master entfernt (Domänenelement 1+)
Logging- und Ausgabeoptionen:
-v, --verbose Debugging-Informationen ausgeben
-d, --debug Alias für --verbose (veraltet)
-q, --quiet Nur Fehler ausgeben
--log-file=FILE In die angegebene Datei protokollieren
Testing
Das Testen wird mit Vagrant durchgeführt (Vagrant installieren), was die folgenden virtuellen Maschinen hochbringt:
- EL
- 7
- Fedora
- 26
- 27
- Ubuntu
- 16.04 LTS (Xenial Xerus)
- 17.10 (Artful Aardvark)
- 18.04 LTS (Bionic Beaver)
Die neueste stabile Version von Ansible ist auf allen virtuellen Maschinen installiert und wird auf ein Test-Playbook lokal angewendet.
Für weitere Details und zusätzliche Überprüfungen schau dir den Vagrant-Einstiegspunkt an.
# Testen in allen verfügbaren Vagrant-Maschinen:
# Das kann eine Weile dauern. Hol dir einen Kaffee. Oder zwei. Oder zweiundvierzig.
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
Wenn Vagrant Schwierigkeiten hat, die Verzeichnisse zu mounten, solltest du sicherstellen, dass du die VirtualBox Guest Additions installiert hast.
Travis-Tests werden mit Docker und docker_test_runner durchgeführt. Die Tests auf Travis führen eine Überprüfung auf Syntax und Qualität durch.
Für weitere Details und zusätzliche Überprüfungen schau dir die Konfiguration des docker_test_runner und den Docker-Einstiegspunkt an.
# Lokales Testen:
curl https://raw.githubusercontent.com/timorunge/docker-test-runner/master/install.sh | sh
./docker_test_runner.py -f tests/docker_test_runner.yml
Sicherheit
Dieses Playbook kümmert sich nicht um die Sicherung des FreeIPA-Servers, was du z.B. mit firewalld oder iptables tun kannst.
Je nach deiner Einrichtung musst du die folgenden Ports öffnen:
TCP-Ports:
- 80, 443: HTTP/HTTPS
- 389, 636: LDAP/LDAPS
- 88, 464: Kerberos
- 53: Bind
UDP-Ports:
- 88, 464: Kerberos
- 53: Bind
Backup
Stelle sicher, dass du die CA-Zertifikate in /root/cacert.p12 sichert. Diese Dateien sind erforderlich, um Replikate zu erstellen. Das Passwort für diese Dateien ist das Passwort des Verzeichnismanagers (freeipa_server_ds_password
).
Auf FreeIPA findest du auch eine allgemeine Backup- und Wiederherstellungs-Seite, die die wichtigsten Themen behandelt.
Es gibt eine Ansible-Rolle, die einige grundlegende Backups durchführt: FreeIPA Server Backup (Github Repo).
Abhängigkeiten
Keine
Lizenz
BSD 3-Klausel "Neu" oder "Überarbeitet" Lizenz
Autoreninformationen
- Timo Runge