Terraform不会破坏模块

问题描述 投票:2回答:1

[我用terraformkubernetescassandraelassandra做了一些实验,我按模块分开了,但是现在我不能删除特定的模块。

我正在使用gitlab-ci,并且将Terraform状态存储在AWS后端上。这意味着,每次我在terraform文件中更改基础结构时,在git push之后,都将使用运行gitlab-citerraform initterraform planterraform apply更新基础结构。

我的T​​erraform主文件是这个:

# main.tf
##########################################################################################################################################
# BACKEND                                                                                                                                #
##########################################################################################################################################

terraform {
  backend "s3" {}
}

data "terraform_remote_state" "state" {
  backend = "s3"
  config {
    bucket         = "${var.tf_state_bucket}"
    dynamodb_table = "${var.tf_state_table}"
    region         = "${var.aws-region}"
    key            = "${var.tf_key}"
  }
}

##########################################################################################################################################
# Modules                                                                                                                                #
##########################################################################################################################################

# Cloud Providers: -----------------------------------------------------------------------------------------------------------------------
module "gke" {
  source    = "./gke"
  project   = "${var.gcloud_project}"
  workspace = "${terraform.workspace}"
  region    = "${var.region}"
  zone      = "${var.gcloud-zone}"
  username  = "${var.username}"
  password  = "${var.password}"
}

module "aws" {
  source   = "./aws-config"
  aws-region      = "${var.aws-region}"
  aws-access_key  = "${var.aws-access_key}"
  aws-secret_key  = "${var.aws-secret_key}"
}

# Elassandra: ----------------------------------------------------------------------------------------------------------------------------
module "k8s-elassandra" {
  source   = "./k8s-elassandra"

  host     = "${module.gke.host}"
  username = "${var.username}"
  password = "${var.password}"

  client_certificate     = "${module.gke.client_certificate}"
  client_key             = "${module.gke.client_key}"
  cluster_ca_certificate = "${module.gke.cluster_ca_certificate}"
}

# Cassandra: ----------------------------------------------------------------------------------------------------------------------------
 module "k8s-cassandra" { 
   source   = "./k8s-cassandra"

   host     = "${module.gke.host}"
   username = "${var.username}"
   password = "${var.password}"

   client_certificate     = "${module.gke.client_certificate}"
   client_key             = "${module.gke.client_key}"
   cluster_ca_certificate = "${module.gke.cluster_ca_certificate}"
 }

这是我的目录树:

.
├── aws-config
│   ├── terraform_s3.tf
│   └── variables.tf
├── gke
│   ├── cluster.tf
│   ├── gcloud_access_key.json
│   ├── gcp.tf
│   └── variables.tf
├── k8s-cassandra
│   ├── k8s.tf
│   ├── limit_ranges.tf
│   ├── quotas.tf
│   ├── services.tf
│   ├── stateful_set.tf
│   └── variables.tf
├── k8s-elassandra
│   ├── k8s.tf
│   ├── limit_ranges.tf
│   ├── quotas.tf
│   ├── services.tf
│   ├── stateful_set.tf
│   └── variables.tf
├── main.tf
└── variables.tf

我在这里被封锁:

->我要删除模块k8s-cassandra

  • 如果我注释或删除main.tfmodule "k8s-cassandra" {...)中的模块,则会收到此错误:
  • TERRAFORM PLAN ...获取状态锁。这可能需要一些时间...释放状态锁。这可能需要一些时间...

错误:module.k8s-cassandra.kubernetes_stateful_set.cassandra:不存在module.k8s-cassandra.provider.kubernetes的配置;所有操作都需要提供者配置块

  • 如果我在terraform destroy -target=module.k8s-cassandra -auto-approveterraform init之间仍然插入terraform plan仍然不起作用。
  • 有人可以帮助我吗?谢谢:)

我用terraform,kubernetes,cassandra和elassandra进行了一些实验,我按模块将它们分开,但是现在我无法删除特定的模块。我正在使用gitlab-ci,并存储terraform ...

kubernetes terraform
1个回答
4
投票

此错误消息的含义是,Terraform依靠provider "kubernetes"模块内部的k8s-cassandra块来配置AWS提供程序。通过从源代码中删除模块,您已隐式删除了该配置,因此无法删除状态中已经存在的现有对象-这样做所需的提供程序配置不存在。

© www.soinside.com 2019 - 2024. All rights reserved.