ragavi_ceg
ragavi_ceg

Reputation: 53

googleapi: Error 400: Precondition check failed., failedPrecondition while creating Cloud Composer Environment through Terraform

I'm trying to create Cloud Composer Environment through Terraform and getting this error

googleapi: Error 400: Precondition check failed., failedPrecondition while creating Cloud Composer Environment through Terraform

The service account of VM from which I'm trying to create composer has owner permissions in the GCP project.

I have tried with same composer configurations from GCP console and the environment got created without any issues.

I have tried disabling the Cloud Composer API and enabled it once again, yet no solution.

Eventually, for the very first time doing terraform apply, it was trying to create composer environment but ended up with version error and I changed the Image version of composer. Now I'm facing this issue. Can anyone help?

Error message from terminal

composer/main.tf

    resource "google_composer_environment" "etl_env" {
    provider = google-beta
    name     = var.env_name
    region   = var.region
    config {
    node_count = 3

    node_config {
      zone         = var.zone
      machine_type = var.node_machine_type

      network    = var.network
      subnetwork = var.app_subnet_selflink

      ip_allocation_policy {
      use_ip_aliases = true
    }
   }

   software_config {
      image_version  = var.software_image_version
      python_version = 3
   }

   private_environment_config {
      enable_private_endpoint = false
   }

   database_config {
      machine_type = var.database_machine_type
   }

   web_server_config {
      machine_type = var.web_machine_type
   }
  }
 }

composer/variables.tf

  variable "app_subnet_selflink" {
    type        = string
    description = "App Subnet Selflink"
  }

  variable "region" {
    type        = string
    description = "Region"
    default     = "us-east4"
  }

  variable "zone" {
    type        = string
    description = "Availability Zone"
    default     = "us-east4-c"
  }

  variable "network" {
    type        = string
    description = "Name of the network"
  }

  variable "env_name" {
    type        = string
    default     = "composer-etl"
    description = "The name of the composer environment"
  }

  variable "node_machine_type" {
    type        = string
    default     = "n1-standard-1"
    description = "The machine type of the worker nodes"
  }

  variable "software_image_version" {
    type        = string
    default     = "composer-1.15.2-airflow-1.10.14"
    description = "The image version used in the software configurations of composer"
  }

  variable "database_machine_type" {
    type        = string
    default     = "db-n1-standard-2"
    description = "The machine type of the database instance"
  }

  variable "web_machine_type" {
    type        = string
    default     = "composer-n1-webserver-2"
    description = "The machine type of the web server instance"
  }

Network and Subnetwork are referenced from another module and they are correct.

Upvotes: 4

Views: 9232

Answers (1)

user_9090
user_9090

Reputation: 1984

The issue will be with master_ipv4_cidr_block range. If left blank, the default value of '172.16.0.0/28' is used. As you already created it manually the range already is in use, use some other ranges.

Please follow links for more GCP and Terraform

Upvotes: 5

Related Questions