{"id":22423869,"url":"https://github.com/statcan/terraform-statcan-aaw-platform","last_synced_at":"2026-07-02T22:01:19.631Z","repository":{"id":41259733,"uuid":"473673546","full_name":"StatCan/terraform-statcan-aaw-platform","owner":"StatCan","description":"Terraform module for the Advanced Analytics Workspaces (AAW) platform","archived":false,"fork":false,"pushed_at":"2024-09-11T17:06:24.000Z","size":106,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-10T23:38:53.871Z","etag":null,"topics":["aaw","cns","daaas","terraform"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StatCan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-24T15:52:12.000Z","updated_at":"2024-12-19T16:01:33.000Z","dependencies_parsed_at":"2023-09-27T22:56:35.226Z","dependency_job_id":"b9efda93-a13e-409c-bca5-9d18c0fc2e29","html_url":"https://github.com/StatCan/terraform-statcan-aaw-platform","commit_stats":null,"previous_names":[],"tags_count":142,"template":false,"template_full_name":null,"purl":"pkg:github/StatCan/terraform-statcan-aaw-platform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StatCan%2Fterraform-statcan-aaw-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StatCan%2Fterraform-statcan-aaw-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StatCan%2Fterraform-statcan-aaw-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StatCan%2Fterraform-statcan-aaw-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StatCan","download_url":"https://codeload.github.com/StatCan/terraform-statcan-aaw-platform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StatCan%2Fterraform-statcan-aaw-platform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35064251,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["aaw","cns","daaas","terraform"],"created_at":"2024-12-05T18:13:18.458Z","updated_at":"2026-07-02T22:01:19.603Z","avatar_url":"https://github.com/StatCan.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"## terraform-statcan-aaw-platform\n\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.3 |\n| \u003ca name=\"requirement_azurerm\"\u003e\u003c/a\u003e [azurerm](#requirement\\_azurerm) | \u003e= 2.0.0, \u003c 3.0.0 |\n| \u003ca name=\"requirement_helm\"\u003e\u003c/a\u003e [helm](#requirement\\_helm) | \u003e= 2.0.0, \u003c 3.0.0 |\n| \u003ca name=\"requirement_kubernetes\"\u003e\u003c/a\u003e [kubernetes](#requirement\\_kubernetes) | \u003e= 2.0.0, \u003c 3.0.0 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_kubernetes\"\u003e\u003c/a\u003e [kubernetes](#provider\\_kubernetes) | \u003e= 2.0.0, \u003c 3.0.0 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_app_platform\"\u003e\u003c/a\u003e [app\\_platform](#module\\_app\\_platform) | git::https://gitlab.k8s.cloud.statcan.ca/cloudnative/terraform/modules/terraform-statcan-kubernetes-app-platform.git | v4.3.0 |\n| \u003ca name=\"module_core_platform\"\u003e\u003c/a\u003e [core\\_platform](#module\\_core\\_platform) | git::https://gitlab.k8s.cloud.statcan.ca/cloudnative/terraform/modules/terraform-statcan-kubernetes-core-platform.git | v2.18.0 |\n| \u003ca name=\"module_namespace_daaas_system\"\u003e\u003c/a\u003e [namespace\\_daaas\\_system](#module\\_namespace\\_daaas\\_system) | git::https://github.com/canada-ca-terraform-modules/terraform-kubernetes-namespace.git | v2.2.0 |\n| \u003ca name=\"module_platform_infrastructure\"\u003e\u003c/a\u003e [platform\\_infrastructure](#module\\_platform\\_infrastructure) | git::https://gitlab.k8s.cloud.statcan.ca/cloudnative/terraform/modules/terraform-azure-statcan-cloud-native-platform-infrastructure.git | n/a |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_administrative_groups\"\u003e\u003c/a\u003e [administrative\\_groups](#input\\_administrative\\_groups) | List of administrative groups | `list(string)` | n/a | yes |\n| \u003ca name=\"input_aks_system_subnet_id\"\u003e\u003c/a\u003e [aks\\_system\\_subnet\\_id](#input\\_aks\\_system\\_subnet\\_id) | AKS System subnet ID | `any` | n/a | yes |\n| \u003ca name=\"input_argo_workflows_client_id\"\u003e\u003c/a\u003e [argo\\_workflows\\_client\\_id](#input\\_argo\\_workflows\\_client\\_id) | The Client ID for Argo Workflows | `any` | n/a | yes |\n| \u003ca name=\"input_argo_workflows_client_secret\"\u003e\u003c/a\u003e [argo\\_workflows\\_client\\_secret](#input\\_argo\\_workflows\\_client\\_secret) | The Client Secret for Argo Workflows | `any` | n/a | yes |\n| \u003ca name=\"input_azure_region\"\u003e\u003c/a\u003e [azure\\_region](#input\\_azure\\_region) | Region to deploy Azure resources in | `any` | n/a | yes |\n| \u003ca name=\"input_azure_tags\"\u003e\u003c/a\u003e [azure\\_tags](#input\\_azure\\_tags) | Tags to apply to Azure resources | `map(string)` | n/a | yes |\n| \u003ca name=\"input_cluster_node_resource_group_name\"\u003e\u003c/a\u003e [cluster\\_node\\_resource\\_group\\_name](#input\\_cluster\\_node\\_resource\\_group\\_name) | Name of resource group containing the AKS cluster nodes | `any` | n/a | yes |\n| \u003ca name=\"input_cluster_resource_group_name\"\u003e\u003c/a\u003e [cluster\\_resource\\_group\\_name](#input\\_cluster\\_resource\\_group\\_name) | Name of resource group containing the AKS cluster | `any` | n/a | yes |\n| \u003ca name=\"input_dns_zone_id\"\u003e\u003c/a\u003e [dns\\_zone\\_id](#input\\_dns\\_zone\\_id) | Azure DNS Zone ID | `any` | n/a | yes |\n| \u003ca name=\"input_dns_zone_name\"\u003e\u003c/a\u003e [dns\\_zone\\_name](#input\\_dns\\_zone\\_name) | Name of the dns zone | `any` | n/a | yes |\n| \u003ca name=\"input_dns_zone_resource_group_name\"\u003e\u003c/a\u003e [dns\\_zone\\_resource\\_group\\_name](#input\\_dns\\_zone\\_resource\\_group\\_name) | Azure DNS Zone ID | `any` | n/a | yes |\n| \u003ca name=\"input_dns_zone_subscription_id\"\u003e\u003c/a\u003e [dns\\_zone\\_subscription\\_id](#input\\_dns\\_zone\\_subscription\\_id) | Azure DNS Zone ID | `any` | n/a | yes |\n| \u003ca name=\"input_gk_audit_limits_cpu\"\u003e\u003c/a\u003e [gk\\_audit\\_limits\\_cpu](#input\\_gk\\_audit\\_limits\\_cpu) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_gk_audit_limits_memory\"\u003e\u003c/a\u003e [gk\\_audit\\_limits\\_memory](#input\\_gk\\_audit\\_limits\\_memory) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_gk_audit_requests_cpu\"\u003e\u003c/a\u003e [gk\\_audit\\_requests\\_cpu](#input\\_gk\\_audit\\_requests\\_cpu) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_gk_audit_requests_memory\"\u003e\u003c/a\u003e [gk\\_audit\\_requests\\_memory](#input\\_gk\\_audit\\_requests\\_memory) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_gk_limits_cpu\"\u003e\u003c/a\u003e [gk\\_limits\\_cpu](#input\\_gk\\_limits\\_cpu) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_gk_limits_memory\"\u003e\u003c/a\u003e [gk\\_limits\\_memory](#input\\_gk\\_limits\\_memory) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_gk_replicas\"\u003e\u003c/a\u003e [gk\\_replicas](#input\\_gk\\_replicas) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_gk_requests_cpu\"\u003e\u003c/a\u003e [gk\\_requests\\_cpu](#input\\_gk\\_requests\\_cpu) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_gk_requests_memory\"\u003e\u003c/a\u003e [gk\\_requests\\_memory](#input\\_gk\\_requests\\_memory) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_grafana_client_id\"\u003e\u003c/a\u003e [grafana\\_client\\_id](#input\\_grafana\\_client\\_id) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_grafana_client_secret\"\u003e\u003c/a\u003e [grafana\\_client\\_secret](#input\\_grafana\\_client\\_secret) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_kubecost_client_id\"\u003e\u003c/a\u003e [kubecost\\_client\\_id](#input\\_kubecost\\_client\\_id) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_kubecost_client_secret\"\u003e\u003c/a\u003e [kubecost\\_client\\_secret](#input\\_kubecost\\_client\\_secret) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_kubecost_cluster_profile\"\u003e\u003c/a\u003e [kubecost\\_cluster\\_profile](#input\\_kubecost\\_cluster\\_profile) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_kubecost_product_key\"\u003e\u003c/a\u003e [kubecost\\_product\\_key](#input\\_kubecost\\_product\\_key) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_kubecost_shared_namespaces\"\u003e\u003c/a\u003e [kubecost\\_shared\\_namespaces](#input\\_kubecost\\_shared\\_namespaces) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_kubecost_slack_token\"\u003e\u003c/a\u003e [kubecost\\_slack\\_token](#input\\_kubecost\\_slack\\_token) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_kubecost_storage_access_key\"\u003e\u003c/a\u003e [kubecost\\_storage\\_access\\_key](#input\\_kubecost\\_storage\\_access\\_key) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_kubecost_storage_account\"\u003e\u003c/a\u003e [kubecost\\_storage\\_account](#input\\_kubecost\\_storage\\_account) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_kubecost_storage_container\"\u003e\u003c/a\u003e [kubecost\\_storage\\_container](#input\\_kubecost\\_storage\\_container) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_kubecost_token\"\u003e\u003c/a\u003e [kubecost\\_token](#input\\_kubecost\\_token) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_kubernetes_identity_object_id\"\u003e\u003c/a\u003e [kubernetes\\_identity\\_object\\_id](#input\\_kubernetes\\_identity\\_object\\_id) | Kubernetes identity object ID | `any` | n/a | yes |\n| \u003ca name=\"input_logging_elasticsearch_url\"\u003e\u003c/a\u003e [logging\\_elasticsearch\\_url](#input\\_logging\\_elasticsearch\\_url) | URL to elasticsearch for logging | `any` | n/a | yes |\n| \u003ca name=\"input_prefix\"\u003e\u003c/a\u003e [prefix](#input\\_prefix) | Prefix for Azure resources | `any` | n/a | yes |\n| \u003ca name=\"input_subscription_id\"\u003e\u003c/a\u003e [subscription\\_id](#input\\_subscription\\_id) | Azure Subscription ID | `any` | n/a | yes |\n| \u003ca name=\"input_tenant_id\"\u003e\u003c/a\u003e [tenant\\_id](#input\\_tenant\\_id) | Azure Tenant ID | `any` | n/a | yes |\n| \u003ca name=\"input_vault_address\"\u003e\u003c/a\u003e [vault\\_address](#input\\_vault\\_address) | n/a | `any` | n/a | yes |\n| \u003ca name=\"input_additional_alertmanagers\"\u003e\u003c/a\u003e [additional\\_alertmanagers](#input\\_additional\\_alertmanagers) | List of additional Alertmanager targets for the Platform Prometheus | `list(string)` | `[]` | no |\n| \u003ca name=\"input_global_fluentd_config\"\u003e\u003c/a\u003e [global\\_fluentd\\_config](#input\\_global\\_fluentd\\_config) | Global Fluentd config, usually used to define the default plugin | `string` | `\"\u003cplugin default\u003e\\n  @type null\\n\u003c/plugin\u003e\\n\"` | no |\n| \u003ca name=\"input_infrastructure_pipeline_subnet_ids\"\u003e\u003c/a\u003e [infrastructure\\_pipeline\\_subnet\\_ids](#input\\_infrastructure\\_pipeline\\_subnet\\_ids) | Subnet ID of infrastructure pipeline | `list(string)` | `[]` | no |\n| \u003ca name=\"input_kiali_grafana_token\"\u003e\u003c/a\u003e [kiali\\_grafana\\_token](#input\\_kiali\\_grafana\\_token) | The token used to authentiate Kiali to Grafana. | `string` | `\"\"` | no |\n| \u003ca name=\"input_kiali_resources\"\u003e\u003c/a\u003e [kiali\\_resources](#input\\_kiali\\_resources) | The limits and requests to set on the Kiali pod. | \u003cpre\u003eobject({\u003cbr\u003e    limits = optional(object({\u003cbr\u003e      cpu    = optional(string, \"50m\"),\u003cbr\u003e      memory = optional(string, \"256Mi\"),\u003cbr\u003e      }), {\u003cbr\u003e      cpu    = \"50m\",\u003cbr\u003e      memory = \"256Mi\",\u003cbr\u003e    }),\u003cbr\u003e    requests = optional(object({\u003cbr\u003e      cpu    = optional(string, \"10m\"),\u003cbr\u003e      memory = optional(string, \"128Mi\"),\u003cbr\u003e      }), {\u003cbr\u003e      cpu    = \"10m\",\u003cbr\u003e      memory = \"128Mi\",\u003cbr\u003e    }),\u003cbr\u003e  })\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_kubecost_additional_alert_config\"\u003e\u003c/a\u003e [kubecost\\_additional\\_alert\\_config](#input\\_kubecost\\_additional\\_alert\\_config) | Additional alerts for kubecost to pick up. Default should never trigger | `string` | `\"- type: budget\\n  threshold: 100000000000000\\n  window: 1d\\n  aggregation: namespace\\n  filter: default\\n\"` | no |\n| \u003ca name=\"input_kubecost_alert_slack_webhook_url\"\u003e\u003c/a\u003e [kubecost\\_alert\\_slack\\_webhook\\_url](#input\\_kubecost\\_alert\\_slack\\_webhook\\_url) | Kubecost global url for reporting alerts | `string` | `\"https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX\"` | no |\n| \u003ca name=\"input_kubecost_prometheus_node_selector\"\u003e\u003c/a\u003e [kubecost\\_prometheus\\_node\\_selector](#input\\_kubecost\\_prometheus\\_node\\_selector) | The nodeSelector to apply to the Prometheus instance backing Kubecost. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_load_balancer_subnet\"\u003e\u003c/a\u003e [load\\_balancer\\_subnet](#input\\_load\\_balancer\\_subnet) | Load balancer subnet | `any` | `null` | no |\n| \u003ca name=\"input_logging_elasticsearch_password\"\u003e\u003c/a\u003e [logging\\_elasticsearch\\_password](#input\\_logging\\_elasticsearch\\_password) | Elasticsearch password for logging | `string` | `\"\"` | no |\n| \u003ca name=\"input_logging_elasticsearch_username\"\u003e\u003c/a\u003e [logging\\_elasticsearch\\_username](#input\\_logging\\_elasticsearch\\_username) | Elasticsearch username for logging | `string` | `\"\"` | no |\n| \u003ca name=\"input_meshconfig_enable_tracing\"\u003e\u003c/a\u003e [meshconfig\\_enable\\_tracing](#input\\_meshconfig\\_enable\\_tracing) | Flag to control generation of trace spans and request IDs. | `bool` | `false` | no |\n| \u003ca name=\"input_meshconfig_zipkin_address\"\u003e\u003c/a\u003e [meshconfig\\_zipkin\\_address](#input\\_meshconfig\\_zipkin\\_address) | The URL to send zipkin compatible traces to | `string` | `\"zipkin.istio-system:9411\"` | no |\n| \u003ca name=\"input_prometheus_additional_scrape_config\"\u003e\u003c/a\u003e [prometheus\\_additional\\_scrape\\_config](#input\\_prometheus\\_additional\\_scrape\\_config) | Default additional scrape configuration for prometheus | `string` | `\"- job_name: kubecost\\n  honor_labels: true\\n  scrape_interval: 1m\\n  scrape_timeout: 10s\\n  metrics_path: /metrics\\n  scheme: http\\n  dns_sd_configs:\\n  - names:\\n    - kubecost-cost-analyzer.kubecost-system\\n    type: 'A'\\n    port: 9003\\n  metric_relabel_configs:\\n  - source_labels: [persistentvolumeclaim]\\n    separator: ;\\n    regex: (aaw-unclassified|aaw-protected-b|aaw-unclassified-ro|fdi.*unclassified|fdi.*protected-b)\\n    replacement: $1\\n    action: drop\\n  - source_labels: [persistentvolume]\\n    separator: ;\\n    regex: (.*aaw-unclassified|.*aaw-protected-b|.*aaw-unclassified-ro|.*fdi-protected-b.*|.*fdi-unclassified.*)\\n    replacement: $1\\n    action: drop\\n\"` | no |\n| \u003ca name=\"input_prometheus_disk_size\"\u003e\u003c/a\u003e [prometheus\\_disk\\_size](#input\\_prometheus\\_disk\\_size) | n/a | `string` | `\"80Gi\"` | no |\n| \u003ca name=\"input_prometheus_resources\"\u003e\u003c/a\u003e [prometheus\\_resources](#input\\_prometheus\\_resources) | The limits and requests to set on the Prometheus pod. | \u003cpre\u003eobject({\u003cbr\u003e    limits   = optional(map(string), {}),\u003cbr\u003e    requests = optional(map(string), {}),\u003cbr\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr\u003e  \"limits\": {},\u003cbr\u003e  \"requests\": {}\u003cbr\u003e}\u003c/pre\u003e | no |\n\n\n\u003c!-- END_TF_DOCS --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstatcan%2Fterraform-statcan-aaw-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstatcan%2Fterraform-statcan-aaw-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstatcan%2Fterraform-statcan-aaw-platform/lists"}