CloudBooter bootstraps cloud accounts from the terminal. It looks at what you already have, stays inside free-tier limits where it can, writes plain Terraform you can read, and only applies when you say so.
Oracle Cloud (OCI) is the mature path today. GCP and Cloudflare are usable scaffolds. AWS and Azure are planned.
| Provider | Status | Notes |
|---|---|---|
| OCI | Supported | Bash + PowerShell setup scripts, Python CLI, Always Free guardrails, optional Bitwarden multi-account resize |
| GCP | In progress | e2-micro baseline under cloud/GCP/ |
| Cloudflare | In progress | Workers + KV + R2 + D1 free-plan baseline under cloud/Cloudflare/ |
| AWS | Planned | VPC + EC2 baseline |
| Azure | Planned | Resource group + VNet + VM baseline |
Same shape on every provider:
- Authenticate with that cloud's usual local method.
- Inventory existing resources.
- Plan a small default configuration (prompts, or env vars for automation).
- Validate against free-tier / free-plan caps.
- Generate Terraform into a directory you can inspect.
- Optionally run
terraform init,plan, andapply.
Oracle cut Always Free A1 to 2 OCPU / 12 GB in June 2026. The default profile is one A1 instance with a 200 GB boot volume. Details: cloud/OCI/docs/FREE_TIER_LIMITS.md.
cd cloud/OCI
./setup_oci_terraform.shWindows:
cd cloud\OCI
.\setup_oci_terraform.ps1Generate without applying:
NON_INTERACTIVE=true AUTO_DEPLOY=false ./setup_oci_terraform.shThen open the generated .tf files, run terraform plan, and apply only if the plan looks right.
Provider docs:
Filenames vary by provider. OCI typically writes:
provider.tf,variables.tf,data_sources.tf,main.tf- optional
block_volumes.tf cloud-init.yaml- SSH keys under
./ssh_keys/(gitignored)
Treat the folder as disposable while you learn. If you keep a stack, move it to its own repo and use a remote state backend.
Cloud accounts bill. Free tiers change. Habits that keep you out of trouble:
- Read
terraform planbefore every apply. - Set a budget alert on day one.
- Prefer the billing-safe defaults.
- Run
terraform destroywhen you are done experimenting. - Know where your state file lives.
.
├─ cloud/
│ ├─ OCI/ # reference implementation
│ ├─ GCP/ # in progress
│ └─ Cloudflare/ # in progress
├─ helper_scripts/ # small ops helpers (not the main product)
├─ docs/plans/ # design notes
├─ CONTRIBUTING.md
├─ SECURITY.md
├─ SUPPORT.md
└─ LICENSE
Each provider directory has its own README, usage notes, and docs.
Providers own their own dependencies and tests.
cd cloud/OCI && python -m pytest tests/
cd cloud/GCP && python -m pytest tests/
cd cloud/Cloudflare && python -m pytest tests/CI currently checks that backend.tf is not committed and shellchecks one helper script. It does not yet run the full pytest suites — run those locally before you open a PR.
See CONTRIBUTING.md. Short version: work in one cloud/<PROVIDER>/ tree, keep free-tier constants in sync across shell/Python/docs, and never commit secrets or Terraform state.
MIT. See LICENSE.