target = [ {"region": "ap-northeast-1", "cluster_name": "o11y-prod-regional-ap-northeast-1"}, {"region": "ap-southeast-1", "cluster_name": "o11y-prod-regional-ap-southeast-1"}, {"region": "ap-southeast-5", "cluster_name": "o11y-prod-regional-ap-southeast-5"}, {"region": "cn-hongkong", "cluster_name": "o11y-prod-regional-cn-hongkong"}, {"region": "na-south-1", "cluster_name": "o11y-prod-regional-na-south-1"}, {"region": "us-east-1", "cluster_name": "o11y-prod-regional-us-east-1"}, ] def _safe_name(s: str) -> str: return "".join(c if c.isalnum() or c in "-._" else "-" for c in s) def generate_commands(targets): for i, t in enumerate(targets, start=1): region = t.get("region", "") cluster = t.get("cluster_name", "") plan_file = f"plan-{_safe_name(region)}.tfplan" state_file = f"terraform-{_safe_name(region)}.tfstate" plan_cmd = ( 'terraform plan -input=false \\\n' f' -var "region={region}" \\\n' f' -var "cluster_name={cluster}" \\\n' f' -state="{state_file}" \\\n' f' -out={plan_file}' ) apply_cmd = f'terraform apply -input=false -state="{state_file}" {plan_file}' print(f"# target {i}") print(plan_cmd) print() print(apply_cmd) print("\n" + ("-" * 60) + "\n") if __name__ == "__main__": generate_commands(target)