The tofu controller allows me to apply my terraform config in a gitops way.
Ref: https://flux-iac.github.io/tofu-controller/use-tf-controller/backup-and-restore-a-Terraform-state/
WORKSPACE=default
NAME=homelab-iac
kubectl get secret tfstate-${WORKSPACE}-${NAME} \
-ojsonpath='{.data.tfstate}' \
| base64 -d | gzip -d > terraform.tfstategzip terraform.tfstate
WORKSPACE=default
NAME=my-stack
kubectl create secret \
generic tfstate-${WORKSPACE}-${NAME} \
--from-file=tfstate=terraform.tfstate.gz \
--dry-run=client -o=yaml \
| yq e '.metadata.annotations["encoding"]="gzip"' - \
> tfstate-${WORKSPACE}-${NAME}.yaml
kubectl apply -f tfstate-${WORKSPACE}-${NAME}.yamlYou must set first
apiVersion: infra.contrib.fluxcd.io/v1alpha2
kind: Terraform
metadata:
name: homelab-iac
namespace: flux-system
spec:
interval: 1m
# approvePlan: auto
path: ./
sourceRef:
kind: GitRepository
name: homelab-iac
namespace: flux-system
varsFrom:
- kind: Secret
name: homelab-iac-secrets
+ storeReadablePlan: humanAnd then you can do:
tfctl show plan homelab-iac