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

Build Status

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
Über das Projekt

FreeIPA Identity Management Server provisioning.

Installieren
ansible-galaxy install timorunge.freeipa_server
Lizenz
bsd-3-clause
Downloads
12.5k
Besitzer