{"id":40418007,"url":"https://github.com/cosmo-tech/terraform-tenant","last_synced_at":"2026-02-13T14:02:06.710Z","repository":{"id":321246802,"uuid":"1077681407","full_name":"Cosmo-Tech/terraform-tenant","owner":"Cosmo-Tech","description":"Cosmo Tech tenant deployment","archived":false,"fork":false,"pushed_at":"2025-12-19T15:19:04.000Z","size":195,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-20T03:53:07.475Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cosmo-Tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-16T15:30:41.000Z","updated_at":"2025-12-19T15:15:32.000Z","dependencies_parsed_at":"2025-10-28T17:31:36.257Z","dependency_job_id":"02834b96-36e9-405c-91e6-c3173ec571d2","html_url":"https://github.com/Cosmo-Tech/terraform-tenant","commit_stats":null,"previous_names":["cosmo-tech/terraform-tenant"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Cosmo-Tech/terraform-tenant","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cosmo-Tech%2Fterraform-tenant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cosmo-Tech%2Fterraform-tenant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cosmo-Tech%2Fterraform-tenant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cosmo-Tech%2Fterraform-tenant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cosmo-Tech","download_url":"https://codeload.github.com/Cosmo-Tech/terraform-tenant/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cosmo-Tech%2Fterraform-tenant/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28605916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T14:45:23.139Z","status":"ssl_error","status_checked_at":"2026-01-20T14:44:16.929Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-20T15:00:27.562Z","updated_at":"2026-01-20T15:00:49.708Z","avatar_url":"https://github.com/Cosmo-Tech.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Static Badge](https://img.shields.io/badge/Cosmo%20Tech-%23FFB039?style=for-the-badge)\n![Static Badge](https://img.shields.io/badge/tenant-%23f8f8f7?style=for-the-badge)\n\n\n# Cosmo Tech tenant\n*install Cosmo Tech API and all its dependencies in a dedicated namespace*\n\n## Requirements\n* working Kubernetes cluster deployed from Cosmo Tech terraform-provider (like terraform-azure for example)\n* [terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)\n    \u003e If using Windows, Terraform must be accessible from PATH\n* situational\n    * Azure: [azure-cli](https://github.com/Azure/azure-cli)\n    * AWS: [aws-cli](https://github.com/aws/aws-cli)\n\n## How to\n* clone \u0026 open the repository\n    ```\n    git clone https://github.com/Cosmo-Tech/terraform-tenant.git --branch \u003ctag\u003e\n    cd terraform-tenant\n    ```\n* deploy\n    * fill `terraform.tfvars` variables according to your needs\n    * run pre-configured script\n        \u003e ℹ️ comment/uncomment the terraform apply line at the end to get a plan without deploy anything\n        * Linux\n            ```\n            ./_run-terraform.sh\n            ```\n        * Windows\n            ```\n            ./_run-terraform.ps1\n            ```\n    * Azure\n        * will ask for the access key of the Azure Storage of \"cosmotechstates\"\n            * go to Azure \u003e Azure Storage \u003e \"cosmotechstates\" \u003e Access keys\n            * copy/paste \"Key\" from \"key1\" or \"key2\" in the terraform input\n    * AWS\n        * to fill\n    * GCP\n        * to fill\n\n## Known errors\n* Error: Provider configuration not present\n    \u003e The tenant has been deleted or exists in an other cluster, but the state file still exists. Chose another tenant name or delete the state file if tenant doesn't exist anymore.\n* Error: [POST /datasources][409] addDataSourceConflict {\"message\":\"data source with the same name already exists\"} [..] with module.config_grafana_dashboard.grafana_data_source.redis-datasource\n    \u003e The state file could not be found (it has probably been deleted, but the deployed resources remains)\n    \u003e Go to https://\u003ccluster_url\u003e/monitoring (credentials are stored on Kubernetes secret monitoring/kube-prometheus-stack-grafana) -\u003e Connections -\u003e Data sources -\u003e Delete both tenant-\u003cname\u003e-postgresql and tenant-\u003cname\u003e-redis\n* Error: failed to create folder: [POST /folders][409] createFolderConflict {\"message\":\"a folder with the same name already exists in the current location\"} [..] with module.config_grafana_dashboard.grafana_folder.folder\n    \u003e The state file could not be found (it has probably been deleted, but the deployed resources remains)\n    \u003e Go to https://\u003ccluster_url\u003e/monitoring (credentials are stored on Kubernetes secret monitoring/kube-prometheus-stack-grafana) -\u003e Dashboards -\u003e Delete tenant-\u003cname\u003e\n* Error: error sending POST request to /keycloak//admin/realms: 409 Conflict. Response body: {\"errorMessage\":\"Conflict detected. See logs for details\"} [..] with with module.config_keycloak_realm.keycloak_realm.realm\n    \u003e The state file could not be found (it has probably been deleted, but the deployed resources remains)\n    \u003e Go to https://\u003ccluster_url\u003e/keycloak (credentials are stored on Kubernetes secret keycloak/keycloak-config) -\u003e Select the realm \"tenant-\u003cname\u003e\" -\u003e Realm settings \u003e Action \u003e Delete\n\n## Developpers\n* modules\n    * **terraform-tenant**\n        * *chart_argo* = install Argo Workflows\n        * *chart_cosmotech_api* = install Cosmo Tech API\n        * *chart_postgresql* = install PostgreSQL (and configure it for Cosmo Tech API, SeaweedFS \u0026 Argo Workflows)\n        * *chart_redis* = install Redis\n        * *chart_seaweedfs* = install SeaweedFS\n        * *config_grafana_dashboard* = create tenant configuration on existing Grafana instance\n        * *config_keycloak_realm* = create tenant configuration on existing Keycloak instance\n        * *kube_namespace* = create tenant namespace\n        * *storage* = **[temporary]** dynamically create persistence storage for charts requiring it\n* Terraform **state**\n    * The state is stored beside the cluster Terraform state, in the current cloud s3/blob storage service (generally called `cosmotech-states` or `cosmotechstates`, depending on what the cloud provider allows in naming convention)\n* File **backend.tf**\n    * dynamically created at each run of `_run-terraform`\n    * permit to have multi-cloud compatibility with Terraform\n    * it instanciate the needed Terraform providers based on the variable `cloud_provider` from terraform.tfvars\n    * this file is a workaround to avoid having unwanted variables related to cloud providers not targetted in current deployment\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\nMade with :heart: by Cosmo Tech DevOps team","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcosmo-tech%2Fterraform-tenant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcosmo-tech%2Fterraform-tenant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcosmo-tech%2Fterraform-tenant/lists"}