Per tal de desplegar un nou client a un servidor configurat com a multiclient s’ha d’executar:
ansible-playbook playbooks/provision_multicustomer.yml -i ../<carpeta inventoru>/inventory/hosts --limit=<entorn> --ask-vault-pass
Aquest playbook es troba al projecte:
https://git.coopdevs.org/coopdevs/bi/bi-provisioning
Prèviament s’haurà hagut de configurar el domini/subdomini contra la IP on es desplegarà el nou client.
Els rols utilitzats a provision_multicustomer.yml són:
Instal·la un entorn de python.
La versió està definida a la variable: bi_python_version
El virtual environment està definit a la variable: *bi_venv_name *
Calcula el contingut del fitxer pg_hba.conf, els upstreams de superset i els backups.
Cal definir les variables hba_entries amb les entrades hba no depenents del nombre de clients, upstream_superset_list amb l’upstream de superset per defecte, backups_role_assets_paths inicialitzat com una llista buida, backups_role_path amb el path dels backups, i backups_role_tmp_path amb el path temporal dels backups.
Ex.
hba_entries:
- { type: local, database: all, user: postgres, auth_method: peer }
- { type: local, database: all, user: all, auth_method: peer }
- { type: host, database: all, user: all, address: '127.0.0.1/32', auth_method: md5 }
- { type: host, database: all, user: all, address: '::1/128', auth_method: md5 }
upstream_superset_list:
- upstream superset { server 127.0.0.1:8088; }
backups_role_assets_paths: []
backups_role_path: '/opt/backup'
backups_role_tmp_path: "{{ backups_role_path }}/.tmp"
Instal·la el postgresql
Instal·la el Foreign Data Wrapper (FDW) definits a la variable bi_dwh_database_extensions a la instància de PostgreSQL
Cal definir les variables bi_fdw_url amb el git de l’instal·lable de FDW de MySQL, bi_fdw_path amb el path on es baixarà el git
Crea les base de dades i usuaris per cada client definit.
Hi ha una variable anomenada bi_databases que conté a dins les configuracions de cada client.
Per la part de configuració de base de dades i permisos, dins d’aquesta variable s’ha de definir:
També s’ha de definir la variable bi_dwh_external_schema amb el nom de l’esquema on podrà escriure l’usuari de dbt.
Configura comptes SFTP per cada item de la variable sftp_users.
Aquests SFTPs serviran per poder mapejar els fitxers pujats amb el FDW.
Instal·la les bases de dades creades les extensions del FDW definides a bi_dwh_database_extensions.
Crea els usuaris i mapejos necessàris per cada base de dades per poder utilitzar el FDW.
A la variable bi_databases s’han de definir les següents subvariables (en cas de no utilitzar-se s’han de declarar com a llista buida)
Instal·la i configura dbt per cada un dels clients definits a la variable bi_databases.
Crea una carpeta per separar les execucions diàries, setmanals i mensuals.
Instal·la el paquet: dbt-labs/logging per tal de loguejar el temps d’execució de cada paquet.
Cal definir les variables bi_dbt_scripts_repo, i bi_dbt_version amb el repositiori i la versió a instal·lar.
També cal definir les variables: bi_databases.dbt_scripts_repo amb el repositori on es llegiran els scripts a executar de dbt i bi_databases.dbt_scripts_dir amb la destinació d’aquests scripts.
Aixeca un docker de superset per cadascun dels clients.
El port on s’aixecarà està definit a bi_databases.superset_port per cada client.
També cal definir les variables següents dins de bi_databases per tal de configurar l’enviament de mails des de Superset:
Aixeca un contenidor airflow comú per tots els clients per tal de fer de cron dels scripts de dbt.
També pot servir per executar altres scripts.
Cal definir les variables:
Instal·la un contenidor de grafana comú per tots els clients. Serveix per monitoritzar les execuciosn d’airlfow.
Cal definir la variable bi_grafana_admin_password amb el password d’administrador de grafana.
Crea les configuracions per tal que els contenidors de grafana i airflow tinguin visibilitat.
Instal·la una instància de Report Server
Configura un servidor Nginx per tal de servir les pàgines per https i instal·la els certificats
Instal·la els monitorings al servidor
Genera els fitxers d’autenticació necessàris per a Nginx
Instal·la el servidor nginx amb les configuracions anteriors.
Configura el firewall
Genera els backups per cadascuna de les base de dades de dades i superset per cada client.