gluu-setup
Ansible Gluu: Установка роли
gluu-setup - это роль Ansible для простой установки сервера Gluu, его модулей и сертификата.
В режиме кластера роль установит SSH-ключ, чтобы разрешить доступ для менеджера кластера, распределит публичные сертификаты между всеми серверами, обновит LDAP-сервер для принятия внешних соединений и обновит конфигурацию для использования всех LDAP-серверов.
Чтобы использовать функциональность режима кластера в этой роли, все сервера Gluu должны быть в группе gluu-servers
,
а менеджер кластера Gluu должен быть в группе gluu-cluster-manager
.
История
Сервер для управления доступом и аутентификацией Gluu с открытым исходным кодом позволяет организациям предлагать единую систему входа, надежную аутентификацию и централизовать управление.
Требования
Для развертывания вам понадобятся:
- Ansible на вашей машине развертывания
- Также нужно установить эту зависимость python:
- dnspython
$ pip install -r requirements.txt
Установка
gluu-setup - это роль Ansible, доступная для установки через Ansible Galaxy. Чтобы установить роль gluu-setup, используйте следующую команду.
$ ansible-galaxy install GuillaumeSmaha.gluu-setup
Обновление
Если вы хотите обновить роль, вам нужно указать параметр --force при установке. Проверьте следующую команду:
$ ansible-galaxy install --force GuillaumeSmaha.gluu-setup
Переменные роли
vars:
# ===================================
# Gluu на одном узле
# ===================================
# Определите пользовательскую версию пакета для установки.
# Чтобы получить список доступных версий пакетов, посетите: https://gluu.org/docs/ce/
gluu_version: 3.1.7
# Определите имя хоста, используемое Gluu.
gluu_hostname: '{{ ansible_ssh_host }}'
# IP-адрес хоста.
gluu_ip: '{{ lookup("dig", "{{ gluu_internal_hostname }}.") | regex_replace("^NXDOMAIN$", "") | default(gluu_internal_hostname, true) }}'
# Список модулей для установки
gluu_modules:
- oxauth
- oxtrust
- ldap
- httpd
# Доступные модули:
# - download_wars #Принудительная загрузка war-файлов
# - oxauth
# - oxtrust
# - ldap
# - httpd
# - saml
# - asimba
# - cas
# - oxauth-rp
# - passport
# - jce
# Словарь сертификатов для Gluu.
# Вы можете добавить необходимый ключ.
# Каждый ключ должен содержать ключ `publicKey` и, при необходимости, ключ `privateKey` с путем к файлам сертификатов.
# Также, когда gluu_cluster = True, вы можете установить параметр `shareable`, чтобы скопировать публичный ключ на все другие серверы Gluu.
# Список официальных ключей для Gluu:
# - asimba
# - httpd
# - idp-encryption
# - idp-signing
# - openldap
# - shipIDP
# Пример:
# 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:
# Тип LDAP-сервера.
# С версии Gluu 3.1.2 вы можете выбрать тип LDAP-сервера.
# Этот скрипт поддерживает только openLDAP для репликации LDAP.
# Доступные LDAP серверы:
# - openldap
# - opendj
# По умолчанию: openldap
gluu_ldap_server: openldap
# Пользовательский сертификат для LDAP-сервера и клиента
# Клиент Gluu oxAuth/oxTrust нуждается в файле pkcs12 с приватным и публичным ключами
# По умолчанию:
gluu_ldap_certificate:
cert_ca_file:
cert_file:
cert_key_file:
# Файл для настройки схемы LDAP
gluu_ldap_custom_schema_file: custom_schema.json.default
# Вы можете установить пароль LDAP.
# По умолчанию: случайный пароль
gluu_ldap_password:
# Базовый inum для Gluu
# Inum в Gluu разделяется на 3 части:
# - База
# - Родительский тип для организации или устройства
# - Родительское значение для организации или устройства
# - Тип (только для организации)
# - Значение (только для организации)
# Пример: @!0000.1111.2222.3333!0001!1111.2222!0000!1111.2222 можно разделить следующим образом:
# - База: @!0000.1111.2222.3333
# - Родительский тип: !0001!
# - Родительское значение: 1111.2222
# - Тип: !0000!
# - Значение: 1111.2222
# Вы можете найти каждый тип в документации Gluu: https://gluu.org/docs/ce/api-guide/api/
# По умолчанию: случайное значение
gluu_inum_base:
# inum организации
# Значение должно содержать значение gluu_inum_base !
# Пример: gluu_inum_org: "{{ gluu_inum_base }}!0001!1111.2222"
# По умолчанию: случайное значение
gluu_inum_org:
# inum устройства
# Значение должно содержать значение gluu_inum_base !
# Пример: gluu_inum_appliance: "{{ gluu_inum_base }}!0002!1111.2222"
# По умолчанию: случайное значение
gluu_inum_appliance:
# Свойства для автоматически сгенерированных сертификатов (самоподписанных)
gluu_certificate_properties:
org_name: Организация
country_code: CA
city: Монреаль
state: QC
# ===================================
# Gluu на нескольких узлах (кластер)
# ===================================
# Определите, находится ли сервер в кластере.
# Когда gluu_cluster = True и если у вас установлен менеджер кластера в группе "gluu-cluster-manager"; тогда публичный SSH-ключ менеджера кластера будет скопирован на каждый сервер Gluu.
gluu_cluster: False
# Только когда gluu_cluster = True.
# Цель этого параметра - различить внутреннее имя хоста и внешнее имя хоста (gluu_hostname).
# Внешнее имя хоста будет вызываться извне, и это балансировщик нагрузки, такой как nginx. Все серверы Gluu будут настроены с внешним именем хоста.
# Чтобы соединить все узлы кластера с LDAP-серверами, необходимо иметь внутреннее имя хоста, которое не будет вызывать внешнее имя хоста.
# По умолчанию это равно gluu_hostname
gluu_internal_hostname: '{{ gluu_hostname }}'
# Когда gluu_cluster = True, определите, есть ли несколько LDAP-серверов с репликацией.
gluu_cluster_ldap_replication: False
# Когда gluu_cluster = True и gluu_cluster_ldap_replication = True, определите, будет ли конфигурация LDAP устанавливаться ansible или через веб-интерфейс менеджера кластера.
# При gluu_cluster_ldap_replication = False этот параметр включает настройку EXTRA_SLAPD_ARGS="-F /opt/symas/etc/openldap/slapd.d".
# При gluu_cluster_ldap_replication = True файл slapd.conf будет отредактирован для настройки репликации между всеми серверами с модулем LDAP.
gluu_cluster_ldap_replication_without_cluster_manager: False
# Когда gluu_cluster = True, этот параметр позволяет установить конфигурацию по умолчанию для другого хоста.
# Для его использования нужно быть осторожным с порядком выполнения ansible для каждого хоста.
# Содержимое файла /opt/gluu-server-{{ gluu_version }}/install//community-edition-setup/setup.properties.last определенного хоста будет скопировано в setup.properties.
# Например, после установки можно создать зеркальный сервер с такой же конфигурацией, как у основного сервера.
gluu_install_from: main
# Когда gluu_cluster = True, вы можете установить имена хостов внешних LDAP-серверов Gluu.
# По умолчанию список всех серверов с установленным модулем LDAP.
# Например, простой сервер-потребитель, установленный только с модулем oxauth, будет использовать этот параметр с именем хоста двух основных серверов.
# Пример:
# gluu_ldap_hostname: 192.168.1.101:1636,192.168.1.102:1636
gluu_ldap_hostname:
Развертывание
Чтобы развернуть, вам нужно выполнить несколько шагов:
- Создайте новый файл
hosts
. Проверьте документацию по инвентаризации Ansible, если вам нужна помощь. - Создайте новый плейбук для развертывания вашего приложения, например,
deploy.yml
- Настройте переменные роли (см. Переменные роли)
- Включите роль
GuillaumeSmaha.gluu-setup
как часть выполнения - Запустите плейбук развертывания
ansible-playbook -i hosts deploy.yml
Если все было настроено правильно, эта команда установит Gluu Cluster Manager на хост.
Пример плейбука
В папке example вы можете проверить пример проекта, который показывает, как развернуть.
Чтобы запустить его, вам потребуется Vagrant и установленная роль. Пожалуйста, посетите https://www.vagrantup.com для получения дополнительной информации о Vagrant и нашей секции установки.
$ 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
Доступ к Gluu можно получить, перейдя по адресу:
или
Примеры проектов
Вы можете найти полный пример плейбука здесь:
ansible-galaxy install GuillaumeSmaha/ansible-role-gluu-setup