GuillaumeSmaha.gluu-setup
Ansible Gluu: Einrichtung Rolle
gluu-setup ist eine Ansible-Rolle, um einen Gluu-Server, seine Module und das Zertifikat einfach zu installieren.
Im Cluster-Modus wird die Rolle den SSH-Schlüssel installieren, um den Zugriff durch den Cluster-Manager zu ermöglichen, öffentliche Zertifikate zwischen allen Servern zu verteilen, den LDAP-Server zu aktualisieren, um externe Verbindungen zu akzeptieren, und die Konfiguration zu aktualisieren, um alle LDAP-Server zu verwenden.
Um die Funktionen des Cluster-Modus in dieser Rolle zu nutzen, müssen alle Gluu-Server in der Gruppe gluu-servers
sein und der Gluu-Cluster-Manager muss in der Gruppe gluu-cluster-manager
sein.
- Anforderungen
- Installation
- Aktualisierung
- Rollen-Variablen
- Bereitstellung
- Beispiel-Playbook
- Beispielprojekte
Geschichte
Der Open-Source-Authentifizierungs- und API-Zugriffsmanagement-Server von Gluu ermöglicht es Organisationen, Single Sign-On, starke Authentifizierung und Zentralisierung anzubieten.
Anforderungen
Um bereitzustellen, benötigen Sie:
- Ansible auf Ihrer Bereitstellungsmaschine
- Zusätzlich müssen Sie diese Python-Abhängigkeit installieren:
- dnspython
$ pip install -r requirements.txt
Installation
gluu-setup ist eine Ansible-Rolle, die weltweit über Ansible Galaxy verteilt wird. Um die Rolle gluu-setup zu installieren, können Sie den folgenden Befehl verwenden.
$ ansible-galaxy install GuillaumeSmaha.gluu-setup
Aktualisierung
Wenn Sie die Rolle aktualisieren möchten, müssen Sie beim Installieren den Parameter --force angeben. Bitte überprüfen Sie den folgenden Befehl:
$ ansible-galaxy install --force GuillaumeSmaha.gluu-setup
Rollen-Variablen
vars:
# ===================================
# Gluu auf einem einzelnen Knoten
# ===================================
# Definieren Sie eine benutzerdefinierte Version des zu installierenden Pakets.
# Um eine Liste der verfügbaren Paketversionen zu erhalten, besuchen Sie: https://gluu.org/docs/ce/
gluu_version: 3.1.7
# Definieren Sie den Hostnamen, der von Gluu verwendet wird.
gluu_hostname: '{{ ansible_ssh_host }}'
# IP-Adresse des Hosts.
gluu_ip: '{{ lookup("dig", "{{ gluu_internal_hostname }}.") | regex_replace("^NXDOMAIN$", "") | default(gluu_internal_hostname, true) }}'
# Liste der zu installierenden Module
gluu_modules:
- oxauth
- oxtrust
- ldap
- httpd
# Verfügbare Module:
# - download_wars # Zwingt zum Herunterladen von WAR-Dateien
# - oxauth
# - oxtrust
# - ldap
# - httpd
# - saml
# - asimba
# - cas
# - oxauth-rp
# - passport
# - jce
# Wörterbuch der Zertifikate für Gluu.
# Sie können den Schlüssel hinzufügen, den Sie möchten.
# Jeder Schlüssel muss den Schlüssel `publicKey` und optional den Schlüssel `privateKey` mit dem Pfad zu den Zertifikatsdateien enthalten.
# Wenn gluu_cluster = True, können Sie den Parameter `shareable` festlegen, um den öffentlichen Schlüssel in allen anderen Gluu-Servern zu kopieren.
# Liste der offiziellen Schlüssel für Gluu:
# - asimba
# - httpd
# - idp-encryption
# - idp-signing
# - openldap
# - shipIDP
# Beispiel:
# gluu_certificates:
# idp-signing:
# publicKey: "{{ playbook_dir }}/templates/{{ inventory_dir | basename }}/certificates/idp-signing.crt"
# privateKey: "{{ playbook_dir }}/templates/{{ inventory_dir | basename }}/certificates/idp-signing.key"
gluu_certificates:
# Typ des LDAP-Servers
# Seit Gluu 3.1.2 können Sie den Typ des LDAP-Servers auswählen.
# Dieses Skript unterstützt nur openLDAP für die LDAP-Replikation.
# Verfügbare LDAP-Server:
# - openldap
# - opendj
# Standard: openldap
gluu_ldap_server: openldap
# Benutzerdefiniertes Zertifikat für LDAP-Server & Client
# Gluu oxAuth/oxTrust-Client benötigt eine PKCS12-Datei mit privatem und öffentlichem Schlüssel.
# Standard:
gluu_ldap_certificate:
cert_ca_file:
cert_file:
cert_key_file:
# Datei zur Anpassung des LDAP-Schemas
gluu_ldap_custom_schema_file: custom_schema.json.default
# Sie können das LDAP-Passwort festlegen.
# Standard: Zufälliges Passwort
gluu_ldap_password:
# Basis-Inum von Gluu
# Inums in Gluu sind in 3 Teile unterteilt:
# - Basis
# - Elterntyp für Organisation oder Gerät
# - Elternwert für Organisation oder Gerät
# - Typ (nur für Organisation)
# - Wert (nur für Organisation)
# Beispiel: @!0000.1111.2222.3333!0001!1111.2222!0000!1111.2222 kann so aufgeteilt werden:
# - Basis: @!0000.1111.2222.3333
# - Elterntyp: !0001!
# - Elternwert: 1111.2222
# - Typ: !0000!
# - Wert: 1111.2222
# Sie finden jeden Typ in der Dokumentation von Gluu: https://gluu.org/docs/ce/api-guide/api/
# Standard: Zufälliger Wert
gluu_inum_base:
# Organisations-Inum
# Der Wert muss den Wert von gluu_inum_base enthalten!
# Beispiel: gluu_inum_org: "{{ gluu_inum_base }}!0001!1111.2222"
# Standard: Zufälliger Wert
gluu_inum_org:
# Geräte-Inum
# Der Wert muss den Wert von gluu_inum_base enthalten!
# Beispiel: gluu_inum_appliance: "{{ gluu_inum_base }}!0002!1111.2222"
# Standard: Zufälliger Wert
gluu_inum_appliance:
# Eigenschaften für die selbstgenerierten Zertifikate (selbstsigniert)
gluu_certificate_properties:
org_name: Organisation
country_code: DE
city: München
state: BY
# ===================================
# Gluu auf mehreren Knoten (Cluster)
# ===================================
# Definieren Sie, ob der Server in einem Cluster ist.
# Wenn gluu_cluster = True und wenn Sie einen Cluster-Manager in der Gruppe "gluu-cluster-manager" installiert haben; dann wird der SSH-Öffentliche Schlüssel des Cluster-Managers auf jeden Gluu-Server kopiert.
gluu_cluster: False
# Nur wenn gluu_cluster = True.
# Zweck dieses Parameters ist es, den internen Hostnamen und den externen Hostnamen (gluu_hostname) zu unterscheiden.
# Der externe Hostname wird von außen aufgerufen und ist ein Lastenausgleich, wie z.B. nginx. Alle Gluu-Server werden mit dem externen Hostnamen eingerichtet.
# Aber um alle Knoten des Clusters mit den LDAP-Servern zu verbinden, benötigt es einen internen Hostnamen, der nicht den externen Hostnamen aufruft.
# Standardmäßig ist er gleich gluu_hostname
gluu_internal_hostname: '{{ gluu_hostname }}'
# Wenn gluu_cluster = True, definieren Sie, ob es mehrere LDAP-Server mit Replikation gibt.
gluu_cluster_ldap_replication: False
# Wenn gluu_cluster = True und gluu_cluster_ldap_replication = True, definieren Sie, ob die LDAP-Konfiguration von Ansible oder mit der Web-GUI des Cluster-Managers eingerichtet wird.
# Bei gluu_cluster_ldap_replication = False ermöglicht dieser Parameter die Konfiguration EXTRA_SLAPD_ARGS="-F /opt/symas/etc/openldap/slapd.d".
# Bei gluu_cluster_ldap_replication = True wird die slapd.conf-Datei bearbeitet, um die Replikation zwischen allen Servern mit dem LDAP-Modul einzustellen.
gluu_cluster_ldap_replication_without_cluster_manager: False
# Wenn gluu_cluster = True, erlaubt dieser Parameter, als Standardkonfiguration eine andere Hostkonfiguration festzulegen.
# Um es zu verwenden, müssen Sie auf die Ausführungsreihenfolge von Ansible für jeden Host achten.
# Der Inhalt der Datei /opt/gluu-server-{{ gluu_version }}/install//community-edition-setup/setup.properties.last des definierten Hosts wird in die setup.properties kopiert.
# Ein Beispiel nach der Installation erlaubt es, einen Spiegelserver mit denselben Konfigurationen wie der Hauptserver zu erstellen.
gluu_install_from: main
# Wenn gluu_cluster = True, können Sie die Hostnamen der externen LDAP-Server von Gluu festlegen.
# Standardmäßig Liste aller Server mit dem LDAP-Modul installiert.
# Ein einfaches Verbraucher-Server, das nur mit dem oxauth-Modul installiert ist, verwendet dieses Parameter mit den Hostnamen der beiden Hauptserver.
# Beispiel:
# gluu_ldap_hostname: 192.168.1.101:1636,192.168.1.102:1636
gluu_ldap_hostname:
Bereitstellung
Um zu deployen, müssen Sie einige Schritte durchführen:
- Erstellen Sie eine neue
hosts
-Datei. Überprüfen Sie die Ansible-Inventardokumentation, wenn Sie Hilfe benötigen. - Erstellen Sie ein neues Playbook für die Bereitstellung Ihrer App, z.B.
deploy.yml
- Richten Sie die Rollenvariablen ein (siehe Rollen-Variablen)
- Schließen Sie die Rolle
GuillaumeSmaha.gluu-setup
als Teil eines Plays ein - Führen Sie das Bereitstellungs-Playbook aus
ansible-playbook -i hosts deploy.yml
Wenn alles korrekt eingerichtet ist, installiert dieser Befehl den Gluu-Cluster-Manager auf dem Host.
Beispiel-Playbook
Im Ordner Beispiel können Sie ein Beispielprojekt überprüfen, das zeigt, wie man bereitstellt.
Um es auszuführen, müssen Sie Vagrant und die Rolle installiert haben. Bitte überprüfen Sie https://www.vagrantup.com für weitere Informationen über Vagrant und unseren Installationsbereich.
$ cd example
$ vagrant plugin install vagrant-lxc
$ vagrant plugin install vagrant-hostmanager
$ vagrant up --provider=lxc
$ ansible-galaxy install GuillaumeSmaha.gluu-setup
$ ansible-playbook -i env/ubuntu deploy.yml
$ ansible-playbook -i env/centos deploy.yml
Zugriff auf Gluu erhalten Sie über:
oder
Beispielprojekte
Sie finden ein vollständiges Beispiel eines Playbooks hier:
ansible-galaxy install GuillaumeSmaha.gluu-setup