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,请访问以下地址:

https://gluu-setup-ubuntu/

https://gluu-setup-centos/

示例项目

您可以在这里找到完整的剧本示例:

https://github.com/GuillaumeSmaha/ansible-gluu-playbook

关于项目

Gluu Setup for RHEL/CentOS and Ubuntu

安装
ansible-galaxy install GuillaumeSmaha.gluu-setup
许可证
gpl-3.0
下载
205
拥有者