使用terraform在GCP作曲器中出现运行状况检查错误

时间:2019-12-09 04:12:27

标签: google-cloud-platform terraform google-cloud-composer terraform-provider-gcp

我试图使用terraform在GCP中创建Cloud Composer。我使用的是Terraform版本Terraform v0.12.5。但是我无法使用Terraform启动实例。

我遇到以下错误

Error: Error waiting to create Environment: Error waiting for Creating Environment: Error code 3, message: Http error status code: 400
Http error message: BAD REQUEST
Additional errors:
    {"ResourceType":"appengine.v1.version","ResourceErrorCode":"400","ResourceErrorMessage":{"code":400,"message":"Legacy health checks are no longer supported for the App Engine Flexible environment. Please remove the 'health_check' section from your app.yaml and configure updated health checks. For instructions on migrating to split health checks see https://cloud.google.com/appengine/docs/flexible/java/migrating-to-split-health-checks","status":"INVALID_ARGUMENT","details":[],"statusMessage":"Bad Request","requestPath":"https://appengine.googleapis.com/v1/apps/qabc39fc336994cc4-tp/services/default/versions","httpMethod":"POST"}}

main.tf

    resource "google_composer_environment" "sample-composer" {
      provider= google-beta
      project = "${var.project_id}"
      name    = "${var.google_composer_environment_name}"
      region  = "${var.region}"
      config {
        node_count = "${var.composer_node_count}"

        node_config {
          zone         = "${var.zone}"
          disk_size_gb = "${var.disk_size_gb}"
          machine_type = "${var.composer_machine_type}"
          network      = google_compute_network.xxx-network.self_link
          subnetwork = google_compute_subnetwork.xxx-subnetwork.self_link
        }
        software_config {
          env_variables = {
              AIRFLOW_CONN_SAMPLEMEDIA_FTP_CONNECTION = "ftp://${var.ftp_user}:${var.ftp_password}@${var.ftp_host}"
        }
          image_version  = "${var.composer_airflow_version}"
          python_version = "${var.composer_python_version}"
        }
      }
    }

resource "google_compute_network" "sample-network" {
  name    = "composer-xxx-network"
  project = "${var.project_id}"
  auto_create_subnetworks = false
}

resource "google_compute_subnetwork" "sample-subnetwork" {
  name          = "composer-xxx-subnetwork"
  project       = "${var.project_id}"
  ip_cidr_range = "10.2.0.0/16"
  region        = "${var.region}"
  network       = google_compute_network.xxx-network.self_link
}

variables.tf

# Machine specific information for creating Instance in GCP

variable "project_id" {
  description = "The name of GCP project"
  default = "sample-test"
}

variable "google_composer_environment_name" {
  description = "The name of the instance"
  default = "sample-analytics-dev"
}

variable "region" {
  description = "The name of GCP region"
  default = "europe-west1"
}

variable "composer_node_count" {
  description = "The number of node count"
  default = "3"
}

variable "zone" {
  description = "The zone in which instance to be launched"
  default = "europe-west1-c"
}

variable "disk_size_gb" {
  description = "The machine size in GB"
  default = "100"
}

variable "composer_machine_type" {
  description = "The type of machine to be launched in GCP"
  default = "n1-standard-1"
}

# Environmental Variables

variable "ftp_user" {
  description = "Environmental variables for FTP user"
  default = "test"
}

variable "ftp_password" {
  description = "Environmental variables for FTP password"
  default = "4444erf"
}

variable "ftp_host" {
  description = "Environmental variables for FTP host"
  default = "sample.logs.llnw.net"
}

# Versions for Cloud Composer, Aiflow and Python

variable "composer_airflow_version" {
  description = "The composer and airflow versions to launch instance in GCP"
  default = "composer-1.7.2-airflow-1.10.2"
}

variable "composer_python_version" {
  description = "The version of python"
  default = "3"
}

# Network information

variable "composer_network_name" {
  description = "Environmental variables for FTP user"
  default = "composer-xxx-network"
}

variable "composer_subnetwork_name" {
  description = "Environmental variables for FTP user"
  default = "composer-xxx-subnetwork"
}        

在GCP平台上创建Composer可以正常工作。使用Terraform进行创建时,需要进行健康检查。

1 个答案:

答案 0 :(得分:0)

我已经在我的GCP Cloudshell Terraform二进制文件中测试了您当前的用户情况,到目前为止没有发生任何问题,Composer环境已成功创建:

$ terraform -v                                                                                                                                                                                          
Terraform v0.12.9
+ provider.google v3.1.0
+ provider.google-beta v3.1.0

我身边的一些担忧:

您报告的问题可能与旧式运行状况检查的使用有关,旧式运行状况检查实际上已被弃用并由split health checks代替:

  

从2019年9月15日开始,如果您使用旧版运行状况检查,   您的应用程序将继续运行并接受运行状况检查,但是   您将无法部署新版本的应用程序。

您尚未指定有关Terraform GCP provider版本的任何信息部分,并且我想这个问题可以隐藏在那里,正如我在此Changelog中所看到的,split_health_checksgoogle_app_engine_application.feature_settings已发布,因此已在3.0.0-beta.1中启用。

随时添加更多见解,以支持您解决当前问题。