hashicorp / terraform-provider-google

Terraform Provider for Google Cloud Platform
https://registry.terraform.io/providers/hashicorp/google/latest/docs
Mozilla Public License 2.0
2.32k stars 1.73k forks source link

Error refreshing state: unexpected EOF #1930

Closed brettcurtis closed 6 years ago

brettcurtis commented 6 years ago

Terraform Version

Terraform version: 0.11.8

Providers: provider.google: version = "~> 1.17

Affected Resource(s)

Terraform Configuration Files

// set the provider
provider "google" {
}

// create the project
resource "google_project" "project_name" {
  name = "${var.project}"
  project_id = "${var.project}"
  billing_account = "XXXXXX"
  folder_id  = "folders/XXXXX"
  auto_create_network = "false"
}

// enable some apis
resource "google_project_services" "project_apis" {
 project = "${google_project.project_name.project_id}"
 services = [
   "oslogin.googleapis.com",
   "compute.googleapis.com",
   "container.googleapis.com",
   "containerregistry.googleapis.com",
   "pubsub.googleapis.com",
   "deploymentmanager.googleapis.com",
   "replicapool.googleapis.com",
   "replicapoolupdater.googleapis.com",
   "resourceviews.googleapis.com",
   "stackdriver.googleapis.com",
   // Default APIs
   "bigquery-json.googleapis.com",
   "cloudapis.googleapis.com",
   "clouddebugger.googleapis.com",
   "cloudtrace.googleapis.com",
   "datastore.googleapis.com",
   "logging.googleapis.com",
   "monitoring.googleapis.com",
   "servicemanagement.googleapis.com",
   "serviceusage.googleapis.com",
   "sql-component.googleapis.com",
   "storage-api.googleapis.com",
   "storage-component.googleapis.com"
 ]
}

// add service account to iam role
resource "google_project_iam_binding" "cd_iam_owner" {
  project = "${google_project.project_name.project_id}"
  role = "roles/owner"
  members = [
    "serviceAccount:pre-prod-cd@my-project.iam.gserviceaccount.com"
  ]
}

//shared vpc
resource "google_compute_shared_vpc_service_project" "shared_vpc" {
  depends_on = ["google_project_services.project_apis"]
  host_project    = "shared-vpc-${var.env}"
  service_project = "${google_project.project_name.project_id}"
}

resource "google_project_iam_member" "host_service_agent" {
        project = "${google_compute_shared_vpc_service_project.shared_vpc.host_project}"
        role    = "roles/container.hostServiceAgentUser"
        member  = "serviceAccount:service-${google_project.project_name.number}@container-engine-robot.iam.gserviceaccount.com"
}

resource "google_compute_subnetwork_iam_member" "service_network_cloud_services" {
        project       = "${google_compute_shared_vpc_service_project.shared_vpc.host_project}"
        region    = "${var.region}"
        subnetwork    = "shared-vpc-us-east4"
        role          = "roles/compute.networkUser"
        member        = "serviceAccount:${google_project.project_name.number}@cloudservices.gserviceaccount.com"
}

resource "google_compute_subnetwork_iam_member" "service_network_gke_user" {
        project       = "${google_compute_shared_vpc_service_project.shared_vpc.host_project}"
        region    = "${var.region}"
        subnetwork    = "shared-vpc-us-east4"
        role          = "roles/compute.networkUser"
        member        = "serviceAccount:service-${google_project.project_name.number}@container-engine-robot.iam.gserviceaccount.com"
}

//regional kubernetes cluster

resource "google_container_cluster" "cluster_name" {
  name    = "acl-cluster-${var.region}"
  project = "${google_project.project_name.project_id}"
  region    = "${var.region}"

  min_master_version = "${var.kubernetes_version}"
  network = "projects/shared-vpc-dev/global/networks/shared-vpc"
  subnetwork = "projects/shared-vpc-dev/regions/us-east4/subnetworks/shared-vpc-us-east4"
  node_version       = "${var.kubernetes_version}"
  logging_service    = "${var.kubernetes_logging_service}"
  monitoring_service = "${var.kubernetes_monitoring_service}"

  ip_allocation_policy {
    cluster_secondary_range_name = "my-pods"
    services_secondary_range_name = "my-services"
  }

  node_pool {
    name = "default-pool"
    node_config {
      machine_type    = "${var.instance_type}"

      oauth_scopes = [
        "https://www.googleapis.com/auth/cloud-platform",
        "https://www.googleapis.com/auth/compute",
        "https://www.googleapis.com/auth/devstorage.read_write",
        "https://www.googleapis.com/auth/logging.write",
        "https://www.googleapis.com/auth/monitoring",
      ]
    }

    initial_node_count = "${var.node_count}"

    autoscaling {
      min_node_count = "${var.min_node_count}"
      max_node_count = "${var.max_node_count}"
    }

    management {
      auto_repair = "true"
      auto_upgrade = "false"
    }
  }

  node_version = "${var.kubernetes_version}"

  depends_on = ["google_project_services.project_apis"]
}

//create a storage bucket
resource "google_storage_bucket" "secrets-bucket" {
  depends_on = ["google_project_services.project_apis"]
  project = "${google_project.project_name.project_id}"
  name = "${var.project}_secrets"
}

Debug Output

https://gist.github.com/brettcurtis/5cf40d299d2c2b4c856e55b8300a492c

Panic Output

panic: runtime error: invalid memory address or nil pointer dereference
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4: [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x12e5dba]
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4: 
working directory. It would be immensely helpful if you could please
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4: goroutine 180 [running]:
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4: github.com/terraform-providers/terraform-provider-google/google.resourceContainerClusterRead(0xc420450150, 0x15c3e80, 0xc4203c4000, 0xc420450150, 0x0)
report the crash with Terraform[1] so that we can fix this.

When reporting bugs, please include your terraform version. That
information is available on the first line of crash.log. You can also
get it by running 'terraform --version' on the command line.

[1]: https://github.com/hashicorp/terraform/issues

!!!!!!!!!!!!!!!!!!!!!!!!!!! TERRAFORM CRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4:   /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-google/google/resource_container_cluster.go:764 +0xe3a
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4: github.com/terraform-providers/terraform-provider-google/vendor/github.com/hashicorp/terraform/helper/schema.(*Resource).Refresh(0xc420360b60, 0xc4200a0140, 0x15c3e80, 0xc4203c4000, 0xc42038a580, 0x4bdf01, 0x1465e00)
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4:   /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-google/vendor/github.com/hashicorp/terraform/helper/schema/resource.go:354 +0x167
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4: github.com/terraform-providers/terraform-provider-google/vendor/github.com/hashicorp/terraform/helper/schema.(*Provider).Refresh(0xc42033c150, 0xc4200a0050, 0xc4200a0140, 0x756ea13745cbb2, 0x31da76ae95ed7b8f, 0xc42006cb58)
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4:   /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-google/vendor/github.com/hashicorp/terraform/helper/schema/provider.go:308 +0x9a
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4: github.com/terraform-providers/terraform-provider-google/vendor/github.com/hashicorp/terraform/plugin.(*ResourceProviderServer).Refresh(0xc42018fb20, 0xc42019c040, 0xc42019c200, 0x0, 0x0)
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4:   /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-google/vendor/github.com/hashicorp/terraform/plugin/resource_provider.go:549 +0x4e
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4: reflect.Value.call(0xc4204aa9c0, 0xc4205a2268, 0x13, 0x191243a, 0x4, 0xc42006cf18, 0x3, 0x3, 0xc4205c4c80, 0x0, ...)
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4:   /opt/goenv/versions/1.10.3/src/reflect/value.go:447 +0x969
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4: reflect.Value.Call(0xc4204aa9c0, 0xc4205a2268, 0x13, 0xc420053f18, 0x3, 0x3, 0x0, 0x0, 0x0)
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4:   /opt/goenv/versions/1.10.3/src/reflect/value.go:308 +0xa4
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4: net/rpc.(*service).call(0xc42040af80, 0xc4204d2500, 0xc420347188, 0xc4203471a0, 0xc42019e680, 0xc4204d0c60, 0x1465dc0, 0xc42019c040, 0x16, 0x1465e00, ...)
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4:   /opt/goenv/versions/1.10.3/src/net/rpc/server.go:384 +0x14e
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4: created by net/rpc.(*Server).ServeCodec
2018-08-22T19:53:17.505Z [DEBUG] plugin.terraform-provider-google_v1.17.0_x4:   /opt/goenv/versions/1.10.3/src/net/rpc/server.go:480 +0x43a
2018/08/22 19:53:17 [ERROR] root: eval: *terraform.EvalRefresh, err: google_storage_bucket.secrets-bucket: unexpected EOF
2018/08/22 19:53:17 [ERROR] root: eval: *terraform.EvalSequence, err: google_storage_bucket.secrets-bucket: unexpected EOF
2018/08/22 19:53:17 [TRACE] [walkRefresh] Exiting eval tree: google_storage_bucket.secrets-bucket
2018/08/22 19:53:17 [ERROR] root: eval: *terraform.EvalRefresh, err: google_compute_shared_vpc_service_project.shared_vpc: unexpected EOF
2018/08/22 19:53:17 [ERROR] root: eval: *terraform.EvalSequence, err: google_compute_shared_vpc_service_project.shared_vpc: unexpected EOF
2018/08/22 19:53:17 [TRACE] [walkRefresh] Exiting eval tree: google_compute_shared_vpc_service_project.shared_vpc
2018/08/22 19:53:17 [TRACE] dag/walk: upstream errored, not walking "google_project_iam_member.host_service_agent"
2018/08/22 19:53:17 [ERROR] root: eval: *terraform.EvalRefresh, err: google_container_cluster.cluster_name: unexpected EOF
2018/08/22 19:53:17 [ERROR] root: eval: *terraform.EvalSequence, err: google_container_cluster.cluster_name: unexpected EOF
2018/08/22 19:53:17 [TRACE] [walkRefresh] Exiting eval tree: google_container_cluster.cluster_name
2018/08/22 19:53:17 [TRACE] dag/walk: upstream errored, not walking "google_compute_subnetwork_iam_member.service_network_cloud_services"
2018/08/22 19:53:17 [TRACE] dag/walk: upstream errored, not walking "google_compute_subnetwork_iam_member.service_network_gke_user"
2018/08/22 19:53:17 [TRACE] dag/walk: upstream errored, not walking "provider.google (close)"
2018-08-22T19:53:17.507Z [DEBUG] plugin: plugin process exited: path=/godata/pipelines/us-clab-acl-dev/terraform/.terraform/plugins/linux_amd64/terraform-provider-google_v1.17.0_x4
2018/08/22 19:53:17 [DEBUG] plugin: waiting for all plugin processes to complete...
2018-08-22T19:53:17.796Z [WARN ] plugin: error closing client during Kill: err="connection is shut down"

Expected Behavior

terraform plan -out=plan.out -var="project=lims-shared-k8s-acl-dev" -var="region=us-east4" -var="env=dev"

Should have completed successfully.

Actual Behavior

The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
google_project.project_name: Refreshing state... (ID: lims-shared-k8s-acl-dev)
google_project_services.project_apis: Refreshing state... (ID: lims-shared-k8s-acl-dev)
google_project_iam_binding.cd_iam_owner: Refreshing state... (ID: lims-shared-k8s-acl-dev/roles/owner)
google_compute_shared_vpc_service_project.shared_vpc: Refreshing state... (ID: lims-shared-vpc-dev/lims-shared-k8s-acl-dev)
google_container_cluster.cluster_name: Refreshing state... (ID: acl-cluster-us-east4)
google_storage_bucket.secrets-bucket: Refreshing state... (ID: lims-shared-k8s-acl-dev_secrets)
Error: Error refreshing state: 3 error(s) occurred:

* google_storage_bucket.secrets-bucket: 1 error(s) occurred:

* google_storage_bucket.secrets-bucket: google_storage_bucket.secrets-bucket: unexpected EOF
* google_compute_shared_vpc_service_project.shared_vpc: 1 error(s) occurred:

* google_compute_shared_vpc_service_project.shared_vpc: google_compute_shared_vpc_service_project.shared_vpc: unexpected EOF
!!!!!!!!!!!!!!!!!!!!!!!!!!! TERRAFORM CRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!

* google_container_cluster.cluster_name: 1 error(s) occurred:
Terraform crashed! This is always indicative of a bug within Terraform.

A crash log has been placed at "crash.log" relative to your current
* google_container_cluster.cluster_name: google_container_cluster.cluster_name: unexpected EOF

Steps to Reproduce

Please list the steps required to reproduce the issue, for example:

  1. terraform init
  2. terraform workspace select ${GOOGLE_PROJECT_ID}-clab-acl || terraform workspace new ${GOOGLE_PROJECT_ID}-clab-acl 3: terraform plan -out=plan.out -var="project=lims-shared-k8s-acl-dev" -var="region=us-east4" -var="env=dev"

Important Factoids

I can run this locally just fine however it fails out on my CD server where terrafrom is running in an elastic kubernetes environment. It did run fine in my CD environment for a while but now I'm getting this and not sure why.

paddycarver commented 6 years ago

I'm pretty sure this is a duplicate of #1920. We just released 1.17.1 a few hours ago to address this. Really sorry about the crash. If you upgrade, and it doesn't go away, please feel free to comment in this issue, and we can keep digging, and possibly cut another bugfix release. Again, my apologies for the oversight on this crash.

brettcurtis commented 6 years ago

Ah, ok yeah I think you're right. Just noticed I had: provider.google: version = "~> 1.16 locally so that explains why it works locally and not from my CD environment.

Thanks!

ghost commented 5 years ago

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.

If you feel this issue should be reopened, we encourage creating a new issue linking back to this one for added context. If you feel I made an error 🤖 🙉 , please reach out to my human friends 👉 hashibot-feedback@hashicorp.com. Thanks!