Terraform-在一项交易中创建资源/设置回滚策略

时间:2019-03-13 21:21:32

标签: amazon-web-services terraform terraform-provider-aws infrastructure-as-a-code

我将Terraform与AWS用作提供程序。

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

因此情况是部分资源已启动并正在运行, 但我希望所有流程都作为一项交易执行。

我很熟悉Terraform在这种情况下提供的输出:

  

面对错误,Terraform不会自动回滚。   相反,您的Terraform状态文件已部分更新为   成功完成的资源。请解决以上错误   并再次应用以逐步更改您的基础架构。

我的问题是: 在某些资源被创建而某些资源失败的情况下,还有办法设置回滚策略吗? < / p>

下面是重现该问题的简单示例。

在局部变量'az_list'中,只需将值从“名称”更改为“ zone_ids”即可:

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

然后将创建具有一些默认安全组和路由表但不包含子网的VPC。


resources.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
}

variables.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 个答案:

没有答案