{"id":19713507,"url":"https://github.com/shalomb/terrestrial","last_synced_at":"2026-05-01T21:04:59.738Z","repository":{"id":45122942,"uuid":"204912879","full_name":"shalomb/terrestrial","owner":"shalomb","description":"(Proof-of-concept) REST API framework to *aaSify terraform + ansible stacks","archived":false,"fork":false,"pushed_at":"2023-02-02T06:39:10.000Z","size":39,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-01T00:18:29.746Z","etag":null,"topics":["ansible","celery-task","flask-restplus","python-celery","python-flask","terraform"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shalomb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-2.0.txt","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":"2019-08-28T11:09:59.000Z","updated_at":"2023-09-09T17:48:48.000Z","dependencies_parsed_at":"2024-11-11T22:23:08.535Z","dependency_job_id":"43d43848-6063-4d42-bd41-5ea4c759af36","html_url":"https://github.com/shalomb/terrestrial","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/shalomb/terrestrial","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shalomb%2Fterrestrial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shalomb%2Fterrestrial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shalomb%2Fterrestrial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shalomb%2Fterrestrial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shalomb","download_url":"https://codeload.github.com/shalomb/terrestrial/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shalomb%2Fterrestrial/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32512688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"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":["ansible","celery-task","flask-restplus","python-celery","python-flask","terraform"],"created_at":"2024-11-11T22:23:04.076Z","updated_at":"2026-05-01T21:04:59.709Z","avatar_url":"https://github.com/shalomb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# terrestrial\n\nProof-of-Concept: Thin REST API shim for your existing terraform + ansible IaC\ncodebase.\n\n## Use Cases\n\n- IaaS/PaaS. Exposing IaC code projects over REST APIs such that instances\n(your IaC deliverables) can be created, managed, lifecycled, etc. e.g. Port\nyour Terraform + Ansible that manages PostgreSQL clusters into Terrestrial and\nrealize your Database-as-a-Service.\n- Defining custom operational and system boundaries around IaC. e.g. Use\nTerrestrial + $your_favourite_reverse_proxy in place of Gitlab hacked-up\npipelines to manage infrastructure.\n\n# Goals\n\n- Provide a thin \"API Service\" layer around any (within reason) Terraform and/or\n  Ansible IaC codebase to realize a X-as-a-Service offering. Define a nominal\n  interface the hosted IaC codebase should implement to be Onboarded into\n  Terrestrial.\n- Provide a full CRUD Interface using established REST patterns (e.g.\n  [POST-PUT](http://restalk-patterns.org/post-put.html) to allow long-running\n  terraform/ansible processes to create the technical resource).\n- Easy deployment: Build a docker image containing the complete bundle of\n  Terrestrial + IaC code to deploy the \"service\". Allow sourcing of IaC projects\n  from remote git repositories.\n- Dynamic Inventory: Refactor [shalomb/tofu](https://github.com/shalomb/tofu)\n  to provide a dynamic inventory of terraform resources to ansible, etc.\n- Allow for integrations into load-balancers/reverse-proxies/ADCs to augment\n  system and operational needs. Support for OAuth/OIDC/Logging.\n\n## HOWTO\n\nA write-up required but see scripts in `bin/` to get started.\n\n## IaC Interface\n\nTODO: This section is incomplete.\n\n- Use `tfvars.json` to pass resource attributes as variables from terrestrial\n  to terraform.\n- Use `terraform outputs` from terraform to state created resources.\n- Use the `terraform state` to describe the full IaC inventory to technologies\n  further up the stack (e.g. ansible, etc).\n- Use `group_vars/all` to pass resource attributes as variables to ansible.\n- Use JSON outputs to capture output from terraform's `plan`, `apply`, `destroy`,\n  etc.\n- Use custom callbacks (and so JSON) to capture output from ansible playbook runs.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshalomb%2Fterrestrial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshalomb%2Fterrestrial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshalomb%2Fterrestrial/lists"}