代码之家  ›  专栏  ›  技术社区  ›  Rotem jackoby

Terraform-在一个事务中创建资源/设置回滚策略

  •  0
  • Rotem jackoby  · 技术社区  · 7 年前

    在我的一个网络中,我不小心配置了错误的值,导致 资源创建失败。

    但我更希望所有流程都按如下方式执行 一笔交易 .

    Terraform在遇到错误时不会自动回滚。 相反,您的地形状态文件已使用任何 已成功完成的资源。请解决上面的错误

    我的问题是: 在某些资源已创建但某些资源已失败的情况下?

    下面是一个简单的例子来重现这个问题。

    在局部变量中 'az_list' 仅将值从“名称”更改为“区域ID”:

    az_list = "${data.aws_availability_zones.available.zone_ids}"
    


    资源.tf:

    provider "aws" {
      region = "${var.region}"
    }
    
    ### Local data ###
    data "aws_availability_zones" "available" {}
    
    locals {
      #In order to reproduce an error: Change 'names' to 'zone_ids'
      az_list = "${data.aws_availability_zones.available.names}"  
    }
    
    ### Vpc ###
    resource "aws_vpc" "base_vpc" {
      cidr_block           = "${var.cidr}"
      instance_tenancy     = "default"
      enable_dns_hostnames = "false"
      enable_dns_support   = "true"
    }
    
    ### Subnets ###
    resource "aws_subnet" "private" {
      vpc_id            = "${aws_vpc.base_vpc.id}"
      cidr_block        = "${cidrsubnet( var.cidr, 8, count.index + 1 + length(local.az_list) )}"
      availability_zone = "${element(local.az_list, count.index)}"
      count             = 2
    }
    
    resource "aws_subnet" "public" {
      vpc_id            = "${aws_vpc.base_vpc.id}"
      cidr_block        = "${cidrsubnet(var.cidr, 8, count.index + 1)}"
      availability_zone = "${element(local.az_list, count.index)}"
      count             = 2
      map_public_ip_on_launch = true
    }
    

    变量.tf:

    variable "region" {
      description = "Name of region"
      default     = "ap-south-1"
    }
    
    
    variable "cidr" {
      description = "The CIDR block for the VPC"
      default     = "10.0.0.0/16"
    }
    
    0 回复  |  直到 7 年前