{"id":20541254,"url":"https://github.com/seal-io/terraform-deployer","last_synced_at":"2025-07-22T01:04:17.029Z","repository":{"id":132866377,"uuid":"609714893","full_name":"seal-io/terraform-deployer","owner":"seal-io","description":null,"archived":false,"fork":false,"pushed_at":"2024-01-12T11:18:20.000Z","size":18,"stargazers_count":1,"open_issues_count":0,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-11T11:43:20.487Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"alexcodelf/terraform-deployment","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seal-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2023-03-05T02:17:00.000Z","updated_at":"2024-01-12T10:31:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"a369c929-7470-4609-a14e-6c960b4855a7","html_url":"https://github.com/seal-io/terraform-deployer","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/seal-io/terraform-deployer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seal-io%2Fterraform-deployer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seal-io%2Fterraform-deployer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seal-io%2Fterraform-deployer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seal-io%2Fterraform-deployer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seal-io","download_url":"https://codeload.github.com/seal-io/terraform-deployer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seal-io%2Fterraform-deployer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266405405,"owners_count":23923536,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":[],"created_at":"2024-11-16T01:20:48.457Z","updated_at":"2025-07-22T01:04:17.005Z","avatar_url":"https://github.com/seal-io.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terraform Deployer\n\n[![](https://img.shields.io/github/actions/workflow/status/seal-io/terraform-deployer/docker-build.yml?label=build)](https://github.com/seal-io/terraform-deployer/actions)\n[![](https://img.shields.io/docker/image-size/sealio/terraform-deployer/main?label=docker)](https://hub.docker.com/r/sealio/terraform-deployer/tags)\n[![](https://img.shields.io/github/v/tag/seal-io/terraform-deployer?label=release)](https://github.com/seal-io/terraform-deployer/releases)\n\nThis image is used for rapid deployment by [Walrus](https://github.com/seal-io/walrus), it's close to [hashicorp/terroform](https://hub.docker.com/r/hashicorp/terraform), but provides Terraform mirroring ability.\n\nThis tool is maintained by [Seal](https://github.com/seal-io).\n\nTo build specific Terraform version with the following script. \n\n```shell\n$ docker build --build-arg TERRAFORM_VERSION=\u003cVERSION\u003e --tag sealio/terraform-deployer:dev -f Dockerfile . \n```\n\n## Implied Mirroring\n\nThe [Implied Local Mirror Directories](https://developer.hashicorp.com/terraform/cli/config/config-file#implied-local-mirror-directories) power this mode.\n\nTerraform will try all configs below `provider_installation` to select the newest Provider version available across them, this causes local mirroring cache failure due to a new remote version.\n\nTo caching succeed, Terraform Deployer searches the Provider Mirror directory(`/usr/share/terraform/providers/plugins`) and construct a proper [Terraform Client Configuration](https://developer.hashicorp.com/terraform/cli/config/config-file) as below for Terraform running.\n\n```hcl\n# find /usr/share/terraform/providers -type d -maxdepth 3 -mindepth 3\nprovider_installation {\n  filesystem_mirror {\n    path    = \"/usr/share/terraform/providers/plugins\"\n  }\n  direct {\n    exclude = [\n      \"registry.terraform.io/hashicorp/kubernetes\",\n      \"registry.terraform.io/hashicorp/helm\",\n      \"registry.terraform.io/hashicorp/aws\",\n      ...\n    ]\n  }\n}\n```\n\n\u003e Please use [terraform providers mirror](https://developer.hashicorp.com/terraform/cli/commands/providers/mirror) to generate the Provider Mirror directory.\n\nBy default, this image hosts the Terraform Providers retrived from the [Walrus Catalog](https://github.com/walrus-catalog).\n\n## Network Mirroring\n\nGenerally, when Terraform template declares its Provider version that matches or ranges in the caching versions of [Implied Mirroring](#implied-mirroring), the Implied Mirroring works well. But if out of the [Version Constraints](https://developer.hashicorp.com/terraform/language/expressions/version-constraints), the Implied Mirroring will panic.\n\n```\n╷\n│ Error: Failed to query available provider packages\n│\n│ Could not retrieve the list of available versions for provider\n```\n\nAt the same time, Implied Mirroring always outputs some annoying warning messages, even if the Provider not be used in the Terraform template.\n\n```\n2023-12-25T14:48:09.013Z [WARN]  ignoring file \"registry.terraform.io/aliyun/alicloud/1.214.0.json\" as possible package for registry.terraform.io/aliyun/alicloud: filename lacks expected prefix \"terraform-provider-alicloud_\"\n...\n```\n\u003e Terraform Deployer has cleaned the non-provider files in the Provider Mirror directory, so the warning messages are not presented.\n\nFortunately, we can reduce the preparation latency for the first deployment and not worry about the version constraints through [network_mirror](https://developer.hashicorp.com/terraform/cli/config/config-file#network_mirror).\n\nTerraform [Provider Network Mirror Protocol](https://developer.hashicorp.com/terraform/internals/provider-network-mirror-protocol) wants [HTTPS](https://en.wikipedia.org/wiki/HTTPS) access and always verifies the CA available. But for development or private usage, we may need a way to skip insecure(CA) verification.\n\nTerraform Deploy detects the `TF_CLI_NETWORK_MIRROR_URL` environment variable to construct the following [Terraform Client Configuration](https://developer.hashicorp.com/terraform/cli/config/config-file), and allows accessing insecure network mirror server by `TF_CLI_NETWORK_MIRROR_INSECURE_SKIP_VERIFY`.\n\n```hcl\n# TF_CLI_NETWORK_MIRROR_URL=\"https://example.com/v1/providers/\"\nprovider_installation {\n  network_mirror {\n    url = \"https://example.com/v1/providers/\"\n  }\n}\n```\n\n# License\n\nCopyright (c) 2023 [Seal, Inc.](https://seal.io)\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at [LICENSE](./LICENSE) file for details.\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseal-io%2Fterraform-deployer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseal-io%2Fterraform-deployer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseal-io%2Fterraform-deployer/lists"}