target = [ # dev {"region": "us-west-2", "cluster_name": "centralized-storage-dev-regional-us-west-2", "reference_node_group_name": "o11y-regional-us-west-2-worker-node-group-1a"}, {"region": "us-east-1", "cluster_name": "o11y-dev-regional-us-east-1", "reference_node_group_name": "worker"}, # stg {"region": "us-west-2", "cluster_name": "o11y-staging-regional-us-west-2", "reference_node_group_name": "o11y-staging-regional-us-west-2-data-node-group-a"}, # prod {"region": "ap-northeast-2", "cluster_name": "o11y-prod-regional-ap-northeast-2", "reference_node_group_name": "o11y-prod-regional-ap-northeast-2a-data"}, {"region": "ap-south-1", "cluster_name": "o11y-prod-regional-ap-south-1", "reference_node_group_name": "o11y-prod-regional-ap-south-1a-data-new"}, {"region": "ap-southeast-3", "cluster_name": "o11y-prod-regional-ap-southeast-3", "reference_node_group_name": "o11y-prod-regional-ap-southeast-3a-data"}, {"region": "eu-central-1", "cluster_name": "o11y-prod-regional-eu-central-1", "reference_node_group_name": "o11y-prod-regional-eu-central-1a-data-new"}, {"region": "us-east-1", "cluster_name": "o11y-prod-regional-us-east-1", "reference_node_group_name": "o11y-prod-regional-us-east-1a-data-2025"}, ] 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", "") ref = t.get("reference_node_group_name", "") plan_file = f"plan-{_safe_name(region)}-{_safe_name(cluster)}.tfplan" plan_cmd = ( 'terraform plan -input=false \\\n' f' -var "region={region}" \\\n' f' -var "cluster_name={cluster}" \\\n' f' -var "reference_node_group_name={ref}" \\\n' f' -out={plan_file}' ) apply_cmd = f"terraform apply -input=false {plan_file}" print(f"# target {i}") print(plan_cmd) print() print(apply_cmd) print("\n" + ("-" * 60) + "\n") if __name__ == "__main__": generate_commands(target)