Skip to content

Configuration

This lists all variables you can use to configure our playbook.

applications.yml

DNS configuration

VariablesDefault valueDescription
app_dns_domain"domain.tld"DNS (sub)domain use to build the app URLs.
api_dns_name"api.{{ app_dns_domain }}"DNS name use for the API URL.
connect_dns_name"connect.{{ app_dns_domain }}"DNS name use for the Connect URL.
platform_back_dns_name"platform-back.{{ app_dns_domain }}"DNS name use for the Platform back URL.
platform_front_dns_name"platform.{{ app_dns_domain }}"DNS name use for the Platform URL.
iam_dns_name"iam.{{ app_dns_domain }}"DNS name use for the Keycloak (identity provider) URL.
documentation_dns_name"doc.{{ app_dns_domain }}"DNS name use for the documentation URL.
archive_dns_name"archive.{{ app_dns_domain }}"DNS name use for the archive URL.
marketplace_back_dns_name"marketplace-back.{{ app_dns_domain }}"DNS name use for the marketplace back URL.
marketplace_front_dns_name"marketplace.{{ app_dns_domain }}"DNS name use for fhe marketplace URL.

For example if:

app_dns_domain: bimdata.company.tld
api_dns_name: `"api.{{ app_dns_domain }}"`

The DNS name for the API will be: api.bimdata.company.tld. Each name needs to be defined in the corresponding authoritative DNS server. This playbook does not manage this.

SMTP Configuration

VariablesDefault valueDescription
smtp_host""SMTP server address.
smtp_port587SMTP server port.
smtp_user""User used for the authentication on the SMTP server.
smtp_pass"{{ vault_smtp_pass }}"Password used for the authentication on the SMTP server.
smtp_use_tlstrueIf the SMTP connection should use TLS or not.
smtp_default_email""Email address use as default sender.

Web configuration

VariablesDefault valueDescription
external_port_http80TCP port for HTTP connections on the web server.
external_port_https443TCP port for HTTPS connections on the web server.
max_upload_size"1g"Maximum upload file size (ifc… etc).

Data storage

VariablesDefault valueDescription
bimdata_path"/opt/bimdata"Where we will install our needed files on the servers.
bimdata_docker_volume_path"{{ bimdata_path }}/datas"Where will your datas will be store on the servers.
bimdata_dockerfiles_path"{{ bimdata_path }}/dockerfiles"Where we store the dockerfiles use to start the containers.

Object storage (Swift):

VariablesDefault valueDescription
swift_enabledfalseEnable the swift storage or not.
swift_auth_url""The URL of the auth server.
swift_tenant_id""The tenant/project id to use when authenticating.
swift_tenant_name""The tenant/project name to use when authenticating.
swift_username""The username to use to authenticate.
swift_password"{{ vault_swift_password }}"The password/key to use to authenticate.
swift_temp_url_key"{{ vault_swift_temp_url_key }}"The temporary URL key (see openstack documentation)
swift_api_container_name""The container in which to store the API files.
swift_connect_container_name""The container in which to store the Connect files.

Applications configuration

VariablesDefault valueDescription
api_secret_key"{{ vault_api_secret_key }}"You should not change this.
connect_secret_key"{{ vault_connect_secret_key }}"You should not change this.
connect_invitation_secret"{{ vault_connect_invitation_secret }}"You should not change this.
connect_invitation_client_secret"{{ vault_connect_invitation_client_secret }}"You should not change this.
platform_back_secret_key"{{ vault_platform_back_secret_key }}"You should not change this.
platform_back_webhook_secret"{{ vault_platform_back_webhook_secret }}"You should not change this.
platform_front_project_status_limit_new"5"Number of days during which the project is considered new.
platform_front_project_status_limit_active"15"Number of days during before the project is considered inactive.
iam_user"admin"Keycloak administrator user.
iam_password"{{ vault_iam_password }}"Keycloak administrator password.
marketplace_enabledfalseEnable / disable marketplace.
marketplace_back_secret_key"{{ vault_marketplace_back_secret_key }}"You should not change this.
marketplace_front_workers2Number of node workers.
workers_export_instance1Number of replicas deployed on each server.
workers_export_cpu1Number of CPUs allocated for each replicas.
workers_gltf_instance1Number of replicas deployed on each server.
workers_gltf_cpu1Number of CPUs allocated for each replicas.
workers_extract_instance1Number of replicas deployed on each server.
workers_extract_cpu1Number of CPUs allocated for each replicas.
workers_extract_quantities_instance1Number of replicas deployed on each server.
workers_extract_quantities_cpu1Number of CPUs allocated for each replicas.
workers_svg_instance1Number of replicas deployed on each server.
workers_svg_cpu1Number of CPUs allocated for each replicas.
workers_merge_instance1Number of replicas deployed on each server.
workers_merge_cpu1Number of CPUs allocated for each replicas.
workers_xkt_instance1Number of replicas deployed on each server.
workers_xkt_cpu1Number of CPUs allocated for each replicas.
workers_preview_instance1Number of replicas deployed on each server.
workers_preview_cpu1Number of CPUs allocated for each replicas.
master_token"{{ vault_master_token }}"Master token use for authentication between workers and API.
app_env"staging"Environnement definition for some app. Must not be changed.
mapbox_token"{{ vault_mapbox_token }}"Token for authentication on the Mapbox API.

connectivity.yml

Ansible connectivity

VariablesDefault valueDescription
ansible_python_interpreter"/usr/bin/python3"Force the use of python3.
ansible_ssh_pipeliningtrueImprove ansible performances.

SSH Bastion

If you can't use SSH directly from this computer to the servers where you want to install our applications, you can use a bastion that will proxy the ssh connections.

VariablesDefault valueDescription
use_bastionfalseConfigure if you want to use a bastion or not.
bastion_ssh_addr""Bastion adresse use for the ssh connection.
bastion_ssh_port22Bastion TCP port use for the ssh connection.
bastion_ssh_user"{{ lookup('env', 'USER') }}"SSH user for authentication on the Bastion.
bastion_ssh_extra_optionsundefinedString to add other SSH options.

Proxy

If your servers can't access the web directly, you may need to configure a proxy to access our docker registry for example.

VariablesDefault valueDescription
http_proxy""HTTP proxy address.
https_proxy""HTTPS proxy address.
no_proxy[]List of domains / IP where the proxy must not be used.

databases.yml

External postgres cluster

VariablesDefault valueDescription
use_external_dbfalseConfigure if you want to use a postgres instance manage by this playbook or not.
external_db_host""Postgres cluster address use for connection if use_external_db: true.
external_db_port5432Postgres cluster TCP port use for connection if use_external_db: true.

Databases

VariablesDefault valueDescription
db_api_name"api"Database name for the API.
db_api_user"api"Postgres user for the API.
db_api_password"{{ vault_db_api_password }}"Postgres password for the API.
db_connect_name"connect"Database name for Connect.
db_connect_user"connect"Postgres user for Connect.
db_connect_password"{{ vault_db_connect_password }}"Postgres password for Connect.
db_platform_name"platform"Database name for the Platform.
db_platform_user"platform"Postgres user for the Platform.
db_platform_password"{{ vault_db_platform_password }}"Postgres password for the Platform.
db_iam_name"iam"Database name for Keycloak.
db_iam_user"iam"Postgres user for Keycloak.
db_iam_password"{{ vault_db_iam_password }}"Postgres password for Keycloak.
db_marketplace_name"marketplace"Database name for the Marketplace.
db_marketplace_user"marketplace"Postgres user for the Marketplace.
db_marketplace_password"{{ vault_db_marketplace_password }}"Postgres password for the Marketplace.

If use_external_db: false AND if the [db] server is different from the [app] server (in the inventory) each Postgres instance will need to use its own TCP port. There are defined with these variables. You will need to configure your firewall: the [app] server will need to be able to communication with the [db] server on these ports.

VariablesDefault valueDescription
db_api_external_port5432Postgres external port for the API.
db_connect_external_port5433Postgres external port for Connect.
db_platform_external_port5434Postgres external port for the Platform.
db_iam_external_port5435Postgres external port for Keycloak.
db_marketplace_external_port5436Postgres external port for Keycloak.
db_server_addr"{{ hostvars[groups['db'][0]]['ansible_default_ipv4']['address'] }}"Use to determine the IP that will be use for Postgres connection between [app] and [db].

docker_images.yml

VariablesDefault valueDescription
docker_private_registry"docker-registry.bimdata.io"Define the registry address from which most of the images will come from.
docker_registriesList of registries informations use to configure docker authentication.
docker_rabbitmq_image"rabbitmq"RabbitMQ docker image (use Dockerhub by default).
docker_rabbitmq_tag"3.8-management-alpine"RabbitMQ docker tag.
docker_postgres_image"postgres"Postgres docker image (use Dockerhub by default).
docker_postgres_tag"10-alpine"Postgres docker tag.
docker_api_image"{{ docker_private_registry }}/on-prem/api"API docker image.
docker_api_taglatestAPI docker tag.
docker_connect_image"{{ docker_private_registry }}/on-prem/connect"Connect docker image.
docker_connect_taglatestConnect docker tag.
docker_platform_back_image"{{ docker_private_registry }}/on-prem/platform_back"Platform back docker image.
docker_platform_back_taglatestPlatform back docker tag.
docker_platform_front_image"{{ docker_private_registry }}/on-prem/platform"Platform front docker image.
docker_platform_front_taglatestPlatform front docker tag.
docker_iam_image"{{ docker_private_registry }}/on-prem/iam"Keycloak docker image.
docker_iam_taglatestKeycloak docker tag.
docker_documentation_image"{{ docker_private_registry }}/on-prem/documentation"Documentation docker image.
docker_documentation_taglatestDocumentation docker tag.
docker_archive_image"{{ docker_private_registry }}/on-prem/archive"Archive docker image.
docker_archive_taglatestArchive docker tag.
docker_marketplace_back_image"{{ docker_private_registry }}/on-premise/marketplace_back"Marketplace back images.
docker_marketplace_back_taglatestMarketplace back docker tag.
docker_marketplace_front_image"{{ docker_private_registry }}/on-premise/marketplace"Marketplace front docker image.
docker_marketplace_front_taglatestMarketplace front docker tag.
docker_workers_export_image"{{ docker_private_registry }}/on-prem/workers"Worker export docker image.
docker_workers_export_taglatestWorker export docker tag.
docker_workers_gltf_image"{{ docker_private_registry }}/on-prem/workers"Worker GLTF docker image.
docker_workers_gltf_taglatestWorker GLTF docker tag.
docker_workers_extract_image"{{ docker_private_registry }}/on-prem/workers"Worker extract docker image.
docker_workers_extract_taglatestWorker extract docker tag.
docker_workers_extract_quantities_image"{{ docker_private_registry }}/on-prem/workers"Worker extract quantities docker image.
docker_workers_extract_quantities_taglatestWorker extract quantities docker tag.
docker_workers_svg_image"{{ docker_private_registry }}/on-prem/workers"Worker SVG docker image.
docker_workers_svg_taglatestWorker SVG docker tag.
docker_workers_merge_image"{{ docker_private_registry }}/on-prem/workers"Worker merge docker image.
docker_workers_merge_taglatestWorker merge docker tag.
docker_workers_xkt_image"{{ docker_private_registry }}/on-prem/xkt_worker"Worker XKT docker image.
docker_workers_xkt_taglatestWorker XKT docker tag.
docker_workers_preview_image"{{ docker_private_registry }}/on-prem/viewer_360"Worker preview docker image.
docker_workers_preview_taglatestWorker preview docker tag.

docker.yml

VariablesDefault valueDescription
install_dockertrueInstall Docker or not (if not, docker need to be already installed).
docker_apt_dependencies["python3-docker", "gnupg", "apt-transport-https", "ca-certificates"]List of APT packages to install before Docker.
docker_apt_release_channel"stable"Docker version that will be installed.
docker_repo_base_url"https://download.docker.com/linux"Docker APT repository.
docker_apt_key_url"{{ docker_repo_base_url }}/{{ ansible_distributionlower }}/gpg"
docker_apt_repo_url"{{ docker_repo_base_url }}/{{ ansible_distributionlower }}"
docker_editionceDocker edition that will be installed ('ee' for 'Enterprise Edition' or 'ce' for 'Community Edition')
docker_pkg_name"docker-{{ docker_edition }}"Docker APT package name that will be installed.
docker_pkg_version""Docker APT package version that will be installed.
docker_pkg_version_hold"{{ docker_pkg_versiondefault(false)
docker_svc_name"docker"Docker service name.
docker_install_composetrueInstall Docker compose or not (if noot, need to be already installed.)
docker_compose_version"1.29.2"Docker compose version to install.
docker_compose_url"https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-{{ ansible_system }}-{{ ansible_architecture }}"URL to download docker compose.
docker_compose_path"/usr/local/bin/docker-compose"Path of where Docker compose will be installed.
docker_use_extra_hostsfalseAdd /etc/hosts value in containers if needed.
docker_extra_hosts[]list of hosts that will be added to /etc/hosts of containers.

nginx.yml

You should not have to modify these variables in most cases.

VariablesDefault valueDescription
nginx_custom_confNginx custom configuration.
nginx_vhost_overrideNginx vhost configuration.

rabbitmq.yml

VariablesDefault valueDescription
use_external_rabbitmqfalseSet to true if you want to use your own RabbitMQ instance.
external_rabbitmq_host""RabbitMQ cluster address if use_external_rabbitmq: true.
external_rabbitmq_port5672RabbitMQ cluster TCP port if use_external_rabbitmq: true.
rabbitmq_user"bimdata"RabbitMQ user use for authentication.
rabbitmq_password"{{ vault_rabbitmq_password }}"RabbitMQ password use for authentication.
rabbitmq_admin_dns_name"rabbitmq.{{ app_dns_domain }}"RabbitMQ dns name.
rabbitmq_external_port5672RabbitMQ external port.
rabbitmq_server_addr"{{ rabbitmq_admin_dns_name }}"RabbitMQ server address.

tls.yml

VariablesDefault valueDescription
tls_enabledfalseEnable external TLS or not.
nginx_use_pregen_dhtrueUse pre-defined diffie hellman parameters. If false it'll generate new one. This take a lot of time.
tls_ca_certificate""CA certificate of the CA used to sign the certificates for the applications. (PEM format.)
tls_subca_certificates[]If a complexe CA architecture is used, tls_ca_certificate should contain the main CA, and this list all the intermediate ones.
tls_api_key"{{ vault_tls_api_key }}"API TLS key (PEM format).
tls_api_cert""API TLS Certificate (PEM format).
tls_connect_key"{{ vault_tls_connect_key }}"Connect TLS key (PEM format).
tls_connect_cert""Connect TLS Certificate (PEM format).
tls_platform_back_key"{{ vault_tls_platform_back_key }}"Platform back TLS key (PEM format).
tls_platform_back_cert""Platform back TLS Certificate (PEM format).
tls_platform_front_key"{{ vault_tls_platform_front_key }}"Platform front TLS key (PEM format).
tls_platform_front_cert""Platform front TLS Certificate (PEM format).
tls_iam_key"{{ vault_tls_iam_key }}"Keycloak TLS key (PEM format).
tls_iam_cert""Keycloak TLS Certificate (PEM format).
tls_rabbitmq_admin_key"{{ vault_tls_rabbitmq_admin_key }}"RabbitMQ TLS key (PEM format). (Only needed if use_external_rabbitmq: false.)
tls_rabbitmq_admin_cert""RabbitMQ TLS Certificate (PEM format). (Only needed if use_external_rabbitmq: false.)
tls_documentation_key"{{ vault_tls_documentation_key }}"Documentation TLS key (PEM format).
tls_documentation_cert""Documentation TLS Certificate (PEM format).
tls_archive_key"{{ vault_tls_archive_key }}"Archive TLS key (PEM format).
tls_archive_cert""Archive TLS Certificate (PEM format).
tls_marketplace_back_key"{{ vault_tls_marketplace_back_key }}"Marketplace back TLS key (PEM format).
tls_marketplace_back_cert""Marketplace back TLS Certificate (PEM format).
tls_marketplace_front_key"{{ vault_tls_marketplace_front_key }}"Marketplace front TLS key (PEM format).
tls_marketplace_front_cert""Marketplace front TLS Certificate (PEM format).

vault.yml

In this file, all private pieces of information are defined. Like passwords, TLS keys, or other security stuff. You should replace all the values and encrypt the file with ansible-vault.