Closed caleonardo closed 4 years ago
@caleonardo
This error is the dependency that we have between 3-networks/envs/shared
(the DNS hub) and the other envs in 3-networks.
3-networks/envs/shared
must be executed manually at least once.
1. You will need only once to manually plan + apply the `shared` environment since dev, nonprod and prod depend on it.
1. cd to ./envs/shared/
1. Update backend.tf with your bucket name from the bootstrap step.
1. Run `terraform plan` and review output
1. Run `terraform apply`
1. If you would like the bucket to be replaced by cloud build at run time, change the bucket name back to `UPDATE_ME
Thank you!
I ran shared manually and now I see this when I run the pipeline
Console Output
Started by user admin
> git rev-parse --is-inside-work-tree # timeout=10
Setting origin to https://github.com/caleonardo/cft-01-test-3-networks
> git config remote.origin.url https://github.com/caleonardo/cft-01-test-3-networks # timeout=10
Fetching origin...
Fetching upstream changes from origin
> git --version # timeout=10
> git config --get remote.origin.url # timeout=10
> git fetch --tags --progress -- origin +refs/heads/*:refs/remotes/origin/* # timeout=10
Seen branch in repository origin/master
Seen branch in repository origin/plan
Seen 2 remote branches
Obtained Jenkinsfile from f3ed8f0bc22baee7d54df8d7505446e7a774b5b1
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on jenkins-ssh-agent-Agent1-GCE-Bootstrap-1 in /home/jenkins/jenkins_agent_dir/workspace/line-cft-01-test-3-networks_plan
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
No credentials specified
Fetching changes from the remote Git repository
Fetching without tags
> git rev-parse --is-inside-work-tree # timeout=10
> git config remote.origin.url https://github.com/caleonardo/cft-01-test-3-networks # timeout=10
Fetching upstream changes from https://github.com/caleonardo/cft-01-test-3-networks
> git --version # timeout=10
> git fetch --no-tags --progress -- https://github.com/caleonardo/cft-01-test-3-networks +refs/heads/*:refs/remotes/origin/* # timeout=10
Checking out Revision f3ed8f0bc22baee7d54df8d7505446e7a774b5b1 (plan)
Commit message: "Initial commit for the 3-networks step - Fix tfvars bug not being the same for each env - 2"
> git config core.sparsecheckout # timeout=10
> git checkout -f f3ed8f0bc22baee7d54df8d7505446e7a774b5b1 # timeout=10
> git rev-list --no-walk f3ed8f0bc22baee7d54df8d7505446e7a774b5b1 # timeout=10
[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (setup)
[Pipeline] sh
+ echo Setting up gcloud for impersonation
Setting up gcloud for impersonation
+ gcloud config set auth/impersonate_service_account org-terraform@cft-seed-1437.iam.gserviceaccount.com
Updated property [auth/impersonate_service_account].
+ echo Adding bucket information to backends
Adding bucket information to backends
+ find -name backend.tf
+ sed -i s/UPDATE_ME/cft-tfstate-c32b/ ./envs/prod/backend.tf
+ sed -i s/UPDATE_ME/cft-tfstate-c32b/ ./envs/dev/backend.tf
+ sed -i s/UPDATE_ME/cft-tfstate-c32b/ ./envs/nonprod/backend.tf
+ sed -i s/UPDATE_ME/cft-tfstate-c32b/ ./envs/shared/backend.tf
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (TF plan validate all)
[Pipeline] sh
+ ./tf-wrapper.sh plan_validate_all plan
*************** TERRAFORM INIT *******************
At environment: envs/prod
**************************************************
[0m[1mInitializing modules...[0m
[0m[1mInitializing the backend...[0m
[0m[1mInitializing provider plugins...[0m
The following providers do not have any version constraints in configuration,
so the latest version was installed.
To prevent automatic upgrades to new major versions that may contain breaking
changes, it is recommended to add version = "..." constraints to the
corresponding provider blocks in configuration, with the constraint strings
suggested below.
* provider.random: version = "~> 2.3"
[0m[1m[32mTerraform has been successfully initialized![0m[32m[0m
[0m[32m
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.[0m
*************** TERRAFORM PLAN *******************
At environment: envs/prod
**************************************************
[0m[1mRefreshing Terraform state in-memory prior to plan...[0m
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
[0m
[0m[1mdata.google_service_account_access_token.default: Refreshing state...[0m
[0m[1mmodule.restricted_shared_vpc.data.google_netblock_ip_ranges.health_checkers: Refreshing state...[0m
[0m[1mdata.google_active_folder.env: Refreshing state...[0m
[0m[1mmodule.private_shared_vpc.data.google_netblock_ip_ranges.health_checkers: Refreshing state...[0m
[0m[1mmodule.private_shared_vpc.data.google_netblock_ip_ranges.legacy_health_checkers: Refreshing state...[0m
[0m[1mmodule.restricted_shared_vpc.data.google_active_folder.common: Refreshing state...[0m
[0m[1mmodule.private_shared_vpc.data.google_active_folder.common: Refreshing state...[0m
[0m[1mmodule.private_shared_vpc.data.google_netblock_ip_ranges.iap_forwarders: Refreshing state...[0m
[0m[1mmodule.restricted_shared_vpc.data.google_netblock_ip_ranges.legacy_health_checkers: Refreshing state...[0m
[0m[1mmodule.restricted_shared_vpc.data.google_netblock_ip_ranges.iap_forwarders: Refreshing state...[0m
[0m[1mmodule.private_shared_vpc.data.google_projects.dns_hub: Refreshing state...[0m
[0m[1mmodule.private_shared_vpc.data.google_compute_network.vpc_dns_hub: Refreshing state...[0m
[0m[1mdata.google_projects.private_host_project: Refreshing state...[0m
[0m[1mmodule.restricted_shared_vpc.data.google_projects.dns_hub: Refreshing state...[0m
[0m[1mdata.google_projects.restricted_host_project: Refreshing state...[0m
[0m[1mdata.google_project.restricted_host_project: Refreshing state...[0m
[0m[1mmodule.restricted_shared_vpc.data.google_compute_network.vpc_dns_hub: Refreshing state...[0m
------------------------------------------------------------------------
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
[32m+[0m create
[0m
Terraform will perform the following actions:
...... REMOVED THE PLAN FROM THIS MESSAGE .......
[1m # module.restricted_shared_vpc.module.main.module.vpc.google_compute_shared_vpc_host_project.shared_vpc_host[0][0m will be created[0m[0m
[0m [32m+[0m[0m resource "google_compute_shared_vpc_host_project" "shared_vpc_host" {
[32m+[0m [0m[1m[0mid[0m[0m = (known after apply)
[32m+[0m [0m[1m[0mproject[0m[0m = "prj-p-shared-restricted-734a"
}
[0m[1mPlan:[0m 45 to add, 0 to change, 0 to destroy.[0m
------------------------------------------------------------------------
This plan was saved to: /home/jenkins/jenkins_agent_dir/workspace/line-cft-01-test-3-networks_plan/tmp_plan/envs-prod.tfplan
To perform exactly these actions, run the following command to apply:
terraform apply "/home/jenkins/jenkins_agent_dir/workspace/line-cft-01-test-3-networks_plan/tmp_plan/envs-prod.tfplan"
*************** TERRAFORM VALIDATE ******************
At environment: envs/prod
Using policy from:
*****************************************************
no policy repo found! Check the argument provided for policyrepo to this script.
https://github.com/forseti-security/policy-library/blob/master/docs/user_guide.md#how-to-use-terraform-validator
*************** TERRAFORM INIT *******************
At environment: envs/dev
**************************************************
[0m[1mInitializing modules...[0m
[0m[1mInitializing the backend...[0m
[0m[1mInitializing provider plugins...[0m
The following providers do not have any version constraints in configuration,
so the latest version was installed.
To prevent automatic upgrades to new major versions that may contain breaking
changes, it is recommended to add version = "..." constraints to the
corresponding provider blocks in configuration, with the constraint strings
suggested below.
* provider.random: version = "~> 2.3"
[0m[1m[32mTerraform has been successfully initialized![0m[32m[0m
[0m[32m
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.[0m
*************** TERRAFORM PLAN *******************
At environment: envs/dev
**************************************************
[0m[1mRefreshing Terraform state in-memory prior to plan...[0m
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
[0m
[0m[1mdata.google_service_account_access_token.default: Refreshing state...[0m
[0m[1mmodule.private_shared_vpc.data.google_netblock_ip_ranges.legacy_health_checkers: Refreshing state...[0m
[0m[1mmodule.private_shared_vpc.data.google_netblock_ip_ranges.health_checkers: Refreshing state...[0m
[0m[1mmodule.restricted_shared_vpc.data.google_netblock_ip_ranges.legacy_health_checkers: Refreshing state...[0m
[0m[1mdata.google_active_folder.env: Refreshing state...[0m
[0m[1mmodule.restricted_shared_vpc.data.google_netblock_ip_ranges.iap_forwarders: Refreshing state...[0m
[0m[1mmodule.restricted_shared_vpc.data.google_active_folder.common: Refreshing state...[0m
[0m[1mmodule.restricted_shared_vpc.data.google_netblock_ip_ranges.health_checkers: Refreshing state...[0m
[0m[1mmodule.private_shared_vpc.data.google_netblock_ip_ranges.iap_forwarders: Refreshing state...[0m
[0m[1mmodule.private_shared_vpc.data.google_active_folder.common: Refreshing state...[0m
[0m[1mmodule.restricted_shared_vpc.data.google_projects.dns_hub: Refreshing state...[0m
[0m[1mmodule.private_shared_vpc.data.google_projects.dns_hub: Refreshing state...[0m
[0m[1mmodule.restricted_shared_vpc.data.google_compute_network.vpc_dns_hub: Refreshing state...[0m
[0m[1mmodule.private_shared_vpc.data.google_compute_network.vpc_dns_hub: Refreshing state...[0m
[31m
[1m[31mError: [0m[0m[1mFolder not found[0m
[0m on main.tf line 26, in data "google_active_folder" "env":
26: data "google_active_folder" "env" [4m{[0m
[0m
[0m[0m
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (TF init)
Stage "TF init" skipped due to earlier failure(s)
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (TF plan)
Stage "TF plan" skipped due to earlier failure(s)
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (TF validate)
Stage "TF validate" skipped due to earlier failure(s)
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (TF apply)
Stage "TF apply" skipped due to earlier failure(s)
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 21
Finished: FAILURE
@caleonardo can we close this one?
Yes. Thank you Daniel
ERROR:
TROBLESHOOTING: I haven't been able to find the cause of this problem, but it also happens in my local computer, not only in the Jenkins pipeline.
Note that you can also see the error described in https://github.com/terraform-google-modules/terraform-example-foundation/issues/169 - they seem to be two different issues
====================+====================+====================+====================+======
FailedConsole Output Branch indexing
[0m[1mInitializing the backend...[0m [0m[32m Successfully configured the backend "gcs"! Terraform will automatically use this backend unless the backend configuration changes.[0m
[0m[1mInitializing provider plugins...[0m
The following providers do not have any version constraints in configuration, so the latest version was installed.
To prevent automatic upgrades to new major versions that may contain breaking changes, it is recommended to add version = "..." constraints to the corresponding provider blocks in configuration, with the constraint strings suggested below.
[0m[1m[32mTerraform has been successfully initialized![0m[32m[0m [0m[32m You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work.
If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.[0m * TERRAFORM PLAN ***** At environment: envs/prod
[0m[1mRefreshing Terraform state in-memory prior to plan...[0m The refreshed state will be used to calculate this plan, but will not be persisted to local or remote state storage. [0m [0m[1mdata.google_service_account_access_token.default: Refreshing state...[0m [0m[1mmodule.private_shared_vpc.data.google_netblock_ip_ranges.iap_forwarders: Refreshing state...[0m [0m[1mmodule.restricted_shared_vpc.data.google_netblock_ip_ranges.health_checkers: Refreshing state...[0m [0m[1mmodule.restricted_shared_vpc.data.google_netblock_ip_ranges.legacy_health_checkers: Refreshing state...[0m [0m[1mdata.google_active_folder.env: Refreshing state...[0m [0m[1mmodule.private_shared_vpc.data.google_netblock_ip_ranges.health_checkers: Refreshing state...[0m [0m[1mmodule.restricted_shared_vpc.data.google_netblock_ip_ranges.iap_forwarders: Refreshing state...[0m [0m[1mmodule.restricted_shared_vpc.data.google_active_folder.common: Refreshing state...[0m [0m[1mmodule.private_shared_vpc.data.google_netblock_ip_ranges.legacy_health_checkers: Refreshing state...[0m [0m[1mmodule.private_shared_vpc.data.google_active_folder.common: Refreshing state...[0m [0m[1mmodule.private_shared_vpc.data.google_projects.dns_hub: Refreshing state...[0m [0m[1mmodule.restricted_shared_vpc.data.google_projects.dns_hub: Refreshing state...[0m [0m[1mdata.google_projects.restricted_host_project: Refreshing state...[0m [0m[1mdata.google_projects.private_host_project: Refreshing state...[0m [0m[1mdata.google_project.restricted_host_project: Refreshing state...[0m [0m[1mmodule.restricted_shared_vpc.data.google_compute_network.vpc_dns_hub: Refreshing state...[0m [0m[1mmodule.private_shared_vpc.data.google_compute_network.vpc_dns_hub: Refreshing state...[0m
[33m [1m[33mWarning: [0m[0m[1mValue for undeclared variable[0m
[0mThe root module does not declare a variable named "target_name_server_addresses" but a value was found in file "terraform.tfvars". To use this value, add a "variable" block to the configuration.
Using a variables file to set an undeclared variable is deprecated and will become an error in a future release. If you wish to provide certain "global" settings to all configurations in your organization, use TFVAR... environment variables to set these instead. [0m[0m [31m [1m[31mError: [0m[0m[1m"peering_config.0.target_network.0.network_url": required field is not set[0m
[0m on .terraform/modules/private_shared_vpc.peering_zone/terraform-google-cloud-dns-3.0.2/main.tf line 21, in resource "google_dns_managed_zone" "peering": 21: resource "google_dns_managed_zone" "peering" [4m{[0m [0m [0m[0m [31m [1m[31mError: [0m[0m[1m"peering_config.0.target_network.0.network_url": required field is not set[0m
[0m on .terraform/modules/restricted_shared_vpc.peering_zone/terraform-google-cloud-dns-3.0.2/main.tf line 21, in resource "google_dns_managed_zone" "peering": 21: resource "google_dns_managed_zone" "peering" [4m{[0m [0m [0m[0m [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (TF init) Stage "TF init" skipped due to earlier failure(s) [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (TF plan) Stage "TF plan" skipped due to earlier failure(s) [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (TF validate) Stage "TF validate" skipped due to earlier failure(s) [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (TF apply) Stage "TF apply" skipped due to earlier failure(s) [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // withEnv [Pipeline] } [Pipeline] // withEnv [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline ERROR: script returned exit code 21 Finished: FAILURE