Persistence
Overview#
Persistence is a special container to load initial data for LDAP or Couchbase.
Versions#
- Stable:
gluufederation/persistence:4.0.1_05
. - Unstable:
gluufederation/persistence:4.0.1_dev
.
Refer to Changelog for details on new features, bug fixes, or older releases.
Environment Variables#
The following environment variables are supported by the container:
GLUU_CONFIG_ADAPTER
: The config backend adapter, can beconsul
(default) orkubernetes
.GLUU_CONFIG_CONSUL_HOST
: hostname or IP of Consul (default tolocalhost
).GLUU_CONFIG_CONSUL_PORT
: port of Consul (default to8500
).GLUU_CONFIG_CONSUL_CONSISTENCY
: Consul consistency mode (choose one ofdefault
,consistent
, orstale
). Default tostale
mode.GLUU_CONFIG_CONSUL_SCHEME
: supported Consul scheme (http
orhttps
).GLUU_CONFIG_CONSUL_VERIFY
: whether to verify cert or not (default tofalse
).GLUU_CONFIG_CONSUL_CACERT_FILE
: path to Consul CA cert file (default to/etc/certs/consul_ca.crt
). This file will be used if it exists andGLUU_CONFIG_CONSUL_VERIFY
set totrue
.GLUU_CONFIG_CONSUL_CERT_FILE
: path to Consul cert file (default to/etc/certs/consul_client.crt
).GLUU_CONFIG_CONSUL_KEY_FILE
: path to Consul key file (default to/etc/certs/consul_client.key
).GLUU_CONFIG_CONSUL_TOKEN_FILE
: path to file contains ACL token (default to/etc/certs/consul_token
).GLUU_CONFIG_KUBERNETES_NAMESPACE
: Kubernetes namespace (default todefault
).GLUU_CONFIG_KUBERNETES_CONFIGMAP
: Kubernetes configmaps name (default togluu
).GLUU_CONFIG_KUBERNETES_USE_KUBE_CONFIG
: Load credentials from$HOME/.kube/config
, only useful for non-container environment (default tofalse
).GLUU_SECRET_ADAPTER
: The secrets adapter, can bevault
orkubernetes
.GLUU_SECRET_VAULT_SCHEME
: supported Vault scheme (http
orhttps
).GLUU_SECRET_VAULT_HOST
: hostname or IP of Vault (default tolocalhost
).GLUU_SECRET_VAULT_PORT
: port of Vault (default to8200
).GLUU_SECRET_VAULT_VERIFY
: whether to verify cert or not (default tofalse
).GLUU_SECRET_VAULT_ROLE_ID_FILE
: path to file contains Vault AppRole role ID (default to/etc/certs/vault_role_id
).GLUU_SECRET_VAULT_SECRET_ID_FILE
: path to file contains Vault AppRole secret ID (default to/etc/certs/vault_secret_id
).GLUU_SECRET_VAULT_CERT_FILE
: path to Vault cert file (default to/etc/certs/vault_client.crt
).GLUU_SECRET_VAULT_KEY_FILE
: path to Vault key file (default to/etc/certs/vault_client.key
).GLUU_SECRET_VAULT_CACERT_FILE
: path to Vault CA cert file (default to/etc/certs/vault_ca.crt
). This file will be used if it exists andGLUU_SECRET_VAULT_VERIFY
set totrue
.GLUU_SECRET_KUBERNETES_NAMESPACE
: Kubernetes namespace (default todefault
).GLUU_SECRET_KUBERNETES_CONFIGMAP
: Kubernetes secrets name (default togluu
).GLUU_SECRET_KUBERNETES_USE_KUBE_CONFIG
: Load credentials from$HOME/.kube/config
, only useful for non-container environment (default tofalse
).GLUU_WAIT_MAX_TIME
: How long the startup "health checks" should run (default to300
seconds).GLUU_WAIT_SLEEP_DURATION
: Delay between startup "health checks" (default to10
seconds).GLUU_OXTRUST_CONFIG_GENERATION
: Whether to generate oxShibboleth configuration or not (default totrue
).GLUU_CACHE_TYPE
: Supported values areIN_MEMORY
,REDIS
,MEMCACHED
, andNATIVE_PERSISTENCE
(default toNATIVE_PERSISTENCE
).GLUU_REDIS_URL
: URL of Redis server, format is host:port (optional; default tolocalhost:6379
).GLUU_REDIS_TYPE
: Redis service type, eitherSTANDALONE
orCLUSTER
(optional; default toSTANDALONE
).GLUU_MEMCACHED_URL
: URL of Memcache server, format is host:port (optional; default tolocalhost:11211
).GLUU_PERSISTENCE_TYPE
: Persistence backend being used (one ofldap
,couchbase
, orhybrid
; default toldap
).GLUU_PERSISTENCE_LDAP_MAPPING
: Specify data that should be saved in LDAP (one ofdefault
,user
,cache
,site
, ortoken
; default todefault
). Note this environment only takes effect whenGLUU_PERSISTENCE_TYPE
is set tohybrid
.GLUU_LDAP_URL
: Address and port of LDAP server (default tolocalhost:1636
); required ifGLUU_PERSISTENCE_TYPE
is set toldap
orhybrid
.GLUU_COUCHBASE_URL
: Address of Couchbase server (default tolocalhost
); required ifGLUU_PERSISTENCE_TYPE
is set tocouchbase
orhybrid
.GLUU_COUCHBASE_USER
: Username of Couchbase server (default toadmin
); required ifGLUU_PERSISTENCE_TYPE
is set tocouchbase
orhybrid
.GLUU_COUCHBASE_CERT_FILE
: Couchbase root certificate location (default to/etc/certs/couchbase.crt
); required ifGLUU_PERSISTENCE_TYPE
is set tocouchbase
orhybrid
.GLUU_COUCHBASE_PASSWORD_FILE
: Path to file contains Couchbase password (default to/etc/gluu/conf/couchbase_password
); required ifGLUU_PERSISTENCE_TYPE
is set tocouchbase
orhybrid
.GLUU_OXTRUST_API_ENABLED
: Enable oxTrust API (default tofalse
).GLUU_OXTRUST_API_TEST_MODE
: Enable oxTrust API test mode; not recommended for production (default tofalse
). If set tofalse
, UMA mode is activated. See oxTrust API docs for reference.GLUU_CASA_ENABLED
: Enable Casa-related features; custom scripts, ACR, UI menu, etc. (default tofalse
).GLUU_PASSPORT_ENABLED
: Enable Passport-related features; custom scripts, ACR, UI menu, etc. (default tofalse
).GLUU_RADIUS_ENABLED
: Enable Radius-related features; UI menu, etc. (default tofalse
).GLUU_PASSPORT_ENABLED
: Enable Passport-related features; custom scripts, ACR, UI menu, etc. (default tofalse
).GLUU_SAML_ENABLED
: Enable SAML-related features; UI menu, etc. (default tofalse
).
Initializing Data#
LDAP#
Deploy Wren:DS container:
docker run -d \
--network container:consul \
--name ldap \
-e GLUU_CONFIG_ADAPTER=consul \
-e GLUU_CONFIG_CONSUL_HOST=consul \
-e GLUU_SECRET_ADAPTER=vault \
-e GLUU_SECRET_VAULT_HOST=vault \
-v /path/to/opendj/config:/opt/opendj/config \
-v /path/to/opendj/db:/opt/opendj/db \
-v /path/to/opendj/logs:/opt/opendj/logs \
-v /path/to/opendj/ldif:/opt/opendj/ldif \
-v /path/to/opendj/backup:/opt/opendj/bak \
-v /path/to/vault_role_id.txt:/etc/certs/vault_role_id \
-v /path/to/vault_secret_id.txt:/etc/certs/vault_secret_id \
gluufederation/wrends:4.0.1_03
Run the following command to initialize data and save it to LDAP:
docker run --rm \
--network container:consul \
--name persistence \
-e GLUU_CONFIG_ADAPTER=consul \
-e GLUU_CONFIG_CONSUL_HOST=consul \
-e GLUU_SECRET_ADAPTER=vault \
-e GLUU_SECRET_VAULT_HOST=vault \
-e GLUU_PERSISTENCE_TYPE=ldap \
-e GLUU_LDAP_URL=ldap:1636 \
-v /path/to/vault_role_id.txt:/etc/certs/vault_role_id \
-v /path/to/vault_secret_id.txt:/etc/certs/vault_secret_id \
gluufederation/persistence:4.0.1_05
The process may take awhile, check the output of the persistence
container log.
Couchbase#
Assuming there is Couchbase instance running hosted at 192.168.100.2
address, setup the cluster:
- Set the username and password of Couchbase cluster
- Configure the instance to use Query, Data, and Index services
Once cluster has been configured successfully, do the following steps:
- Pass the address of Couchbase server in
GLUU_COUCHBASE_URL
(omit the port) - Pass the Couchbase user in
GLUU_COUCHBASE_USER
- Save the password into
/path/to/couchbase_password
file - Get the certificate root of Couchbase and save it into
/path/to/couchbase.crt
file
Run the following command to initialize data and save it to Couchbase:
docker run --rm \
--network container:consul \
--name persistence \
-e GLUU_CONFIG_ADAPTER=consul \
-e GLUU_CONFIG_CONSUL_HOST=consul \
-e GLUU_SECRET_ADAPTER=vault \
-e GLUU_SECRET_VAULT_HOST=vault \
-e GLUU_PERSISTENCE_TYPE=couchbase \
-e GLUU_COUCHBASE_URL=192.168.100.2 \
-e GLUU_COUCHBASE_USER=admin \
-v /path/to/couchbase.crt:/etc/certs/couchbase.crt \
-v /path/to/couchbase_password:/etc/gluu/conf/couchbase_password \
-v /path/to/vault_role_id.txt:/etc/certs/vault_role_id \
-v /path/to/vault_secret_id.txt:/etc/certs/vault_secret_id \
gluufederation/persistence:4.0.1_05
The process may take awhile, check the output of the persistence
container log.
Hybrid#
Hybrid is a mix of LDAP and Couchbase persistence backend. To initialize data for this type of persistence:
-
Deploy LDAP container:
docker run -d \ --network container:consul \ --name ldap \ -e GLUU_CONFIG_ADAPTER=consul \ -e GLUU_CONFIG_CONSUL_HOST=consul \ -e GLUU_SECRET_ADAPTER=vault \ -e GLUU_SECRET_VAULT_HOST=vault \ -v /path/to/opendj/config:/opt/opendj/config \ -v /path/to/opendj/db:/opt/opendj/db \ -v /path/to/opendj/logs:/opt/opendj/logs \ -v /path/to/opendj/ldif:/opt/opendj/ldif \ -v /path/to/opendj/backup:/opt/opendj/bak \ -v /path/to/vault_role_id.txt:/etc/certs/vault_role_id \ -v /path/to/vault_secret_id.txt:/etc/certs/vault_secret_id \ gluufederation/wrends:4.0.1_03
-
Prepare Couchbase cluster.
Assuming there is Couchbase instance running hosted at
192.168.100.2
address, setup the cluster:- Set the username and password of Couchbase cluster
- Configure the instance to use Query, Data, and Index services
Once cluster has been configured successfully, do the following steps:
- Pass the address of Couchbase server in
GLUU_COUCHBASE_URL
(omit the port) - Pass the Couchbase user in
GLUU_COUCHBASE_USER
- Save the password into
/path/to/couchbase_password
file - Get the certificate root of Couchbase and save it into
/path/to/couchbase.crt
file
-
Determine which data goes to LDAP backend by specifying it using
GLUU_PERSISTENCE_LDAP_MAPPING
environment variable. For example, ifuser
data should be saved into LDAP, setGLUU_PERSISTENCE_LDAP_MAPPING=user
. This will make other data saved into Couchbase. -
Run the following command to initialize data and save it to LDAP and Couchbase:
docker run --rm \ --network container:consul \ --name persistence \ -e GLUU_CONFIG_ADAPTER=consul \ -e GLUU_CONFIG_CONSUL_HOST=consul \ -e GLUU_SECRET_ADAPTER=vault \ -e GLUU_SECRET_VAULT_HOST=vault \ -e GLUU_PERSISTENCE_TYPE=hybrid \ -e GLUU_PERSISTENCE_LDAP_MAPPING=user \ -e GLUU_LDAP_URL=ldap:1636 \ -e GLUU_COUCHBASE_URL=192.168.100.2 \ -e GLUU_COUCHBASE_USER=admin \ -v /path/to/couchbase.crt:/etc/certs/couchbase.crt \ -v /path/to/couchbase_password:/etc/gluu/conf/couchbase_password \ -v /path/to/vault_role_id.txt:/etc/certs/vault_role_id \ -v /path/to/vault_secret_id.txt:/etc/certs/vault_secret_id \ gluufederation/persistence:4.0.1_05