GuillaumeSmaha.gluu-setup
Ansible Gluu:设置角色
gluu-setup 是一个 Ansible 角色,用于轻松安装 Gluu 服务器及其模块和证书。
在集群模式下,该角色将安装 SSH 密钥以允许集群管理器访问,在所有服务器之间分发公共证书,更新 LDAP 服务器以接受外部连接,并更新配置以使用所有 LDAP 服务器。
要使用此角色的集群模式功能,所有 Gluu 服务器必须在 gluu-servers
组中,而 Gluu 集群管理器必须在 gluu-cluster-manager
组中。
历史
Gluu 的开源认证和 API 访问管理服务器使组织能够提供单点登录、强身份验证和集中管理。
要求
为了部署,您需要:
- 在部署机器上安装 Ansible
- 还需要安装以下 Python 依赖项:
- dnspython
$ pip install -r requirements.txt
安装
gluu-setup 是一个通过 Ansible Galaxy 全球分发的 Ansible 角色。要安装 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:
# Gluu 的基础 inum
# Gluu 中的 inum 分为 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 设置还是通过集群管理器 Web 界面设置。
# 当 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 时,可以设置 Gluu 外部 LDAP 服务器的主机名。
# 默认情况下,所有安装了 LDAP 模块的服务器的列表
# 例如,仅安装了 oxauth 模块的简单消费者服务器将使用此参数,它包含两个主服务器的主机名。
# 例如:
# gluu_ldap_hostname: 192.168.1.101:1636,192.168.1.102:1636
gluu_ldap_hostname:
部署
为了进行部署,您需要执行以下步骤:
- 创建一个新的
hosts
文件。如果您需要帮助,请查看 ansible inventory documentation。 - 为部署您的应用程序创建一个新的剧本,例如
deploy.yml
- 设置角色变量(请参见 角色变量)
- 将
GuillaumeSmaha.gluu-setup
角色作为剧本的一部分包含 - 运行部署剧本
ansible-playbook -i hosts deploy.yml
如果一切设置正确,此命令将会在主机上安装 Gluu 集群管理器。
示例剧本
在示例文件夹中,您可以查看一个示例项目,展示如何进行部署。
要运行它,您需要安装 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,请访问以下地址:
或
示例项目
您可以在这里找到完整的剧本示例: