-
Notifications
You must be signed in to change notification settings - Fork 113
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ci][terraform][cloud] tags/labels with metadata #792
[ci][terraform][cloud] tags/labels with metadata #792
Conversation
test/packages/parallel/gcp/data_stream/compute/_dev/deploy/tf/compute.tf
Outdated
Show resolved
Hide resolved
pull_request = var.PULL_REQUEST | ||
ci_build_number = var.CI_BUILD_NUMBER | ||
Environment = "CI" | ||
Owner = "elastic-package" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't it the repository name? Let's pick a single label.
test/packages/parallel/gcp/data_stream/compute/_dev/deploy/tf/compute.tf
Outdated
Show resolved
Hide resolved
test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/main.tf
Outdated
Show resolved
Hide resolved
test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/variables.tf
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have also checked Terraform logs in the internal bucket:
Attaching to elastic-package-service_terraform_1
�[36mterraform_1 |�[0m + cp -r /stage/. /workspace
�[36mterraform_1 |�[0m + trap cleanup EXIT INT TERM
�[36mterraform_1 |�[0m + terraform init
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m Initializing the backend...
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m Initializing provider plugins...
�[36mterraform_1 |�[0m - Reusing previous version of hashicorp/google from the dependency lock file
�[36mterraform_1 |�[0m - Installing hashicorp/google v4.5.0...
�[36mterraform_1 |�[0m - Installed hashicorp/google v4.5.0 (signed by HashiCorp)
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m Terraform has been successfully initialized!
�[36mterraform_1 |�[0m + terraform plan
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
�[36mterraform_1 |�[0m + create
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m Terraform will perform the following actions:
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m # google_compute_instance.default will be created
�[36mterraform_1 |�[0m + resource "google_compute_instance" "default" {
�[36mterraform_1 |�[0m + can_ip_forward = false
�[36mterraform_1 |�[0m + cpu_platform = (known after apply)
�[36mterraform_1 |�[0m + current_status = (known after apply)
�[36mterraform_1 |�[0m + deletion_protection = false
�[36mterraform_1 |�[0m + guest_accelerator = (known after apply)
�[36mterraform_1 |�[0m + id = (known after apply)
�[36mterraform_1 |�[0m + instance_id = (known after apply)
�[36mterraform_1 |�[0m + label_fingerprint = (known after apply)
�[36mterraform_1 |�[0m + labels = {
�[36mterraform_1 |�[0m + "Branch" = "PR-792"
�[36mterraform_1 |�[0m + "Build" = "3"
�[36mterraform_1 |�[0m + "CreatedDate" = "unknown"
�[36mterraform_1 |�[0m + "Environment" = "CI"
�[36mterraform_1 |�[0m + "Owner" = "elastic-package"
�[36mterraform_1 |�[0m + "RunId" = "18571"
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m + machine_type = "e2-micro"
�[36mterraform_1 |�[0m + metadata_fingerprint = (known after apply)
�[36mterraform_1 |�[0m + min_cpu_platform = (known after apply)
�[36mterraform_1 |�[0m + name = "elastic-package-system-test-18571"
�[36mterraform_1 |�[0m + project = (known after apply)
�[36mterraform_1 |�[0m + self_link = (known after apply)
�[36mterraform_1 |�[0m + tags_fingerprint = (known after apply)
�[36mterraform_1 |�[0m + zone = "us-central1-a"
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + boot_disk {
�[36mterraform_1 |�[0m + auto_delete = true
�[36mterraform_1 |�[0m + device_name = (known after apply)
�[36mterraform_1 |�[0m + disk_encryption_key_sha256 = (known after apply)
�[36mterraform_1 |�[0m + kms_key_self_link = (known after apply)
�[36mterraform_1 |�[0m + mode = "READ_WRITE"
�[36mterraform_1 |�[0m + source = (known after apply)
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + initialize_params {
�[36mterraform_1 |�[0m + image = "https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/images/ubuntu-minimal-2004-focal-v20220419a"
�[36mterraform_1 |�[0m + labels = (known after apply)
�[36mterraform_1 |�[0m + size = (known after apply)
�[36mterraform_1 |�[0m + type = (known after apply)
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + confidential_instance_config {
�[36mterraform_1 |�[0m + enable_confidential_compute = (known after apply)
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + network_interface {
�[36mterraform_1 |�[0m + ipv6_access_type = (known after apply)
�[36mterraform_1 |�[0m + name = (known after apply)
�[36mterraform_1 |�[0m + network = "default"
�[36mterraform_1 |�[0m + network_ip = (known after apply)
�[36mterraform_1 |�[0m + stack_type = (known after apply)
�[36mterraform_1 |�[0m + subnetwork = (known after apply)
�[36mterraform_1 |�[0m + subnetwork_project = (known after apply)
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + access_config {
�[36mterraform_1 |�[0m + nat_ip = (known after apply)
�[36mterraform_1 |�[0m + network_tier = (known after apply)
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + reservation_affinity {
�[36mterraform_1 |�[0m + type = (known after apply)
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + specific_reservation {
�[36mterraform_1 |�[0m + key = (known after apply)
�[36mterraform_1 |�[0m + values = (known after apply)
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + scheduling {
�[36mterraform_1 |�[0m + automatic_restart = (known after apply)
�[36mterraform_1 |�[0m + min_node_cpus = (known after apply)
�[36mterraform_1 |�[0m + on_host_maintenance = (known after apply)
�[36mterraform_1 |�[0m + preemptible = (known after apply)
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + node_affinities {
�[36mterraform_1 |�[0m + key = (known after apply)
�[36mterraform_1 |�[0m + operator = (known after apply)
�[36mterraform_1 |�[0m + values = (known after apply)
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m Plan: 1 to add, 0 to change, 0 to destroy.
�[36mterraform_1 |�[0m + terraform apply -auto-approve
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
�[36mterraform_1 |�[0m + create
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m Terraform will perform the following actions:
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m # google_compute_instance.default will be created
�[36mterraform_1 |�[0m + resource "google_compute_instance" "default" {
�[36mterraform_1 |�[0m + can_ip_forward = false
�[36mterraform_1 |�[0m + cpu_platform = (known after apply)
�[36mterraform_1 |�[0m + current_status = (known after apply)
�[36mterraform_1 |�[0m + deletion_protection = false
�[36mterraform_1 |�[0m + guest_accelerator = (known after apply)
�[36mterraform_1 |�[0m + id = (known after apply)
�[36mterraform_1 |�[0m + instance_id = (known after apply)
�[36mterraform_1 |�[0m + label_fingerprint = (known after apply)
�[36mterraform_1 |�[0m + labels = {
�[36mterraform_1 |�[0m + "Branch" = "PR-792"
�[36mterraform_1 |�[0m + "Build" = "3"
�[36mterraform_1 |�[0m + "CreatedDate" = "unknown"
�[36mterraform_1 |�[0m + "Environment" = "CI"
�[36mterraform_1 |�[0m + "Owner" = "elastic-package"
�[36mterraform_1 |�[0m + "RunId" = "18571"
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m + machine_type = "e2-micro"
�[36mterraform_1 |�[0m + metadata_fingerprint = (known after apply)
�[36mterraform_1 |�[0m + min_cpu_platform = (known after apply)
�[36mterraform_1 |�[0m + name = "elastic-package-system-test-18571"
�[36mterraform_1 |�[0m + project = (known after apply)
�[36mterraform_1 |�[0m + self_link = (known after apply)
�[36mterraform_1 |�[0m + tags_fingerprint = (known after apply)
�[36mterraform_1 |�[0m + zone = "us-central1-a"
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + boot_disk {
�[36mterraform_1 |�[0m + auto_delete = true
�[36mterraform_1 |�[0m + device_name = (known after apply)
�[36mterraform_1 |�[0m + disk_encryption_key_sha256 = (known after apply)
�[36mterraform_1 |�[0m + kms_key_self_link = (known after apply)
�[36mterraform_1 |�[0m + mode = "READ_WRITE"
�[36mterraform_1 |�[0m + source = (known after apply)
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + initialize_params {
�[36mterraform_1 |�[0m + image = "https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/images/ubuntu-minimal-2004-focal-v20220419a"
�[36mterraform_1 |�[0m + labels = (known after apply)
�[36mterraform_1 |�[0m + size = (known after apply)
�[36mterraform_1 |�[0m + type = (known after apply)
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + confidential_instance_config {
�[36mterraform_1 |�[0m + enable_confidential_compute = (known after apply)
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + network_interface {
�[36mterraform_1 |�[0m + ipv6_access_type = (known after apply)
�[36mterraform_1 |�[0m + name = (known after apply)
�[36mterraform_1 |�[0m + network = "default"
�[36mterraform_1 |�[0m + network_ip = (known after apply)
�[36mterraform_1 |�[0m + stack_type = (known after apply)
�[36mterraform_1 |�[0m + subnetwork = (known after apply)
�[36mterraform_1 |�[0m + subnetwork_project = (known after apply)
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + access_config {
�[36mterraform_1 |�[0m + nat_ip = (known after apply)
�[36mterraform_1 |�[0m + network_tier = (known after apply)
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + reservation_affinity {
�[36mterraform_1 |�[0m + type = (known after apply)
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + specific_reservation {
�[36mterraform_1 |�[0m + key = (known after apply)
�[36mterraform_1 |�[0m + values = (known after apply)
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + scheduling {
�[36mterraform_1 |�[0m + automatic_restart = (known after apply)
�[36mterraform_1 |�[0m + min_node_cpus = (known after apply)
�[36mterraform_1 |�[0m + on_host_maintenance = (known after apply)
�[36mterraform_1 |�[0m + preemptible = (known after apply)
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + node_affinities {
�[36mterraform_1 |�[0m + key = (known after apply)
�[36mterraform_1 |�[0m + operator = (known after apply)
�[36mterraform_1 |�[0m + values = (known after apply)
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m }
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m Plan: 1 to add, 0 to change, 0 to destroy.
�[36mterraform_1 |�[0m google_compute_instance.default: Creating...
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m Error: Error creating instance: googleapi: Error 400: Invalid value for field 'resource.labels': ''. Label key 'Owner' violates format constraints. The key must start with a lowercase character, can only contain lowercase letters, numeric characters, underscores and dashes. The key can be at most 63 characters long. International characters are allowed., invalid
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m with google_compute_instance.default,
�[36mterraform_1 |�[0m on compute.tf line 7, in resource "google_compute_instance" "default":
�[36mterraform_1 |�[0m 7: resource "google_compute_instance" "default" {
�[36mterraform_1 |�[0m
�[36mterraform_1 |�[0m + echo 'Terraform definitions applied.'
�[36mterraform_1 |�[0m Terraform definitions applied.
�[36mterraform_1 |�[0m + set +x
As you can see, GCP is picky about label values.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that we're close to getting this in. Just a few last comments about naming/location.
test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/main.tf
Outdated
Show resolved
Hide resolved
test/packages/parallel/gcp/data_stream/compute/_dev/deploy/tf/compute.tf
Outdated
Show resolved
Hide resolved
@v1v Please re-request the review when you address the feedback. Thanks for applying the changes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @mtojek for walking through this review!! I'll proceed with the same pattern for the rest of projects :) |
What does this PR do?
Standardise the below tags/labels in the terraform resources for AWS/GCP:
environment
=> static valuerepo
. => static valuebranch
=> dynamic valuebuild
=> dynamic valuecreated_date
=> dynamic valueWhy is it important?
Help with tearing down any of the ephemeral resources which were not successfully removed as part of the system tests.
Implementation details
environment=CI
will allow to filter all those cloud resources which were created in the CIcreated_date
will help to filter those which were older than X days or X hours, since it's Unix epoch time based.branch
andbuild
will help to identify what build in the CI and what PR, Branch or Tag created those resources.Further details
Test
seems to produce the right labels