Getting Started
Status: Stable Today OpenTaco focuses on state management (units, locks, HTTP/S3 backends, dependencies & status). Prerequisites:- Go 1.25+
- Terraform 1.6+ (or OpenTofu)
- AWS creds set up if you want S3 persistence
opentaco/
:
- 405 on LOCK/UNLOCK → ensure service wires explicit routes for custom verbs.
- 409 on save → service must read lock ID from header or query
?ID=
. - 409 on Create → unit exists already; import, change
id
, or delete then apply.
Using the S3‑compatible backend
OpenTaco also exposes a minimal S3‑compatible endpoint at/s3
that works with Terraform’s backend "s3"
.
- Configure an AWS profile that uses the CLI to mint short‑lived creds via
credential_process
:
- Use an absolute path to the
taco
binary; quote it if the path contains spaces. - Ensure the binary is executable (
chmod +x /absolute/path/to/taco
).
- Backend block in your Terraform project:
- Run the flow:
401
fromtaco creds
→ re‑login:./taco login --force-login
; pin a stable signing key in the server for fewer re‑logins.126
fromcredential_process
→ path not executable or not absolute; quote the path andchmod +x
.- Init loops with frequent GETs → ensure your service is updated (empty state returns 404) and
use_lockfile = true
is present.
Dependencies and Status
OpenTaco tracks output-level dependencies across units using a dedicated graph workspace (__opentaco_system
) and a Terraform resource (opentaco_dependency
). After declaring edges in a small system workspace, apply your normal unit workspaces and use the CLI to view status:
- up to date (green), needs re-apply (red), might need re-apply (yellow).
examples/dependencies/
for a runnable A→B→C demo.