Created
July 18, 2022 16:04
-
-
Save dstecholution/b7323e022cfefa61d6bc7ed16bdf51e5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [31mβ·[0m[0m | |
| [31mβ[0m [0m[1m[31mError: [0m[0m[1mSaved plan is stale[0m | |
| [31mβ[0m [0m | |
| [31mβ[0m [0m[0mThe given plan file can no longer be applied because the state was changed | |
| [31mβ[0m [0mby another operation after the plan was created. | |
| [31mβ΅[0m[0m | |
| Interrupt received. | |
| Please wait for Terraform to exit or data loss may occur. | |
| Gracefully shutting down... | |
| [31mβ·[0m[0m | |
| [31mβ[0m [0m[1m[31mError: [0m[0m[1mFailed to load plugin schemas[0m | |
| [31mβ[0m [0m | |
| [31mβ[0m [0m[0mError while loading schemas for plugin components: Failed to obtain | |
| [31mβ[0m [0mprovider schema: Could not load the schema for provider | |
| [31mβ[0m [0mregistry.terraform.io/hashicorp/helm: failed to instantiate provider | |
| [31mβ[0m [0m"registry.terraform.io/hashicorp/helm" to obtain schema: Unrecognized | |
| [31mβ[0m [0mremote plugin message: | |
| [31mβ[0m [0m | |
| [31mβ[0m [0mThis usually means that the plugin is either invalid or simply | |
| [31mβ[0m [0mneeds to be recompiled to support the latest protocol... | |
| [31mβ΅[0m[0m | |
| [31mβ·[0m[0m | |
| [31mβ[0m [0m[1m[31mError: [0m[0m[1mSaved plan is stale[0m | |
| [31mβ[0m [0m | |
| [31mβ[0m [0m[0mThe given plan file can no longer be applied because the state was changed | |
| [31mβ[0m [0mby another operation after the plan was created. | |
| [31mβ΅[0m[0m | |
| [0m[1mInitializing modules...[0m | |
| [0m[1mInitializing the backend...[0m | |
| [0m[1mInitializing provider plugins...[0m | |
| - Reusing previous version of hashicorp/tls from the dependency lock file | |
| - Reusing previous version of hashicorp/http from the dependency lock file | |
| - Reusing previous version of hashicorp/random from the dependency lock file | |
| - Reusing previous version of hashicorp/kubernetes from the dependency lock file | |
| - Reusing previous version of hashicorp/helm from the dependency lock file | |
| - Reusing previous version of hashicorp/template from the dependency lock file | |
| - Reusing previous version of hashicorp/google-beta from the dependency lock file | |
| - Reusing previous version of hashicorp/local from the dependency lock file | |
| - Reusing previous version of hashicorp/null from the dependency lock file | |
| - Reusing previous version of hashicorp/google from the dependency lock file | |
| - Using previously-installed hashicorp/http v1.2.0 | |
| - Using previously-installed hashicorp/google v3.90.1 | |
| - Using previously-installed hashicorp/null v2.1.2 | |
| - Using previously-installed hashicorp/tls v2.2.0 | |
| - Using previously-installed hashicorp/random v2.3.1 | |
| - Using previously-installed hashicorp/kubernetes v1.13.4 | |
| - Using previously-installed hashicorp/helm v0.10.6 | |
| - Using previously-installed hashicorp/template v2.2.0 | |
| - Using previously-installed hashicorp/google-beta v3.90.1 | |
| - Using previously-installed hashicorp/local v1.4.0 | |
| [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 | |
| [0m[1mnull_resource.org_id_and_folder_id_are_both_empty[0]: Refreshing state... [id=1754796495663566536][0m | |
| [0m[1mmodule.cloudsql.random_password.password: Refreshing state... [id=none][0m | |
| [0m[1mmodule.server.random_integer.random_minute: Refreshing state... [id=37][0m | |
| [0m[1mrandom_id.random_hash_suffix: Refreshing state... [id=30xwRw][0m | |
| [0m[1mgoogle_project_service.main[0]: Refreshing state... [id=gcp-wen-automation-prod/admin.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[2]: Refreshing state... [id=gcp-wen-automation-prod/bigquery.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[13]: Refreshing state... [id=gcp-wen-automation-prod/cloudasset.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[7]: Refreshing state... [id=gcp-wen-automation-prod/compute.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[16]: Refreshing state... [id=gcp-wen-automation-prod/spanner.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[12]: Refreshing state... [id=gcp-wen-automation-prod/logging.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[3]: Refreshing state... [id=gcp-wen-automation-prod/cloudbilling.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[10]: Refreshing state... [id=gcp-wen-automation-prod/servicemanagement.googleapis.com][0m | |
| [0m[1mmodule.server_iam.google_service_account.forseti_server[0]: Refreshing state... [id=projects/gcp-wen-automation-prod/serviceAccounts/forseti-server-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com][0m | |
| [0m[1mgoogle_project_service.main[9]: Refreshing state... [id=gcp-wen-automation-prod/container.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[4]: Refreshing state... [id=gcp-wen-automation-prod/cloudresourcemanager.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[8]: Refreshing state... [id=gcp-wen-automation-prod/iam.googleapis.com][0m | |
| [0m[1mmodule.client_iam.google_service_account.forseti_client[0]: Refreshing state... [id=projects/gcp-wen-automation-prod/serviceAccounts/forseti-client-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com][0m | |
| [0m[1mgoogle_project_service.main[11]: Refreshing state... [id=gcp-wen-automation-prod/serviceusage.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[1]: Refreshing state... [id=gcp-wen-automation-prod/appengine.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[14]: Refreshing state... [id=gcp-wen-automation-prod/storage-api.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[15]: Refreshing state... [id=gcp-wen-automation-prod/groupssettings.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[6]: Refreshing state... [id=gcp-wen-automation-prod/sqladmin.googleapis.com][0m | |
| [0m[1mgoogle_project_service.main[5]: Refreshing state... [id=gcp-wen-automation-prod/sql-component.googleapis.com][0m | |
| [0m[1mmodule.server_iam.google_project_iam_member.server_roles[0]: Refreshing state... [id=gcp-wen-automation-prod/roles/storage.objectViewer/serviceAccount:forseti-server-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com][0m | |
| [0m[1mmodule.server_iam.google_project_iam_member.server_roles[4]: Refreshing state... [id=gcp-wen-automation-prod/roles/iam.serviceAccountTokenCreator/serviceAccount:forseti-server-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com][0m | |
| [0m[1mmodule.server_iam.google_project_iam_member.server_roles[1]: Refreshing state... [id=gcp-wen-automation-prod/roles/storage.objectCreator/serviceAccount:forseti-server-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com][0m | |
| [0m[1mmodule.server_iam.google_project_iam_member.server_roles[2]: Refreshing state... [id=gcp-wen-automation-prod/roles/cloudsql.client/serviceAccount:forseti-server-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com][0m | |
| [0m[1mmodule.server_iam.google_project_iam_member.server_roles[3]: Refreshing state... [id=gcp-wen-automation-prod/roles/logging.logWriter/serviceAccount:forseti-server-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com][0m | |
| [0m[1mmodule.client_iam.google_project_iam_member.client_roles[0]: Refreshing state... [id=gcp-wen-automation-prod/roles/storage.objectViewer/serviceAccount:forseti-client-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com][0m | |
| [0m[1mmodule.server.null_resource.services-dependency: Refreshing state... [id=4697398817460134874][0m | |
| [0m[1mmodule.cloudsql.null_resource.services-dependency: Refreshing state... [id=8003166442830993643][0m | |
| [0m[1mmodule.client.null_resource.services-dependency[0]: Refreshing state... [id=4496603424541022172][0m | |
| [0m[1mmodule.client_gcs.null_resource.services-dependency[0]: Refreshing state... [id=6855836942801070068][0m | |
| [0m[1mmodule.server_gcs.null_resource.services-dependency: Refreshing state... [id=2969718538586866068][0m | |
| [0m[1mmodule.client_gcs.google_storage_bucket.client_config[0]: Refreshing state... [id=forseti-client-df4c7047][0m | |
| [0m[1mmodule.server_gcs.google_storage_bucket.server_config: Refreshing state... [id=forseti-server-df4c7047][0m | |
| [0m[1mmodule.server_gcs.google_storage_bucket.cai_export[0]: Refreshing state... [id=forseti-cai-export-df4c7047][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[11]: Refreshing state... [id=forseti-server-df4c7047-rules/iam_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[6]: Refreshing state... [id=forseti-server-df4c7047-rules/external_project_access_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[0]: Refreshing state... [id=forseti-server-df4c7047-rules/audit_logging_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[9]: Refreshing state... [id=forseti-server-df4c7047-rules/group_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[10]: Refreshing state... [id=forseti-server-df4c7047-rules/groups_settings_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[1]: Refreshing state... [id=forseti-server-df4c7047-rules/bigquery_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[16]: Refreshing state... [id=forseti-server-df4c7047-rules/kms_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[2]: Refreshing state... [id=forseti-server-df4c7047-rules/blacklist_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[8]: Refreshing state... [id=forseti-server-df4c7047-rules/forwarding_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[13]: Refreshing state... [id=forseti-server-df4c7047-rules/instance_network_interface_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[21]: Refreshing state... [id=forseti-server-df4c7047-rules/retention_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[22]: Refreshing state... [id=forseti-server-df4c7047-rules/role_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[4]: Refreshing state... [id=forseti-server-df4c7047-rules/cloudsql_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[15]: Refreshing state... [id=forseti-server-df4c7047-rules/ke_scanner_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[20]: Refreshing state... [id=forseti-server-df4c7047-rules/resource_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[17]: Refreshing state... [id=forseti-server-df4c7047-rules/lien_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[18]: Refreshing state... [id=forseti-server-df4c7047-rules/location_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[3]: Refreshing state... [id=forseti-server-df4c7047-rules/bucket_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[19]: Refreshing state... [id=forseti-server-df4c7047-rules/log_sink_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[14]: Refreshing state... [id=forseti-server-df4c7047-rules/ke_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[7]: Refreshing state... [id=forseti-server-df4c7047-rules/firewall_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[5]: Refreshing state... [id=forseti-server-df4c7047-rules/enabled_apis_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[12]: Refreshing state... [id=forseti-server-df4c7047-rules/iap_rules.yaml][0m | |
| [0m[1mmodule.server_rules.google_storage_bucket_object.main[23]: Refreshing state... [id=forseti-server-df4c7047-rules/service_account_key_rules.yaml][0m | |
| [0m[1mmodule.server_config.google_storage_bucket_object.forseti_server_config: Refreshing state... [id=forseti-server-df4c7047-configs/forseti_conf_server.yaml][0m | |
| [0m[1mmodule.client_config.google_storage_bucket_object.forseti_client_config[0]: Refreshing state... [id=forseti-client-df4c7047-configs/forseti_conf_client.yaml][0m | |
| Terraform used the selected providers to generate the following execution | |
| plan. Resource actions are indicated with the following symbols: | |
| [32m+[0m create | |
| [31m-[0m/[32m+[0m destroy and then create replacement | |
| [0m | |
| Terraform will perform the following actions: | |
| [1m # null_resource.org_id_and_folder_id_are_both_empty[0][0m is tainted, so must be [1m[31mreplaced[0m[0m | |
| [0m[31m-[0m/[32m+[0m[0m resource "null_resource" "org_id_and_folder_id_are_both_empty" { | |
| [33m~[0m [0m[1m[0mid[0m[0m = "1754796495663566536" [33m->[0m [0m(known after apply) | |
| } | |
| [1m # module.client.google_compute_firewall.forseti-client-deny-all[0][0m will be created[0m[0m | |
| [0m [32m+[0m[0m resource "google_compute_firewall" "forseti-client-deny-all" { | |
| [32m+[0m [0m[1m[0mcreation_timestamp[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdestination_ranges[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdirection[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0menable_logging[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mid[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mname[0m[0m = "forseti-client-deny-all-df4c7047" | |
| [32m+[0m [0m[1m[0mnetwork[0m[0m = "default" | |
| [32m+[0m [0m[1m[0mpriority[0m[0m = 200 | |
| [32m+[0m [0m[1m[0mproject[0m[0m = "gcp-wen-automation-prod" | |
| [32m+[0m [0m[1m[0mself_link[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0msource_ranges[0m[0m = [ | |
| [32m+[0m [0m"0.0.0.0/0", | |
| ] | |
| [32m+[0m [0m[1m[0mtarget_service_accounts[0m[0m = [ | |
| [32m+[0m [0m"forseti-client-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com", | |
| ] | |
| [32m+[0m [0mdeny { | |
| [32m+[0m [0m[1m[0mports[0m[0m = [] | |
| [32m+[0m [0m[1m[0mprotocol[0m[0m = "icmp" | |
| } | |
| [32m+[0m [0mdeny { | |
| [32m+[0m [0m[1m[0mports[0m[0m = [] | |
| [32m+[0m [0m[1m[0mprotocol[0m[0m = "tcp" | |
| } | |
| [32m+[0m [0mdeny { | |
| [32m+[0m [0m[1m[0mports[0m[0m = [] | |
| [32m+[0m [0m[1m[0mprotocol[0m[0m = "udp" | |
| } | |
| } | |
| [1m # module.client.google_compute_firewall.forseti-client-ssh-external[0][0m will be created[0m[0m | |
| [0m [32m+[0m[0m resource "google_compute_firewall" "forseti-client-ssh-external" { | |
| [32m+[0m [0m[1m[0mcreation_timestamp[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdestination_ranges[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdirection[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0menable_logging[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mid[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mname[0m[0m = "forseti-client-ssh-external-df4c7047" | |
| [32m+[0m [0m[1m[0mnetwork[0m[0m = "default" | |
| [32m+[0m [0m[1m[0mpriority[0m[0m = 100 | |
| [32m+[0m [0m[1m[0mproject[0m[0m = "gcp-wen-automation-prod" | |
| [32m+[0m [0m[1m[0mself_link[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0msource_ranges[0m[0m = [ | |
| [32m+[0m [0m"0.0.0.0/0", | |
| ] | |
| [32m+[0m [0m[1m[0mtarget_service_accounts[0m[0m = [ | |
| [32m+[0m [0m"forseti-client-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com", | |
| ] | |
| [32m+[0m [0mallow { | |
| [32m+[0m [0m[1m[0mports[0m[0m = [ | |
| [32m+[0m [0m"22", | |
| ] | |
| [32m+[0m [0m[1m[0mprotocol[0m[0m = "tcp" | |
| } | |
| } | |
| [1m # module.client.google_compute_instance.forseti-client[0][0m will be created[0m[0m | |
| [0m [32m+[0m[0m resource "google_compute_instance" "forseti-client" { | |
| [32m+[0m [0m[1m[0mallow_stopping_for_update[0m[0m = true | |
| [32m+[0m [0m[1m[0mcan_ip_forward[0m[0m = false | |
| [32m+[0m [0m[1m[0mcpu_platform[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mcurrent_status[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdeletion_protection[0m[0m = false | |
| [32m+[0m [0m[1m[0mguest_accelerator[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mid[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0minstance_id[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mlabel_fingerprint[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mmachine_type[0m[0m = "n1-standard-2" | |
| [32m+[0m [0m[1m[0mmetadata_fingerprint[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mmetadata_startup_script[0m[0m = <<-EOT | |
| #!/bin/bash | |
| set -eu | |
| # Env variables | |
| USER=ubuntu | |
| USER_HOME=/home/ubuntu | |
| # Ubuntu update. | |
| sudo apt-get update -y | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade | |
| sudo apt-get update -y | |
| sudo apt-get --assume-yes install google-cloud-sdk git unzip | |
| # Install fluentd if necessary. | |
| if [ -e "/usr/sbin/google-fluentd" ]; then | |
| cd $USER_HOME | |
| curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh | |
| bash install-logging-agent.sh | |
| fi | |
| # Install Forseti Security. | |
| cd $USER_HOME | |
| rm -rf *forseti* | |
| # Download Forseti source code | |
| git clone --branch v2.25.2 --depth 1 https://github.com/forseti-security/forseti-security | |
| cd forseti-security | |
| # Forseti host dependencies | |
| sudo apt-get install -y $(cat install/dependencies/apt_packages.txt | grep -v "#" | xargs) | |
| # Forseti dependencies | |
| python3 -m pip install -q --upgrade setuptools wheel | |
| python3 -m pip install -q --upgrade -r requirements.txt | |
| # Install Forseti | |
| echo "Installing Forseti" | |
| python3 setup.py install | |
| # Set ownership of the forseti project to $USER | |
| chown -R $USER $USER_HOME/forseti-security | |
| # Store the variables in /etc/profile.d/forseti_environment.sh | |
| # so all the users will have access to them | |
| echo "export FORSETI_HOME=$USER_HOME/forseti-security | |
| export FORSETI_CLIENT_CONFIG=$USER_HOME/forseti-security/configs/forseti_conf_client.yaml | |
| forseti config reset &> /dev/null | |
| " > /etc/profile.d/forseti_environment.sh | sudo sh | |
| # Download client configuration from GCS | |
| gsutil cp gs://forseti-client-df4c7047/configs/forseti_conf_client.yaml $USER_HOME/forseti-security/configs/forseti_conf_client.yaml | |
| EOT | |
| [32m+[0m [0m[1m[0mmin_cpu_platform[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mname[0m[0m = "forseti-client-vm-df4c7047" | |
| [32m+[0m [0m[1m[0mproject[0m[0m = "gcp-wen-automation-prod" | |
| [32m+[0m [0m[1m[0mself_link[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mtags_fingerprint[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mzone[0m[0m = "us-central1-c" | |
| [32m+[0m [0mboot_disk { | |
| [32m+[0m [0m[1m[0mauto_delete[0m[0m = true | |
| [32m+[0m [0m[1m[0mdevice_name[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdisk_encryption_key_sha256[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mkms_key_self_link[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mmode[0m[0m = "READ_WRITE" | |
| [32m+[0m [0m[1m[0msource[0m[0m = (known after apply) | |
| [32m+[0m [0minitialize_params { | |
| [32m+[0m [0m[1m[0mimage[0m[0m = "ubuntu-os-cloud/ubuntu-1804-lts" | |
| [32m+[0m [0m[1m[0mlabels[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0msize[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mtype[0m[0m = (known after apply) | |
| } | |
| } | |
| [32m+[0m [0mconfidential_instance_config { | |
| [32m+[0m [0m[1m[0menable_confidential_compute[0m[0m = (known after apply) | |
| } | |
| [32m+[0m [0mnetwork_interface { | |
| [32m+[0m [0m[1m[0mipv6_access_type[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mname[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mnetwork[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mnetwork_ip[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mstack_type[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0msubnetwork[0m[0m = "default" | |
| [32m+[0m [0m[1m[0msubnetwork_project[0m[0m = "gcp-wen-automation-prod" | |
| [32m+[0m [0maccess_config { | |
| [32m+[0m [0m[1m[0mnat_ip[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mnetwork_tier[0m[0m = (known after apply) | |
| } | |
| } | |
| [32m+[0m [0mreservation_affinity { | |
| [32m+[0m [0m[1m[0mtype[0m[0m = (known after apply) | |
| [32m+[0m [0mspecific_reservation { | |
| [32m+[0m [0m[1m[0mkey[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mvalues[0m[0m = (known after apply) | |
| } | |
| } | |
| [32m+[0m [0mscheduling { | |
| [32m+[0m [0m[1m[0mautomatic_restart[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mmin_node_cpus[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mon_host_maintenance[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mpreemptible[0m[0m = (known after apply) | |
| [32m+[0m [0mnode_affinities { | |
| [32m+[0m [0m[1m[0mkey[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0moperator[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mvalues[0m[0m = (known after apply) | |
| } | |
| } | |
| [32m+[0m [0mservice_account { | |
| [32m+[0m [0m[1m[0memail[0m[0m = "forseti-client-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com" | |
| [32m+[0m [0m[1m[0mscopes[0m[0m = [ | |
| [32m+[0m [0m"https://www.googleapis.com/auth/cloud-platform", | |
| ] | |
| } | |
| } | |
| [1m # module.cloudsql.google_sql_database.forseti-db[0m will be created[0m[0m | |
| [0m [32m+[0m[0m resource "google_sql_database" "forseti-db" { | |
| [32m+[0m [0m[1m[0mcharset[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mcollation[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mid[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0minstance[0m[0m = "forseti-server-db-df4c7047" | |
| [32m+[0m [0m[1m[0mname[0m[0m = "forseti_security" | |
| [32m+[0m [0m[1m[0mproject[0m[0m = "gcp-wen-automation-prod" | |
| [32m+[0m [0m[1m[0mself_link[0m[0m = (known after apply) | |
| } | |
| [1m # module.cloudsql.google_sql_database_instance.master[0m will be created[0m[0m | |
| [0m [32m+[0m[0m resource "google_sql_database_instance" "master" { | |
| [32m+[0m [0m[1m[0mconnection_name[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdatabase_version[0m[0m = "MYSQL_5_7" | |
| [32m+[0m [0m[1m[0mdeletion_protection[0m[0m = true | |
| [32m+[0m [0m[1m[0mfirst_ip_address[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mid[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mip_address[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mmaster_instance_name[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mname[0m[0m = "forseti-server-db-df4c7047" | |
| [32m+[0m [0m[1m[0mprivate_ip_address[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mproject[0m[0m = "gcp-wen-automation-prod" | |
| [32m+[0m [0m[1m[0mpublic_ip_address[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mregion[0m[0m = "us-central1" | |
| [32m+[0m [0m[1m[0mself_link[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mserver_ca_cert[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mservice_account_email_address[0m[0m = (known after apply) | |
| [32m+[0m [0mreplica_configuration { | |
| [32m+[0m [0m[1m[0mca_certificate[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mclient_certificate[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mclient_key[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mconnect_retry_interval[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdump_file_path[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mfailover_target[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mmaster_heartbeat_period[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mpassword[0m[0m = (sensitive value) | |
| [32m+[0m [0m[1m[0mssl_cipher[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0musername[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mverify_server_certificate[0m[0m = (known after apply) | |
| } | |
| [32m+[0m [0msettings { | |
| [32m+[0m [0m[1m[0mactivation_policy[0m[0m = "ALWAYS" | |
| [32m+[0m [0m[1m[0mauthorized_gae_applications[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mavailability_type[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mcrash_safe_replication[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdisk_autoresize[0m[0m = true | |
| [32m+[0m [0m[1m[0mdisk_autoresize_limit[0m[0m = 0 | |
| [32m+[0m [0m[1m[0mdisk_size[0m[0m = 25 | |
| [32m+[0m [0m[1m[0mdisk_type[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mpricing_plan[0m[0m = "PER_USE" | |
| [32m+[0m [0m[1m[0mreplication_type[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mtier[0m[0m = "db-n1-standard-4" | |
| [32m+[0m [0m[1m[0muser_labels[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mversion[0m[0m = (known after apply) | |
| [32m+[0m [0mbackup_configuration { | |
| [32m+[0m [0m[1m[0mbinary_log_enabled[0m[0m = true | |
| [32m+[0m [0m[1m[0menabled[0m[0m = true | |
| [32m+[0m [0m[1m[0mstart_time[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mtransaction_log_retention_days[0m[0m = (known after apply) | |
| [32m+[0m [0mbackup_retention_settings { | |
| [32m+[0m [0m[1m[0mretained_backups[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mretention_unit[0m[0m = (known after apply) | |
| } | |
| } | |
| [32m+[0m [0mdatabase_flags { | |
| [32m+[0m [0m[1m[0mname[0m[0m = "net_write_timeout" | |
| [32m+[0m [0m[1m[0mvalue[0m[0m = "240" | |
| } | |
| [32m+[0m [0mip_configuration { | |
| [32m+[0m [0m[1m[0mipv4_enabled[0m[0m = true | |
| [32m+[0m [0m[1m[0mrequire_ssl[0m[0m = true | |
| } | |
| [32m+[0m [0mlocation_preference { | |
| [32m+[0m [0m[1m[0mzone[0m[0m = "us-central1-c" | |
| } | |
| } | |
| } | |
| [1m # module.cloudsql.google_sql_user.forseti_user[0m will be created[0m[0m | |
| [0m [32m+[0m[0m resource "google_sql_user" "forseti_user" { | |
| [32m+[0m [0m[1m[0mhost[0m[0m = "%" | |
| [32m+[0m [0m[1m[0mid[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0minstance[0m[0m = "forseti-server-db-df4c7047" | |
| [32m+[0m [0m[1m[0mname[0m[0m = "forseti_security_user" | |
| [32m+[0m [0m[1m[0mpassword[0m[0m = (sensitive value) | |
| [32m+[0m [0m[1m[0mproject[0m[0m = "gcp-wen-automation-prod" | |
| } | |
| [1m # module.server.google_compute_firewall.forseti-server-allow-grpc[0][0m will be created[0m[0m | |
| [0m [32m+[0m[0m resource "google_compute_firewall" "forseti-server-allow-grpc" { | |
| [32m+[0m [0m[1m[0mcreation_timestamp[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdestination_ranges[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdirection[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0menable_logging[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mid[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mname[0m[0m = "forseti-server-allow-grpc-df4c7047" | |
| [32m+[0m [0m[1m[0mnetwork[0m[0m = "default" | |
| [32m+[0m [0m[1m[0mpriority[0m[0m = 100 | |
| [32m+[0m [0m[1m[0mproject[0m[0m = "gcp-wen-automation-prod" | |
| [32m+[0m [0m[1m[0mself_link[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0msource_ranges[0m[0m = [ | |
| [32m+[0m [0m"10.128.0.0/9", | |
| ] | |
| [32m+[0m [0m[1m[0msource_service_accounts[0m[0m = [ | |
| [32m+[0m [0m"forseti-client-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com", | |
| ] | |
| [32m+[0m [0m[1m[0mtarget_service_accounts[0m[0m = [ | |
| [32m+[0m [0m"forseti-server-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com", | |
| ] | |
| [32m+[0m [0mallow { | |
| [32m+[0m [0m[1m[0mports[0m[0m = [ | |
| [32m+[0m [0m"50051", | |
| [32m+[0m [0m"50052", | |
| ] | |
| [32m+[0m [0m[1m[0mprotocol[0m[0m = "tcp" | |
| } | |
| } | |
| [1m # module.server.google_compute_firewall.forseti-server-deny-all[0][0m will be created[0m[0m | |
| [0m [32m+[0m[0m resource "google_compute_firewall" "forseti-server-deny-all" { | |
| [32m+[0m [0m[1m[0mcreation_timestamp[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdestination_ranges[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdirection[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0menable_logging[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mid[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mname[0m[0m = "forseti-server-deny-all-df4c7047" | |
| [32m+[0m [0m[1m[0mnetwork[0m[0m = "default" | |
| [32m+[0m [0m[1m[0mpriority[0m[0m = 200 | |
| [32m+[0m [0m[1m[0mproject[0m[0m = "gcp-wen-automation-prod" | |
| [32m+[0m [0m[1m[0mself_link[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0msource_ranges[0m[0m = [ | |
| [32m+[0m [0m"0.0.0.0/0", | |
| ] | |
| [32m+[0m [0m[1m[0mtarget_service_accounts[0m[0m = [ | |
| [32m+[0m [0m"forseti-server-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com", | |
| ] | |
| [32m+[0m [0mdeny { | |
| [32m+[0m [0m[1m[0mports[0m[0m = [] | |
| [32m+[0m [0m[1m[0mprotocol[0m[0m = "icmp" | |
| } | |
| [32m+[0m [0mdeny { | |
| [32m+[0m [0m[1m[0mports[0m[0m = [] | |
| [32m+[0m [0m[1m[0mprotocol[0m[0m = "tcp" | |
| } | |
| [32m+[0m [0mdeny { | |
| [32m+[0m [0m[1m[0mports[0m[0m = [] | |
| [32m+[0m [0m[1m[0mprotocol[0m[0m = "udp" | |
| } | |
| } | |
| [1m # module.server.google_compute_firewall.forseti-server-ssh-external[0][0m will be created[0m[0m | |
| [0m [32m+[0m[0m resource "google_compute_firewall" "forseti-server-ssh-external" { | |
| [32m+[0m [0m[1m[0mcreation_timestamp[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdestination_ranges[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdirection[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0menable_logging[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mid[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mname[0m[0m = "forseti-server-ssh-external-df4c7047" | |
| [32m+[0m [0m[1m[0mnetwork[0m[0m = "default" | |
| [32m+[0m [0m[1m[0mpriority[0m[0m = 100 | |
| [32m+[0m [0m[1m[0mproject[0m[0m = "gcp-wen-automation-prod" | |
| [32m+[0m [0m[1m[0mself_link[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0msource_ranges[0m[0m = [ | |
| [32m+[0m [0m"0.0.0.0/0", | |
| ] | |
| [32m+[0m [0m[1m[0mtarget_service_accounts[0m[0m = [ | |
| [32m+[0m [0m"forseti-server-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com", | |
| ] | |
| [32m+[0m [0mallow { | |
| [32m+[0m [0m[1m[0mports[0m[0m = [ | |
| [32m+[0m [0m"22", | |
| ] | |
| [32m+[0m [0m[1m[0mprotocol[0m[0m = "tcp" | |
| } | |
| } | |
| [1m # module.server.google_compute_instance.forseti-server[0m will be created[0m[0m | |
| [0m [32m+[0m[0m resource "google_compute_instance" "forseti-server" { | |
| [32m+[0m [0m[1m[0mallow_stopping_for_update[0m[0m = true | |
| [32m+[0m [0m[1m[0mcan_ip_forward[0m[0m = false | |
| [32m+[0m [0m[1m[0mcpu_platform[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mcurrent_status[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdeletion_protection[0m[0m = false | |
| [32m+[0m [0m[1m[0mguest_accelerator[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mid[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0minstance_id[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mlabel_fingerprint[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mmachine_type[0m[0m = "n1-standard-8" | |
| [32m+[0m [0m[1m[0mmetadata_fingerprint[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mmetadata_startup_script[0m[0m = <<-EOT | |
| #!/bin/bash | |
| set -eu | |
| # Env variables | |
| USER=ubuntu | |
| USER_HOME=/home/ubuntu | |
| INTERNET_CONNECTION="$(ping -q -w1 -c1 google.com &>/dev/null && echo online || echo offline)" | |
| # Log status of internet connection | |
| if [ $INTERNET_CONNECTION == "offline" ]; then | |
| echo "Forseti Startup - A connection to the internet was not detected." | |
| fi | |
| # forseti_conf_server digest: mmtM4+tiN9Pz9OMNVXBrtIL3K8D+Ko316leZryOvMMM= | |
| # This digest is included in the startup script to rebuild the Forseti server VM | |
| # whenever the server configuration changes. | |
| # Ubuntu update. | |
| echo "Forseti Startup - Updating Ubuntu." | |
| sudo apt-get update -y | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade | |
| sudo apt-get update -y | |
| sudo apt-get --assume-yes install google-cloud-sdk git unzip | |
| if ! [ -e "/usr/sbin/google-fluentd" ]; then | |
| echo "Forseti Startup - Installing GCP Logging agent." | |
| cd $USER_HOME | |
| curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh | |
| bash install-logging-agent.sh | |
| fi | |
| # Check whether Cloud SQL proxy is installed. | |
| if [ -z "$(which cloud_sql_proxy)" ]; then | |
| echo "Forseti Startup - Installing GCP Cloud SQL Proxy." | |
| cd $USER_HOME | |
| wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 | |
| sudo mv cloud_sql_proxy.linux.amd64 /usr/local/bin/cloud_sql_proxy | |
| chmod +x /usr/local/bin/cloud_sql_proxy | |
| fi | |
| # Install Forseti Security. | |
| cd $USER_HOME | |
| if [ $INTERNET_CONNECTION == "online" ]; then | |
| rm -rf *forseti* | |
| fi | |
| # Download Forseti source code | |
| echo "Forseti Startup - Cloning Forseti repo." | |
| git clone --branch v2.25.2 --depth 1 https://github.com/forseti-security/forseti-security | |
| cd forseti-security | |
| # Forseti host dependencies | |
| echo "Forseti Startup - Installing Forseti linux dependencies." | |
| sudo apt-get install -y $(cat install/dependencies/apt_packages.txt | grep -v "#" | xargs) | |
| # Forseti dependencies | |
| echo "Forseti Startup - Installing Forseti python dependencies." | |
| python3 -m pip install -q --upgrade setuptools wheel | |
| python3 -m pip install -q --upgrade -r requirements.txt | |
| # Setup Forseti logging | |
| touch /var/log/forseti.log | |
| chown ubuntu:root /var/log/forseti.log | |
| cp $USER_HOME/forseti-security/configs/logging/fluentd/forseti.conf /etc/google-fluentd/config.d/forseti.conf | |
| cp $USER_HOME/forseti-security/configs/logging/logrotate/forseti /etc/logrotate.d/forseti | |
| chmod 644 /etc/logrotate.d/forseti | |
| service google-fluentd restart | |
| logrotate /etc/logrotate.conf | |
| # Change the access level of configs/ rules/ and run_forseti.sh | |
| chmod -R ug+rwx $USER_HOME/forseti-security/configs $USER_HOME/forseti-security/rules $USER_HOME/forseti-security/install/gcp/scripts/run_forseti.sh | |
| # Install Forseti | |
| echo "Forseti Startup - Installing Forseti python package." | |
| python3 setup.py install | |
| # Export variables required by initialize_forseti_services.sh. | |
| export SQL_PORT=3306 | |
| export SQL_INSTANCE_CONN_STRING=gcp-wen-automation-prod:us-central1:forseti-server-db-df4c7047 | |
| export FORSETI_DB_NAME=forseti_security | |
| export SQL_DB_USER=forseti_security_user | |
| export SQL_DB_PASSWORD=O6amcQbMtUS6dZGC | |
| # Export variables required by run_forseti.sh | |
| export FORSETI_HOME=$USER_HOME/forseti-security | |
| export FORSETI_SERVER_CONF=$USER_HOME/forseti-security/configs/forseti_conf_server.yaml | |
| export POLICY_LIBRARY_HOME=$USER_HOME/policy-library | |
| export POLICY_LIBRARY_SYNC_ENABLED=false | |
| export POLICY_LIBRARY_SYNC_GIT_SYNC_TAG=v3.1.2 | |
| export POLICY_LIBRARY_REPOSITORY_BRANCH=master | |
| export POLICY_LIBRARY_REPOSITORY_URL= | |
| export SCANNER_BUCKET=forseti-server-df4c7047 | |
| # Store the variables in /etc/profile.d/forseti_environment.sh | |
| # so all the users will have access to them | |
| echo "export FORSETI_HOME=$USER_HOME/forseti-security | |
| export FORSETI_SERVER_CONF=$USER_HOME/forseti-security/configs/forseti_conf_server.yaml | |
| export POLICY_LIBRARY_HOME=$USER_HOME/policy-library | |
| export POLICY_LIBRARY_SYNC_ENABLED=false | |
| export POLICY_LIBRARY_SYNC_GIT_SYNC_TAG=v3.1.2 | |
| export POLICY_LIBRARY_REPOSITORY_BRANCH=master | |
| export POLICY_LIBRARY_REPOSITORY_URL= | |
| export SCANNER_BUCKET=forseti-server-df4c7047 | |
| " > /etc/profile.d/forseti_environment.sh | sudo sh | |
| # Download server configuration from GCS | |
| echo "Forseti Startup - Downloading Forseti configuration from GCS." | |
| gsutil cp gs://forseti-server-df4c7047/configs/forseti_conf_server.yaml $USER_HOME/forseti-security/configs/forseti_conf_server.yaml | |
| gsutil cp -r gs://forseti-server-df4c7047/rules $USER_HOME/forseti-security/ | |
| echo "Number of rules enabled: `ls $USER_HOME/forseti-security/rules/*.yaml &>/dev/null | wc -l`" | |
| # Get Config Validator constraints | |
| sudo mkdir -m 777 -p $USER_HOME/policy-library | |
| if [ "false" == "true" ]; then | |
| # Policy Library Sync | |
| echo "Forseti Startup - Policy Library sync is enabled." | |
| # Install Docker | |
| if [ -z "$(which docker)" ]; then | |
| echo "Forseti Startup - Installing Docker for the Policy Library sync." | |
| sudo apt-get update | |
| sudo apt -y install apt-transport-https ca-certificates curl software-properties-common | |
| curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - | |
| sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" | |
| sudo apt update | |
| apt-cache policy docker-ce | |
| sudo apt install -y docker-ce | |
| fi | |
| # Setup local FS | |
| # Note: gsutil is using the -n flag so that once the SSH key is copied locally, it is not overwritten for any subsequent runs of terraform | |
| sudo mkdir -p /etc/git-secret | |
| sudo gsutil cp -n gs://forseti-server-df4c7047/policy_library_sync/* /etc/git-secret/ | |
| else | |
| # Download the Newest Config Validator constraints from GCS | |
| echo "Forseti Startup - Copying Policy Library from GCS." | |
| sudo mkdir -m 777 -p $USER_HOME/policy-library/policy-library | |
| gsutil -m rsync -d -r gs://forseti-server-df4c7047/policy-library $USER_HOME/policy-library/policy-library || echo "No policy available, continuing with Forseti installation" | |
| fi | |
| # Enable cloud-profiler in the initialize_forseti_services.sh script | |
| if false; then | |
| pip3 install google-cloud-profiler | |
| sed "/FORSETI_COMMAND+=\" --services/a FORSETI_COMMAND+=\" --enable_profiler\"" -i ./install/gcp/scripts/initialize_forseti_services.sh | |
| fi | |
| # Install mailjet_rest library | |
| if false; then | |
| echo "Forseti Startup - mailjet_rest library is enabled." | |
| pip3 install mailjet_rest | |
| fi | |
| # Start Forseti service depends on vars defined above. | |
| echo "Forseti Startup - Starting services." | |
| bash ./install/gcp/scripts/initialize_forseti_services.sh | |
| systemctl start cloudsqlproxy | |
| if [ "false" == "true" ]; then | |
| systemctl start policy-library-sync | |
| sleep 5 | |
| fi | |
| systemctl start config-validator | |
| sleep 5 | |
| echo "Forseti Startup - Attempting to update database schema, if necessary." | |
| python3 $USER_HOME/forseti-security/install/gcp/upgrade_tools/db_migrator.py | |
| # Enable and start main Forseti service immediately | |
| echo "Forseti Startup - Enabling and starting Forseti service." | |
| systemctl enable --now forseti | |
| echo "Forseti Startup - Success! The Forseti API server has been enabled and started." | |
| # Increase Open File Limit | |
| if grep -q "ubuntu soft nofile" /etc/security/limits.conf ; then | |
| echo "Ulimit soft nofile already set." | |
| else | |
| echo "ubuntu soft nofile 32768" | sudo tee -a /etc/security/limits.conf | |
| fi | |
| if grep -q "ubuntu hard nofile" /etc/security/limits.conf ; then | |
| echo "Ulimit hard nofile already set." | |
| else | |
| echo "ubuntu hard nofile 32768" | sudo tee -a /etc/security/limits.conf | |
| fi | |
| # Create a Forseti env script | |
| FORSETI_ENV="$(cat << EOF | |
| #!/bin/bash | |
| export PATH=$PATH:/usr/local/bin | |
| # Forseti environment variables | |
| export FORSETI_HOME=$USER_HOME/forseti-security | |
| export FORSETI_SERVER_CONF=$USER_HOME/forseti-security/configs/forseti_conf_server.yaml | |
| export POLICY_LIBRARY_HOME=$USER_HOME/policy-library | |
| export POLICY_LIBRARY_SYNC_ENABLED=false | |
| export POLICY_LIBRARY_SYNC_GIT_SYNC_TAG=v3.1.2 | |
| export POLICY_LIBRARY_REPOSITORY_BRANCH=master | |
| export POLICY_LIBRARY_REPOSITORY_URL= | |
| export SCANNER_BUCKET=forseti-server-df4c7047 | |
| EOF | |
| )" | |
| echo "$FORSETI_ENV" > $USER_HOME/forseti_env.sh | |
| USER=ubuntu | |
| # Use flock to prevent rerun of the same cron job when the previous job is still running. | |
| # If the lock file does not exist under the tmp directory, it will create the file and put a lock on top of the file. | |
| # When the previous cron job is not finished and the new one is trying to run, it will attempt to acquire the lock | |
| # to the lock file and fail because the file is already locked by the previous process. | |
| # The -n flag in flock will fail the process right away when the process is not able to acquire the lock so we won't | |
| # queue up the jobs. | |
| # If the cron job failed the acquire lock on the process, it will log a warning message to syslog. | |
| (echo "37 */2 * * * (/usr/bin/flock -n $USER_HOME/forseti-security/forseti_cron_runner.lock $USER_HOME/forseti-security/install/gcp/scripts/run_forseti.sh -b forseti-server-df4c7047 || echo '[forseti-security] Warning: New Forseti cron job will not be started, because previous Forseti job is still running.') 2>&1 | logger") | crontab -u $USER - | |
| echo "Forseti Startup - Added the run_forseti.sh to crontab under user $USER." | |
| echo "Forseti Startup - Execution of startup script finished." | |
| EOT | |
| [32m+[0m [0m[1m[0mmin_cpu_platform[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mname[0m[0m = "forseti-server-vm-df4c7047" | |
| [32m+[0m [0m[1m[0mproject[0m[0m = "gcp-wen-automation-prod" | |
| [32m+[0m [0m[1m[0mself_link[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mtags_fingerprint[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mzone[0m[0m = "us-central1-c" | |
| [32m+[0m [0mboot_disk { | |
| [32m+[0m [0m[1m[0mauto_delete[0m[0m = true | |
| [32m+[0m [0m[1m[0mdevice_name[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mdisk_encryption_key_sha256[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mkms_key_self_link[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mmode[0m[0m = "READ_WRITE" | |
| [32m+[0m [0m[1m[0msource[0m[0m = (known after apply) | |
| [32m+[0m [0minitialize_params { | |
| [32m+[0m [0m[1m[0mimage[0m[0m = "ubuntu-os-cloud/ubuntu-1804-lts" | |
| [32m+[0m [0m[1m[0mlabels[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0msize[0m[0m = 100 | |
| [32m+[0m [0m[1m[0mtype[0m[0m = "pd-ssd" | |
| } | |
| } | |
| [32m+[0m [0mconfidential_instance_config { | |
| [32m+[0m [0m[1m[0menable_confidential_compute[0m[0m = (known after apply) | |
| } | |
| [32m+[0m [0mnetwork_interface { | |
| [32m+[0m [0m[1m[0mipv6_access_type[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mname[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mnetwork[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mnetwork_ip[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mstack_type[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0msubnetwork[0m[0m = "default" | |
| [32m+[0m [0m[1m[0msubnetwork_project[0m[0m = "gcp-wen-automation-prod" | |
| [32m+[0m [0maccess_config { | |
| [32m+[0m [0m[1m[0mnat_ip[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mnetwork_tier[0m[0m = (known after apply) | |
| } | |
| } | |
| [32m+[0m [0mreservation_affinity { | |
| [32m+[0m [0m[1m[0mtype[0m[0m = (known after apply) | |
| [32m+[0m [0mspecific_reservation { | |
| [32m+[0m [0m[1m[0mkey[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mvalues[0m[0m = (known after apply) | |
| } | |
| } | |
| [32m+[0m [0mscheduling { | |
| [32m+[0m [0m[1m[0mautomatic_restart[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mmin_node_cpus[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mon_host_maintenance[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mpreemptible[0m[0m = (known after apply) | |
| [32m+[0m [0mnode_affinities { | |
| [32m+[0m [0m[1m[0mkey[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0moperator[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mvalues[0m[0m = (known after apply) | |
| } | |
| } | |
| [32m+[0m [0mservice_account { | |
| [32m+[0m [0m[1m[0memail[0m[0m = "forseti-server-gcp-df4c7047@gcp-wen-automation-prod.iam.gserviceaccount.com" | |
| [32m+[0m [0m[1m[0mscopes[0m[0m = [ | |
| [32m+[0m [0m"https://www.googleapis.com/auth/cloud-platform", | |
| ] | |
| } | |
| } | |
| [0m[1mPlan:[0m 11 to add, 0 to change, 1 to destroy. | |
| [0m[0m | |
| [1mChanges to Outputs:[0m[0m | |
| [32m+[0m [0m[1m[0mforseti-client-vm-ip[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mforseti-cloudsql-connection-name[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mforseti-cloudsql-instance-ip[0m[0m = (known after apply) | |
| [32m+[0m [0m[1m[0mforseti-server-vm-ip[0m[0m = (known after apply) | |
| [33mβ·[0m[0m | |
| [33mβ[0m [0m[1m[33mWarning: [0m[0m[1mDeprecated Attribute[0m | |
| [33mβ[0m [0m | |
| [33mβ[0m [0m[0m with module.client_gcs.google_storage_bucket.client_config, | |
| [33mβ[0m [0m on modules/client_gcs/main.tf line 33, in resource "google_storage_bucket" "client_config": | |
| [33mβ[0m [0m 33: bucket_policy_only = [4mtrue[0m[0m | |
| [33mβ[0m [0m | |
| [33mβ[0m [0mPlease use the uniform_bucket_level_access as this field has been renamed | |
| [33mβ[0m [0mby Google. | |
| [33mβ[0m [0m | |
| [33mβ[0m [0m(and 5 more similar warnings elsewhere) | |
| [33mβ΅[0m[0m | |
| [90m | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ[0m | |
| Saved the plan to: plan.tfplan | |
| To perform exactly these actions, run the following command to apply: | |
| terraform apply "plan.tfplan" | |
| [0m[1mnull_resource.org_id_and_folder_id_are_both_empty[0]: Destroying... [id=1754796495663566536][0m[0m | |
| [0m[1mnull_resource.org_id_and_folder_id_are_both_empty[0]: Destruction complete after 0s[0m | |
| [0m[1mnull_resource.org_id_and_folder_id_are_both_empty[0]: Creating...[0m[0m | |
| [0m[1mmodule.cloudsql.google_sql_database_instance.master: Creating...[0m[0m | |
| [0m[1mmodule.client.google_compute_firewall.forseti-client-deny-all[0]: Creating...[0m[0m | |
| [0m[1mmodule.client.google_compute_firewall.forseti-client-ssh-external[0]: Creating...[0m[0m | |
| [0m[1mmodule.client.google_compute_instance.forseti-client[0]: Creating...[0m[0m | |
| [0m[1mmodule.server.google_compute_firewall.forseti-server-deny-all[0]: Creating...[0m[0m | |
| [0m[1mmodule.server.google_compute_firewall.forseti-server-ssh-external[0]: Creating...[0m[0m | |
| [0m[1mmodule.server.google_compute_instance.forseti-server: Creating...[0m[0m | |
| [0m[1mmodule.server.google_compute_firewall.forseti-server-allow-grpc[0]: Creating...[0m[0m | |
| [31mβ·[0m[0m | |
| [31mβ[0m [0m[1m[31mError: [0m[0m[1mInvalid template interpolation value[0m | |
| [31mβ[0m [0m | |
| [31mβ[0m [0m[0m on main.tf line 25, in resource "null_resource" "org_id_and_folder_id_are_both_empty": | |
| [31mβ[0m [0m 25: command = "echo 'composite_root_resources=${[4mvar.composite_root_resources[0m} org_id=${var.org_id} folder_id=${var.org_id}' >&2; false"[0m | |
| [31mβ[0m [0m [90mβββββββββββββββββ[0m | |
| [31mβ[0m [0m[0m [90mβ[0m [1mvar.composite_root_resources[0m is empty list of string | |
| [31mβ[0m [0m[0m | |
| [31mβ[0m [0mCannot include the given value in a string template: string required. | |
| [31mβ΅[0m[0m | |
| [31mβ·[0m[0m | |
| [31mβ[0m [0m[1m[31mError: [0m[0m[1mError creating instance: googleapi: Error 400: Invalid value for field 'resource.networkInterfaces[0].subnetwork': 'projects/gcp-wen-automation-prod/regions/us-central1/subnetworks/default'. The referenced subnetwork resource cannot be found., invalid[0m | |
| [31mβ[0m [0m | |
| [31mβ[0m [0m[0m with module.client.google_compute_instance.forseti-client[0], | |
| [31mβ[0m [0m on modules/client/main.tf line 82, in resource "google_compute_instance" "forseti-client": | |
| [31mβ[0m [0m 82: resource "google_compute_instance" "forseti-client" [4m{[0m[0m | |
| [31mβ[0m [0m | |
| [31mβ΅[0m[0m | |
| [31mβ·[0m[0m | |
| [31mβ[0m [0m[1m[31mError: [0m[0m[1mError creating Firewall: googleapi: Error 404: The resource 'projects/gcp-wen-automation-prod/global/networks/default' was not found, notFound[0m | |
| [31mβ[0m [0m | |
| [31mβ[0m [0m[0m with module.client.google_compute_firewall.forseti-client-deny-all[0], | |
| [31mβ[0m [0m on modules/client/main.tf line 150, in resource "google_compute_firewall" "forseti-client-deny-all": | |
| [31mβ[0m [0m 150: resource "google_compute_firewall" "forseti-client-deny-all" [4m{[0m[0m | |
| [31mβ[0m [0m | |
| [31mβ΅[0m[0m | |
| [31mβ·[0m[0m | |
| [31mβ[0m [0m[1m[31mError: [0m[0m[1mError creating Firewall: googleapi: Error 404: The resource 'projects/gcp-wen-automation-prod/global/networks/default' was not found, notFound[0m | |
| [31mβ[0m [0m | |
| [31mβ[0m [0m[0m with module.client.google_compute_firewall.forseti-client-ssh-external[0], | |
| [31mβ[0m [0m on modules/client/main.tf line 174, in resource "google_compute_firewall" "forseti-client-ssh-external": | |
| [31mβ[0m [0m 174: resource "google_compute_firewall" "forseti-client-ssh-external" [4m{[0m[0m | |
| [31mβ[0m [0m | |
| [31mβ΅[0m[0m | |
| [31mβ·[0m[0m | |
| [31mβ[0m [0m[1m[31mError: [0m[0m[1mError, failed to create instance forseti-server-db-df4c7047: googleapi: Error 403: The client is not authorized to make this request., notAuthorized[0m | |
| [31mβ[0m [0m | |
| [31mβ[0m [0m[0m with module.cloudsql.google_sql_database_instance.master, | |
| [31mβ[0m [0m on modules/cloudsql/main.tf line 64, in resource "google_sql_database_instance" "master": | |
| [31mβ[0m [0m 64: resource "google_sql_database_instance" "master" [4m{[0m[0m | |
| [31mβ[0m [0m | |
| [31mβ΅[0m[0m | |
| [31mβ·[0m[0m | |
| [31mβ[0m [0m[1m[31mError: [0m[0m[1mError creating Firewall: googleapi: Error 404: The resource 'projects/gcp-wen-automation-prod/global/networks/default' was not found, notFound[0m | |
| [31mβ[0m [0m | |
| [31mβ[0m [0m[0m with module.server.google_compute_firewall.forseti-server-deny-all[0], | |
| [31mβ[0m [0m on modules/server/main.tf line 119, in resource "google_compute_firewall" "forseti-server-deny-all": | |
| [31mβ[0m [0m 119: resource "google_compute_firewall" "forseti-server-deny-all" [4m{[0m[0m | |
| [31mβ[0m [0m | |
| [31mβ΅[0m[0m | |
| [31mβ·[0m[0m | |
| [31mβ[0m [0m[1m[31mError: [0m[0m[1mError creating Firewall: googleapi: Error 404: The resource 'projects/gcp-wen-automation-prod/global/networks/default' was not found, notFound[0m | |
| [31mβ[0m [0m | |
| [31mβ[0m [0m[0m with module.server.google_compute_firewall.forseti-server-ssh-external[0], | |
| [31mβ[0m [0m on modules/server/main.tf line 143, in resource "google_compute_firewall" "forseti-server-ssh-external": | |
| [31mβ[0m [0m 143: resource "google_compute_firewall" "forseti-server-ssh-external" [4m{[0m[0m | |
| [31mβ[0m [0m | |
| [31mβ΅[0m[0m | |
| [31mβ·[0m[0m | |
| [31mβ[0m [0m[1m[31mError: [0m[0m[1mError creating Firewall: googleapi: Error 404: The resource 'projects/gcp-wen-automation-prod/global/networks/default' was not found, notFound[0m | |
| [31mβ[0m [0m | |
| [31mβ[0m [0m[0m with module.server.google_compute_firewall.forseti-server-allow-grpc[0], | |
| [31mβ[0m [0m on modules/server/main.tf line 177, in resource "google_compute_firewall" "forseti-server-allow-grpc": | |
| [31mβ[0m [0m 177: resource "google_compute_firewall" "forseti-server-allow-grpc" [4m{[0m[0m | |
| [31mβ[0m [0m | |
| [31mβ΅[0m[0m | |
| [31mβ·[0m[0m | |
| [31mβ[0m [0m[1m[31mError: [0m[0m[1mError creating instance: googleapi: Error 400: Invalid value for field 'resource.networkInterfaces[0].subnetwork': 'projects/gcp-wen-automation-prod/regions/us-central1/subnetworks/default'. The referenced subnetwork resource cannot be found., invalid[0m | |
| [31mβ[0m [0m | |
| [31mβ[0m [0m[0m with module.server.google_compute_instance.forseti-server, | |
| [31mβ[0m [0m on modules/server/main.tf line 225, in resource "google_compute_instance" "forseti-server": | |
| [31mβ[0m [0m 225: resource "google_compute_instance" "forseti-server" [4m{[0m[0m | |
| [31mβ[0m [0m | |
| [31mβ΅[0m[0m |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment