{"id":15694054,"url":"https://github.com/apparentlymart/padstone","last_synced_at":"2025-07-19T00:36:49.943Z","repository":{"id":66568571,"uuid":"38942372","full_name":"apparentlymart/padstone","owner":"apparentlymart","description":null,"archived":false,"fork":false,"pushed_at":"2016-05-29T01:30:22.000Z","size":23,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-04T21:12:12.347Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apparentlymart.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2015-07-11T22:20:34.000Z","updated_at":"2024-04-13T01:19:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"89061ffd-852e-422b-8a06-8f285d36a71c","html_url":"https://github.com/apparentlymart/padstone","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/apparentlymart/padstone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apparentlymart%2Fpadstone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apparentlymart%2Fpadstone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apparentlymart%2Fpadstone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apparentlymart%2Fpadstone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apparentlymart","download_url":"https://codeload.github.com/apparentlymart/padstone/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apparentlymart%2Fpadstone/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265863793,"owners_count":23840888,"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","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-10-03T18:51:41.056Z","updated_at":"2025-07-19T00:36:49.872Z","avatar_url":"https://github.com/apparentlymart.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Padstone: a prototype of using Terraform for builds\n\nThis codebase is currently just a prototype of a new frontend on top of the Terraform core which serves\nPacker-like use cases around building applications for later deployment.\n\nIt differs from standard Terraform in the following regards:\n\n* The set of subcommands is more appropriate for a build workflow, compared to terraform's deployment workflow:\n  * ``build``: create an empty state, read a config, and create all of the resources in this config before writing out\n  a state file of the result. Unlike ``terraform ``apply this always starts from an empty state and thus creates new\n  resources on each run.\n  * ``destroy``: given an existing state file, destroy all of the resources in the state. This allows the resources from\n  earlier builds to be easily destroyed when they are no longer required, improving on the capabilities of Packer today.\n  * ``publish``: given an existing state file, publish it to a Terraform remote state backend so that it can be easily\n  consumed by a downstream Terraform config using the ``terraform_remote_state`` resource.\n* Has a new concept of a \"temporary resource\", which is created during the build process but destroyed once the main\nresources have been created. This allows the creation of infrastructure that is used during the build but not needed\nonce the build is complete, like an EC2 instance to use to produce an AMI.\n\nAt present this is just intended as a vehicle for discussion, and has been referenced over in\n[Terraform issue #2789](https://github.com/hashicorp/terraform/issues/2789).\n\nFor more details, see my blog post\n[Padstone: Terraform for Software Builds](http://apparently.me.uk/padstone-terraform-for-deployment/).\n\n----\n\nIf you'd like to build Padstone to give it a try, you'll need Go 1.4+ just like for Terraform itself. Since Padstone uses\nTerraform's plugins you also need to also build the Terraform plugin binaries and place them in the same directory as the\n``padstone`` binary. A relativey-easy way to achieve this is to set up a normal Terraform development environment and then\ninstall Padstone into it:\n\n```\ngo install github.com/apparentlymart/padstone/cmd/padstone\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapparentlymart%2Fpadstone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapparentlymart%2Fpadstone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapparentlymart%2Fpadstone/lists"}