From f435e9168ae1d832d7123a3fd90e0b2139580ef1 Mon Sep 17 00:00:00 2001 From: Kyle Prins Date: Fri, 17 Mar 2023 09:36:00 -0500 Subject: [PATCH 01/10] adding otel_demo capabilities --- workshop/aws/ec2/main.tf | 6 ++++++ workshop/aws/ec2/templates/userdata.yaml | 16 ++++++++++++++++ workshop/aws/ec2/terraform.tfvars.template | 1 + workshop/aws/ec2/variables.tf | 6 ++++++ 4 files changed, 29 insertions(+) diff --git a/workshop/aws/ec2/main.tf b/workshop/aws/ec2/main.tf index 20a91e8321..16d6a98c2f 100644 --- a/workshop/aws/ec2/main.tf +++ b/workshop/aws/ec2/main.tf @@ -183,6 +183,7 @@ locals { realm = var.splunk_realm presetup = var.splunk_presetup jdk = var.splunk_jdk + otel_demo = var.otel_demo instance_password = random_string.password.result } } @@ -219,5 +220,10 @@ resource "aws_instance" "observability-instance" { condition = var.splunk_presetup ? try(var.splunk_access_token, "") != "" && try(var.splunk_realm, "") != "" && try(var.splunk_rum_token, "") != "" : true error_message = "When requesting a pre-setup instance, splunk_realm, splunk_access_token and splunk_rum_token are required and cannot be null/empty" } + precondition { + # if otel_demo=true, tokens and realm cannot be empty. also presetup cannot also be true. + condition = var.otel_demo ? try(var.splunk_access_token, "") != "" && try(var.splunk_realm, "") != "" && try(var.splunk_rum_token, "") != "" && try(var.splunk_presetup, "") == false : true + error_message = "When requesting an otel_demo, splunk_realm, splunk_access_token and splunk_rum_token are required and cannot be null/empty. splunk_presetup variable must also be set to false. " + } } } diff --git a/workshop/aws/ec2/templates/userdata.yaml b/workshop/aws/ec2/templates/userdata.yaml index 16ff822ccf..f84f7b9285 100644 --- a/workshop/aws/ec2/templates/userdata.yaml +++ b/workshop/aws/ec2/templates/userdata.yaml @@ -85,6 +85,22 @@ write_files: fi %{ endif ~} +%{ if otel_demo == true ~} + export RUM_TOKEN=${rum_token} + mkdir otel-demo && cd otel-demo + curl -o otel-demo-collector.yaml https://raw.githubusercontent.com/splunk/observability-workshop/main/oteldemo/otel-demo-collector.yaml + curl -o otel-demo.yaml https://raw.githubusercontent.com/splunk/observability-workshop/main/oteldemo/otel-demo.yaml + if [ ! -f ~/.helmok ]; then + helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart + helm repo update + helm install splunk-otel-collector --set="splunkObservability.realm=$REALM" --set="splunkObservability.accessToken=$ACCESS_TOKEN" --set="clusterName=$(hostname)-k3s-cluster" --set="splunkObservability.logsEnabled=true" --set="logsEngine=otel" --set="splunkObservability.profilingEnabled=true" --set="splunkObservability.infrastructureMonitoringEventsEnabled=true" --set="networkExplorer.enabled=true" --set="networkExplorer.podSecurityPolicy.enabled=false" --set="agent.enabled=true" --set="gateway.replicaCount=1" --set="gateway.resources.limits.cpu=500m" --set="gateway.resources.limits.memory=1Gi" --set="clusterReceiver.enabled=true" --set="environment=$(hostname)-apm-env" splunk-otel-collector-chart/splunk-otel-collector -f otel-demo-collector.yaml + helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts + helm install my-otel-demo open-telemetry/opentelemetry-demo --values otel-demo.yaml + cd /home/ubuntu + fi +%{ endif ~} + + export KUBECONFIG=/home/ubuntu/.kube/config alias kc='kubectl' alias dc='docker-compose' diff --git a/workshop/aws/ec2/terraform.tfvars.template b/workshop/aws/ec2/terraform.tfvars.template index 30c96f50e0..595e8fe9d9 100644 --- a/workshop/aws/ec2/terraform.tfvars.template +++ b/workshop/aws/ec2/terraform.tfvars.template @@ -11,3 +11,4 @@ splunk_realm = "" # optional splunk_presetup = false splunk_jdk = false +otel_demo = false diff --git a/workshop/aws/ec2/variables.tf b/workshop/aws/ec2/variables.tf index 1b01e6c9b0..69ca177d12 100644 --- a/workshop/aws/ec2/variables.tf +++ b/workshop/aws/ec2/variables.tf @@ -16,6 +16,12 @@ variable "splunk_jdk" { default = false } +variable "otel_demo" { + description = "Spin up the OpenTelemetry Telescope shop demo? (true/false)" + type = bool + default = false +} + variable "aws_instance_count" { description = "Instance Count (Usually 1)" nullable = false From 6acfff350b13a81597847ce4a8070eefdd2a8ef4 Mon Sep 17 00:00:00 2001 From: Kyle Prins Date: Mon, 20 Mar 2023 11:11:14 -0500 Subject: [PATCH 02/10] update REALM to env var --- oteldemo/otel-demo-collector.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oteldemo/otel-demo-collector.yaml b/oteldemo/otel-demo-collector.yaml index 1b2882e3df..d05c7c38de 100644 --- a/oteldemo/otel-demo-collector.yaml +++ b/oteldemo/otel-demo-collector.yaml @@ -45,7 +45,7 @@ agent: action: upsert exporters: otlphttp: - traces_endpoint: "https://ingest.{REALM}.signalfx.com/v2/trace/otlp" + traces_endpoint: "https://ingest.${REALM}.signalfx.com/v2/trace/otlp" compression: gzip headers: "X-SF-Token": "${SPLUNK_OBSERVABILITY_ACCESS_TOKEN}" From 9b857ef7477c0fa8f4c0a1224b0f7755df75b278 Mon Sep 17 00:00:00 2001 From: Kyle Prins Date: Mon, 20 Mar 2023 14:49:44 -0500 Subject: [PATCH 03/10] update curl commands --- oteldemo/otel-demo.yaml | 1 + workshop/aws/ec2/templates/userdata.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/oteldemo/otel-demo.yaml b/oteldemo/otel-demo.yaml index 9004132eee..5f339858d7 100644 --- a/oteldemo/otel-demo.yaml +++ b/oteldemo/otel-demo.yaml @@ -49,3 +49,4 @@ observability: enabled: false grafana: enabled: false + \ No newline at end of file diff --git a/workshop/aws/ec2/templates/userdata.yaml b/workshop/aws/ec2/templates/userdata.yaml index f84f7b9285..5fae10d31f 100644 --- a/workshop/aws/ec2/templates/userdata.yaml +++ b/workshop/aws/ec2/templates/userdata.yaml @@ -32,7 +32,7 @@ system_info: groups: [docker] write_files: - - path: /etc/skel/.profile + - path: /etc/skel/.profile append: true content: | @@ -88,8 +88,8 @@ write_files: %{ if otel_demo == true ~} export RUM_TOKEN=${rum_token} mkdir otel-demo && cd otel-demo - curl -o otel-demo-collector.yaml https://raw.githubusercontent.com/splunk/observability-workshop/main/oteldemo/otel-demo-collector.yaml - curl -o otel-demo.yaml https://raw.githubusercontent.com/splunk/observability-workshop/main/oteldemo/otel-demo.yaml + curl -s -OL https://raw.githubusercontent.com/splunk/observability-workshop/main/oteldemo/otel-demo-collector.yaml + curl -s -OL https://raw.githubusercontent.com/splunk/observability-workshop/main/oteldemo/otel-demo.yaml if [ ! -f ~/.helmok ]; then helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart helm repo update @@ -99,7 +99,7 @@ write_files: cd /home/ubuntu fi %{ endif ~} - +W export KUBECONFIG=/home/ubuntu/.kube/config alias kc='kubectl' From f7feb8b48456667ea8858f0594c295316586ef80 Mon Sep 17 00:00:00 2001 From: Kyle Prins Date: Mon, 20 Mar 2023 15:09:34 -0500 Subject: [PATCH 04/10] Update userdata.yaml --- workshop/aws/ec2/templates/userdata.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/workshop/aws/ec2/templates/userdata.yaml b/workshop/aws/ec2/templates/userdata.yaml index 5fae10d31f..9e1a5fe1e4 100644 --- a/workshop/aws/ec2/templates/userdata.yaml +++ b/workshop/aws/ec2/templates/userdata.yaml @@ -99,7 +99,6 @@ write_files: cd /home/ubuntu fi %{ endif ~} -W export KUBECONFIG=/home/ubuntu/.kube/config alias kc='kubectl' From 00562231c80b529d102d0dfaf3254d87b18ed046 Mon Sep 17 00:00:00 2001 From: Kyle Prins Date: Tue, 21 Mar 2023 15:31:14 -0500 Subject: [PATCH 05/10] update readme --- multipass/README.md | 2 ++ multipass/terraform.tfvars.template | 1 + workshop/aws/ec2/README.md | 1 + 3 files changed, 4 insertions(+) diff --git a/multipass/README.md b/multipass/README.md index d3e2e49a92..e29e7e4200 100644 --- a/multipass/README.md +++ b/multipass/README.md @@ -57,6 +57,7 @@ commands will detect it and remind you to do so if necessary. - `splunk_realm`: Observability Realm - `splunk_presetup`: Provide a preconfigured instance (OTel Collector and Online Boutique deployed with RUM enabled) - `splunk_jdk`: Install OpenJDK and Maven on the instance (for PetClinic workshop or other Java based workshops) +- `otel_demo` : Install and configure the OpenTelemetry Telescope Shop Demo. This requires that `splunk_presetup` is set to FALSE. The default is FALSE ## 6. Create Terraform variables file @@ -76,6 +77,7 @@ splunk_rum_token = "1234xxxx5678yyyy" splunk_realm = "us1" splunk_presetup = true splunk_jdk = false +otel_demo = false ``` Then run `terraform plan` to see what will be created. Once happy run `terraform apply` to create the instances. diff --git a/multipass/terraform.tfvars.template b/multipass/terraform.tfvars.template index 9ec3bc5bd1..f901e88f7c 100644 --- a/multipass/terraform.tfvars.template +++ b/multipass/terraform.tfvars.template @@ -6,3 +6,4 @@ splunk_realm = "" # Optional splunk_presetup = false splunk_jdk = false +otel_demo = false diff --git a/workshop/aws/ec2/README.md b/workshop/aws/ec2/README.md index facf3761f9..ccd0439bcd 100644 --- a/workshop/aws/ec2/README.md +++ b/workshop/aws/ec2/README.md @@ -54,6 +54,7 @@ The following variables are available. Edit `terraform.tfvars` to reflect what y - `splunk_presetup`: Provide a preconfigured instance (OTel Collector and Online Boutique deployed with RUM enabled). The default is FALSE. - `splunk_jdk`: Install OpenJDK and Maven on the instance. The default is FALSE. +- `otel_demo` : Install and configure the OpenTelemetry Telescope Shop Demo. This requires that `splunk_presetup` is set to FALSE. The default is FALSE ## 6. Create a Terraform plan From 4b3e01df6eaba72bf3be91a28c5a2b2beacab122 Mon Sep 17 00:00:00 2001 From: Robert Castley Date: Thu, 23 Mar 2023 16:37:38 +0000 Subject: [PATCH 06/10] Update README.md --- workshop/aws/ec2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workshop/aws/ec2/README.md b/workshop/aws/ec2/README.md index ccd0439bcd..5393ecf781 100644 --- a/workshop/aws/ec2/README.md +++ b/workshop/aws/ec2/README.md @@ -54,7 +54,7 @@ The following variables are available. Edit `terraform.tfvars` to reflect what y - `splunk_presetup`: Provide a preconfigured instance (OTel Collector and Online Boutique deployed with RUM enabled). The default is FALSE. - `splunk_jdk`: Install OpenJDK and Maven on the instance. The default is FALSE. -- `otel_demo` : Install and configure the OpenTelemetry Telescope Shop Demo. This requires that `splunk_presetup` is set to FALSE. The default is FALSE +- `otel_demo` : Install and configure the OpenTelemetry Astronomy Shop Demo. This requires that `splunk_presetup` is set to FALSE. The default is FALSE ## 6. Create a Terraform plan From 41d331bf5206d9adfa24b333478066c2cda5aace Mon Sep 17 00:00:00 2001 From: Robert Castley Date: Thu, 23 Mar 2023 16:37:59 +0000 Subject: [PATCH 07/10] Update variables.tf --- workshop/aws/ec2/variables.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workshop/aws/ec2/variables.tf b/workshop/aws/ec2/variables.tf index 69ca177d12..3bb4abdb84 100644 --- a/workshop/aws/ec2/variables.tf +++ b/workshop/aws/ec2/variables.tf @@ -17,7 +17,7 @@ variable "splunk_jdk" { } variable "otel_demo" { - description = "Spin up the OpenTelemetry Telescope shop demo? (true/false)" + description = "Spin up the OpenTelemetry Astronomy Shop Demo? (true/false)" type = bool default = false } From 01c4f376cf61c6ed69d2c24bbc87dadd5e9fbedd Mon Sep 17 00:00:00 2001 From: Robert Castley Date: Thu, 23 Mar 2023 16:38:56 +0000 Subject: [PATCH 08/10] Update userdata.yaml --- workshop/aws/ec2/templates/userdata.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workshop/aws/ec2/templates/userdata.yaml b/workshop/aws/ec2/templates/userdata.yaml index 9e1a5fe1e4..5c2453805b 100644 --- a/workshop/aws/ec2/templates/userdata.yaml +++ b/workshop/aws/ec2/templates/userdata.yaml @@ -32,7 +32,7 @@ system_info: groups: [docker] write_files: - - path: /etc/skel/.profile + - path: /etc/skel/.profile append: true content: | From 32068e0ef9c7faf2089bbd8a2cce85550b47aa2d Mon Sep 17 00:00:00 2001 From: Robert Castley Date: Thu, 23 Mar 2023 16:39:33 +0000 Subject: [PATCH 09/10] Update otel-demo.yaml --- oteldemo/otel-demo.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/oteldemo/otel-demo.yaml b/oteldemo/otel-demo.yaml index 5f339858d7..9004132eee 100644 --- a/oteldemo/otel-demo.yaml +++ b/oteldemo/otel-demo.yaml @@ -49,4 +49,3 @@ observability: enabled: false grafana: enabled: false - \ No newline at end of file From 217b624a518a3c21563e2fbe7bd0f64916b10908 Mon Sep 17 00:00:00 2001 From: Robert Castley Date: Thu, 23 Mar 2023 16:40:30 +0000 Subject: [PATCH 10/10] Update main.tf --- workshop/aws/ec2/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workshop/aws/ec2/main.tf b/workshop/aws/ec2/main.tf index 16d6a98c2f..6ad4f92e69 100644 --- a/workshop/aws/ec2/main.tf +++ b/workshop/aws/ec2/main.tf @@ -183,7 +183,7 @@ locals { realm = var.splunk_realm presetup = var.splunk_presetup jdk = var.splunk_jdk - otel_demo = var.otel_demo + otel_demo = var.otel_demo instance_password = random_string.password.result } }