From 7d3a5e6a895538a074071decf7aa770ba28132e7 Mon Sep 17 00:00:00 2001 From: ThomasCardin Date: Fri, 1 Nov 2024 10:00:37 -0400 Subject: [PATCH 1/5] integration workflow --- .github/workflows/integration-workflow.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/integration-workflow.yml diff --git a/.github/workflows/integration-workflow.yml b/.github/workflows/integration-workflow.yml new file mode 100644 index 0000000..929dac6 --- /dev/null +++ b/.github/workflows/integration-workflow.yml @@ -0,0 +1,21 @@ +name: Integration workflow + +on: + workflow_dispatch: + inputs: + username: + required: true + description: "Enter your username" + type: string + email: + required: true + description: "Enter your email address" + type: string + +jobs: + integration: + uses: ai-cfia/github-workflows/.github/workflows/workflow-integration.yml@158-implement-a-workflow-to-capture-user-inputs-and-trigger-template-rendering + with: + username: ${{ github.event.inputs.username }} + email: ${{ github.event.inputs.email }} + secrets: inherit From da3ee0754bd5911d0162100bd99fb73401a0d650 Mon Sep 17 00:00:00 2001 From: SonOfLope Date: Fri, 1 Nov 2024 13:39:51 -0400 Subject: [PATCH 2/5] Issue #65: push new dockerfiles --- .github/workflows/custom-dockerfile-push.yml | 4 + dockerfiles/alloy/Dockerfile | 6 ++ dockerfiles/alloy/config.alloy | 87 ++++++++++++++++++ dockerfiles/alloy/endpoints.json | 24 +++++ dockerfiles/loki/Dockerfile | 5 ++ dockerfiles/loki/loki.yaml | 36 ++++++++ dockerfiles/prometheus/Dockerfile | 5 ++ dockerfiles/prometheus/prometheus.yaml | 13 +++ dockerfiles/tempo/Dockerfile | 5 ++ dockerfiles/tempo/tempo.yaml | 94 ++++++++++++++++++++ 10 files changed, 279 insertions(+) create mode 100644 dockerfiles/alloy/Dockerfile create mode 100644 dockerfiles/alloy/config.alloy create mode 100644 dockerfiles/alloy/endpoints.json create mode 100644 dockerfiles/loki/Dockerfile create mode 100644 dockerfiles/loki/loki.yaml create mode 100644 dockerfiles/prometheus/Dockerfile create mode 100644 dockerfiles/prometheus/prometheus.yaml create mode 100644 dockerfiles/tempo/Dockerfile create mode 100644 dockerfiles/tempo/tempo.yaml diff --git a/.github/workflows/custom-dockerfile-push.yml b/.github/workflows/custom-dockerfile-push.yml index d4d423d..40b869a 100644 --- a/.github/workflows/custom-dockerfile-push.yml +++ b/.github/workflows/custom-dockerfile-push.yml @@ -13,6 +13,10 @@ on: - otel-auto - webtop-fedora-kde - webtop-ubuntu-kde + - alloy + - tempo + - loki + - prometheus tag: required: true description: Version to tag the image diff --git a/dockerfiles/alloy/Dockerfile b/dockerfiles/alloy/Dockerfile new file mode 100644 index 0000000..c89f50e --- /dev/null +++ b/dockerfiles/alloy/Dockerfile @@ -0,0 +1,6 @@ +FROM grafana/alloy:latest + +COPY config.alloy /etc/alloy/config.alloy +COPY endpoints.json /etc/alloy/endpoints.json + +CMD ["run", "--server.http.listen-addr=0.0.0.0:12345", "--stability.level=public-preview", "/etc/alloy/config.alloy"] diff --git a/dockerfiles/alloy/config.alloy b/dockerfiles/alloy/config.alloy new file mode 100644 index 0000000..4526d8f --- /dev/null +++ b/dockerfiles/alloy/config.alloy @@ -0,0 +1,87 @@ +// Load endpoint credentials and options +local.file "endpoints" { + filename = "/etc/alloy/endpoints.json" +} + +// Metrics scraping configuration +prometheus.scrape "infrastructure" { + targets = [ + {"__address__" = "prometheus:9090", group = "infrastructure", service = "prometheus"}, + {"__address__" = "tempo:3200", group = "infrastructure", service = "tempo"}, + {"__address__" = "loki:3100", group = "infrastructure", service = "loki"}, + {"__address__" = "grafana:3000", group = "infrastructure", service = "grafana"}, + ] + scrape_interval = "15s" + forward_to = [prometheus.remote_write.default.receiver] +} + +// OTLP Receiver for OpenTelemetry data +otelcol.receiver.otlp "default" { + grpc { } + http { } + + output { + metrics = [otelcol.exporter.prometheus.default.input] + logs = [otelcol.exporter.loki.default.input] + traces = [otelcol.exporter.otlp.tempo.input] + } +} + +// Memory Limiter Processor to manage memory +otelcol.processor.memory_limiter "default" { + check_interval = "1s" + limit = "1GiB" + output { + metrics = [otelcol.processor.batch.default.input] + logs = [otelcol.processor.batch.default.input] + traces = [otelcol.processor.batch.default.input] + } +} + +// Batch Processor for batching trace data +otelcol.processor.batch "default" { + output { + metrics = [otelcol.exporter.prometheus.default.input] + logs = [otelcol.exporter.loki.default.input] + traces = [otelcol.exporter.otlp.tempo.input] + } +} + +// Logging configuration +logging { + level = "info" + format = "logfmt" +} + +// Loki Exporter for logs +otelcol.exporter.loki "default" { + forward_to = [loki.write.default.receiver] +} + +// Write logs to the local Loki instance +loki.write "default" { + endpoint { + url = "http://loki:3100/loki/api/v1/push" + } +} + +// Tempo Exporter for trace data +otelcol.exporter.otlp "tempo" { + client { + endpoint = "http://tempo:4317" + tls { + insecure = true + } + } +} + +otelcol.exporter.prometheus "default" { + forward_to = [prometheus.remote_write.default.receiver] +} + +// Remote write configuration to Prometheus instance +prometheus.remote_write "default" { + endpoint { + url = "http://prometheus:9090/api/v1/write" + } +} diff --git a/dockerfiles/alloy/endpoints.json b/dockerfiles/alloy/endpoints.json new file mode 100644 index 0000000..99dcd3e --- /dev/null +++ b/dockerfiles/alloy/endpoints.json @@ -0,0 +1,24 @@ +{ + "metrics": { + "url": "http://prometheus:9009/api/v1/push", + "basicAuth": { + "username": "", + "password": "" + } + }, + "logs": { + "url": "http://loki:3100/loki/api/v1/push", + "basicAuth": { + "username": "", + "password": "" + } + }, + "traces": { + "url": "http://tempo:4317", + "basicAuthToken": "", + "tls": { + "insecure": true, + "insecureSkipVerify": true + } + } +} \ No newline at end of file diff --git a/dockerfiles/loki/Dockerfile b/dockerfiles/loki/Dockerfile new file mode 100644 index 0000000..335c090 --- /dev/null +++ b/dockerfiles/loki/Dockerfile @@ -0,0 +1,5 @@ +FROM grafana/loki:latest + +COPY loki.yaml /etc/loki/loki.yaml + +CMD ["--pattern-ingester.enabled=true", "-config.file=/etc/loki/loki.yaml"] diff --git a/dockerfiles/loki/loki.yaml b/dockerfiles/loki/loki.yaml new file mode 100644 index 0000000..856d6c6 --- /dev/null +++ b/dockerfiles/loki/loki.yaml @@ -0,0 +1,36 @@ +auth_enabled: false + +server: + http_listen_port: 3100 + +common: + path_prefix: /data/loki + replication_factor: 1 + ring: + kvstore: + store: inmemory + +ingester: + wal: + enabled: false + +schema_config: + configs: + - from: "2023-01-05" + index: + period: 24h + prefix: index_ + object_store: filesystem + schema: v13 + store: tsdb + +storage_config: + filesystem: + directory: /data/loki/chunks + tsdb_shipper: + active_index_directory: /data/loki/tsdb-index + cache_location: /data/loki/tsdb-cache + +limits_config: + reject_old_samples: true + reject_old_samples_max_age: 168h diff --git a/dockerfiles/prometheus/Dockerfile b/dockerfiles/prometheus/Dockerfile new file mode 100644 index 0000000..d4ae09c --- /dev/null +++ b/dockerfiles/prometheus/Dockerfile @@ -0,0 +1,5 @@ +FROM prom/prometheus:latest + +COPY prometheus.yaml /etc/prometheus/prometheus.yml + +CMD ["--config.file=/etc/prometheus/prometheus.yml", "--web.enable-remote-write-receiver"] diff --git a/dockerfiles/prometheus/prometheus.yaml b/dockerfiles/prometheus/prometheus.yaml new file mode 100644 index 0000000..c5b34cc --- /dev/null +++ b/dockerfiles/prometheus/prometheus.yaml @@ -0,0 +1,13 @@ +global: + scrape_interval: 15s + evaluation_interval: 15s + +scrape_configs: + - job_name: 'prometheus' + static_configs: + - targets: ['localhost:9090'] + + - job_name: 'backend' + metrics_path: '/metrics' + static_configs: + - targets: ['backend:5000'] diff --git a/dockerfiles/tempo/Dockerfile b/dockerfiles/tempo/Dockerfile new file mode 100644 index 0000000..13a911e --- /dev/null +++ b/dockerfiles/tempo/Dockerfile @@ -0,0 +1,5 @@ +FROM grafana/tempo:latest + +COPY tempo.yaml /etc/tempo.yaml + +CMD ["-config.file=/etc/tempo.yaml"] diff --git a/dockerfiles/tempo/tempo.yaml b/dockerfiles/tempo/tempo.yaml new file mode 100644 index 0000000..3bd52ca --- /dev/null +++ b/dockerfiles/tempo/tempo.yaml @@ -0,0 +1,94 @@ +# For more information on this configuration, see the complete reference guide at +# https://grafana.com/docs/tempo/latest/configuration/ + +# Enables result streaming from Tempo (to Grafana) via HTTP. +stream_over_http_enabled: true + +# Configure the server block. +server: + # Listen for all incoming requests on port 3200. + http_listen_port: 3200 + +# The distributor receives incoming trace span data for the system. +distributor: + receivers: # This configuration will listen on all ports and protocols that tempo is capable of. + jaeger: # The receivers all come from the OpenTelemetry collector. More configuration information can + protocols: # be found there: https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver + thrift_http: # + grpc: # For a production deployment you should only enable the receivers you need! + thrift_binary: # + thrift_compact: + otlp: + protocols: + http: + grpc: # This example repository only utilises the OTLP gRPC receiver on port 4317. + zipkin: # Receive trace data in any supported Zipkin format. + +# The ingester receives data from the distributor and processes it into indices and blocks. +ingester: + trace_idle_period: 10s # The length of time after a trace has not received spans to consider it complete and flush it. + max_block_bytes: 1_000_000 # Cut the head block when it hits this size or + max_block_duration: 5m # this much time passes + +# The compactor block configures the compactor responsible for compacting TSDB blocks. +compactor: + compaction: + compaction_window: 1h # Blocks in this time window will be compacted together. + max_block_bytes: 100_000_000 # Maximum size of a compacted block. + block_retention: 1h # How long to keep blocks. Default is 14 days, this demo system is short-lived. + compacted_block_retention: 10m # How long to keep compacted blocks stored elsewhere. + +# Configuration block to determine where to store TSDB blocks. +storage: + trace: + backend: local # Use the local filesystem for block storage. Not recommended for production systems. + block: + bloom_filter_false_positive: .05 # Bloom filter false positive rate. lower values create larger filters but fewer false positives. + # Write Ahead Log (WAL) configuration. + wal: + path: /tmp/tempo/wal # Directory to store the the WAL locally. + # Local configuration for filesystem storage. + local: + path: /tmp/tempo/blocks # Directory to store the TSDB blocks. + # Pool used for finding trace IDs. + pool: + max_workers: 100 # Worker pool determines the number of parallel requests to the object store backend. + queue_depth: 10000 # Maximum depth for the querier queue jobs. A job is required for each block searched. + +# Configures the metrics generator component of Tempo. +metrics_generator: + # Specifies which processors to use. + processor: + # Span metrics create metrics based on span type, duration, name and service. + span_metrics: + # Configure extra dimensions to add as metric labels. + dimensions: + - http.method + - http.target + - http.status_code + - service.version + # Service graph metrics create node and edge metrics for determinng service interactions. + service_graphs: + # Configure extra dimensions to add as metric labels. + dimensions: + - http.method + - http.target + - http.status_code + - service.version + # Configure the local blocks processor. + local_blocks: + # Ensure that metrics blocks are flushed to storage so TraceQL metrics queries against historical data. + flush_to_storage: true + # The registry configuration determines how to process metrics. + registry: + collection_interval: 5s + external_labels: + source: tempo + storage: + path: /tmp/tempo/generator/wal + traces_storage: + path: /tmp/tempo/generator/traces + +# Global override configuration. +overrides: + metrics_generator_processors: ['service-graphs', 'span-metrics','local-blocks'] # The types of metrics generation to enable for each tenant. \ No newline at end of file From 1791566764f9b0617d86eff2dadfbd225a4d619b Mon Sep 17 00:00:00 2001 From: SonOfLope Date: Fri, 1 Nov 2024 14:16:24 -0400 Subject: [PATCH 3/5] Issue #65: prometheus dynamic config --- dockerfiles/prometheus/Dockerfile | 6 ++++-- dockerfiles/prometheus/entrypoint.sh | 13 +++++++++++++ .../{prometheus.yaml => prometheus.yml.tmpl} | 5 +---- 3 files changed, 18 insertions(+), 6 deletions(-) create mode 100755 dockerfiles/prometheus/entrypoint.sh rename dockerfiles/prometheus/{prometheus.yaml => prometheus.yml.tmpl} (59%) diff --git a/dockerfiles/prometheus/Dockerfile b/dockerfiles/prometheus/Dockerfile index d4ae09c..9f52211 100644 --- a/dockerfiles/prometheus/Dockerfile +++ b/dockerfiles/prometheus/Dockerfile @@ -1,5 +1,7 @@ FROM prom/prometheus:latest +COPY prometheus.yml.tmpl /etc/prometheus/prometheus.yml.tmpl +COPY entrypoint.sh /entrypoint.sh -COPY prometheus.yaml /etc/prometheus/prometheus.yml +ENV ENABLE_BACKEND_METRICS=false -CMD ["--config.file=/etc/prometheus/prometheus.yml", "--web.enable-remote-write-receiver"] +ENTRYPOINT ["/entrypoint.sh"] diff --git a/dockerfiles/prometheus/entrypoint.sh b/dockerfiles/prometheus/entrypoint.sh new file mode 100755 index 0000000..85bebd5 --- /dev/null +++ b/dockerfiles/prometheus/entrypoint.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +if [ "$ENABLE_BACKEND_METRICS" = "true" ]; then + BACKEND_JOB="- job_name: 'backend'\n metrics_path: '/metrics'\n static_configs:\n - targets: ['backend:5000']" +else + BACKEND_JOB="" +fi + +# Replace placeholder in the template +sed "s|{{BACKEND_JOB}}|$BACKEND_JOB|" /etc/prometheus/prometheus.yml.tmpl > /etc/prometheus/prometheus.yml + +# Start Prometheus +exec /bin/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-remote-write-receiver diff --git a/dockerfiles/prometheus/prometheus.yaml b/dockerfiles/prometheus/prometheus.yml.tmpl similarity index 59% rename from dockerfiles/prometheus/prometheus.yaml rename to dockerfiles/prometheus/prometheus.yml.tmpl index c5b34cc..415b49f 100644 --- a/dockerfiles/prometheus/prometheus.yaml +++ b/dockerfiles/prometheus/prometheus.yml.tmpl @@ -7,7 +7,4 @@ scrape_configs: static_configs: - targets: ['localhost:9090'] - - job_name: 'backend' - metrics_path: '/metrics' - static_configs: - - targets: ['backend:5000'] + {{BACKEND_JOB}} From d7758f1a76dc4f85f2f1b2931c297f846795dd48 Mon Sep 17 00:00:00 2001 From: RussellJimmies Date: Thu, 14 Nov 2024 12:02:07 -0500 Subject: [PATCH 4/5] Added a Secret Scanning and Push Protection section --- github-repository-creation-guide.md | 29 +++++++++++++++++++-- {186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png | Bin 0 -> 16601 bytes {2E6531D8-47AA-4584-BA62-07F41E068DA3}.png | Bin 0 -> 10838 bytes {88B79545-E575-41D6-AAB5-EBD53195E25F}.png | Bin 0 -> 10699 bytes {EE4585DB-1219-43A3-BDF0-B8E6F0ADCEDB}.png | Bin 0 -> 16578 bytes 5 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 {186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png create mode 100644 {2E6531D8-47AA-4584-BA62-07F41E068DA3}.png create mode 100644 {88B79545-E575-41D6-AAB5-EBD53195E25F}.png create mode 100644 {EE4585DB-1219-43A3-BDF0-B8E6F0ADCEDB}.png diff --git a/github-repository-creation-guide.md b/github-repository-creation-guide.md index 4ada111..d326b2b 100644 --- a/github-repository-creation-guide.md +++ b/github-repository-creation-guide.md @@ -1,4 +1,4 @@ -# GitHub repository creation guide +# GitHub Repository Creation Guide When creating a GitHub repository you need to follow a few organizational standardization rules : @@ -11,6 +11,7 @@ standardization rules : - Add a description. - Create a LICENSE.md file. - Protect your branches. +- Enable secret scanning and push protection. ## How to Create a LICENSE.md File @@ -26,7 +27,7 @@ License](https://github.com/ai-cfia/devops/assets/9827730/f7d4576f-1a3e-4a95-98e 4. Click on "Review and submit" to create your file. -## Why you need to protect your branches +## Why You Need to Protect Your Branches Protecting branches in GitHub is essential for maintaining code integrity, ensuring a consistent commit history, and safeguarding against disruptive @@ -49,3 +50,27 @@ Tab](https://github.com/ai-cfia/devops/assets/9827730/5b5d85ef-5713-4c60-a519-66 number of required approvals. - ![Branch Protection Settings](https://github.com/ai-cfia/devops/assets/9827730/fe2a4a22-19af-4f3b-96e1-03095c26ddeb) + +## How to Enable Secret Scanning and Push Protection + +Enabling secret scanning and push protection in GitHub repositories helps +prevent sensitive information, such as API keys, passwords, and tokens, from +being inadvertently exposed in your codebase. Secret scanning detects exposed +secrets, while push protection actively blocks commits containing known secrets. +If a secret is leaked, repository administrators receive an alert. + +To enable these functionalities: + +1. From the main page of your repository, click **Settings**. ![Repository +Settings]({186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png) + +1. In the sidebar, scroll down to the **Security** section and click **Code + security**. + +1. Scroll down to the **Secret scanning** section and click **Enable**. ![Enable +Secret scanning]({88B79545-E575-41D6-AAB5-EBD53195E25F}.png) + +1. After enabling Secret scanning, the option to enable Push protection will +appear. Click **Enable**. ![Enable Push +protection]({EE4585DB-1219-43A3-BDF0-B8E6F0ADCEDB}.png) + diff --git a/{186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png b/{186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png new file mode 100644 index 0000000000000000000000000000000000000000..d3314619ff238d7a7d2e16a193cf7b511de65e01 GIT binary patch literal 16601 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 literal 0 HcmV?d00001 diff --git a/{2E6531D8-47AA-4584-BA62-07F41E068DA3}.png b/{2E6531D8-47AA-4584-BA62-07F41E068DA3}.png new file mode 100644 index 0000000000000000000000000000000000000000..b5440ef0326e9e3cdabb903cdd701b764490d080 GIT binary patch literal 10838 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 literal 0 HcmV?d00001 diff --git a/{88B79545-E575-41D6-AAB5-EBD53195E25F}.png b/{88B79545-E575-41D6-AAB5-EBD53195E25F}.png new file mode 100644 index 0000000000000000000000000000000000000000..1c93aa22bfa4dba108105ff19978c651afce895a GIT binary patch literal 10699 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 JR*D%f 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 tUrXk#?*Ayl`hP69|L Date: Thu, 14 Nov 2024 13:12:43 -0500 Subject: [PATCH 5/5] Moved screenshots to folder, fix markdown lint errors --- github-repository-creation-guide.md | 14 ++++++-------- .../{186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png | Bin .../{2E6531D8-47AA-4584-BA62-07F41E068DA3}.png | Bin .../{88B79545-E575-41D6-AAB5-EBD53195E25F}.png | Bin .../{EE4585DB-1219-43A3-BDF0-B8E6F0ADCEDB}.png | Bin 5 files changed, 6 insertions(+), 8 deletions(-) rename {186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png => images/{186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png (100%) rename {2E6531D8-47AA-4584-BA62-07F41E068DA3}.png => images/{2E6531D8-47AA-4584-BA62-07F41E068DA3}.png (100%) rename {88B79545-E575-41D6-AAB5-EBD53195E25F}.png => images/{88B79545-E575-41D6-AAB5-EBD53195E25F}.png (100%) rename {EE4585DB-1219-43A3-BDF0-B8E6F0ADCEDB}.png => images/{EE4585DB-1219-43A3-BDF0-B8E6F0ADCEDB}.png (100%) diff --git a/github-repository-creation-guide.md b/github-repository-creation-guide.md index d326b2b..bf11f56 100644 --- a/github-repository-creation-guide.md +++ b/github-repository-creation-guide.md @@ -57,20 +57,18 @@ Enabling secret scanning and push protection in GitHub repositories helps prevent sensitive information, such as API keys, passwords, and tokens, from being inadvertently exposed in your codebase. Secret scanning detects exposed secrets, while push protection actively blocks commits containing known secrets. -If a secret is leaked, repository administrators receive an alert. +If a secret is leaked, repository administrators receive an alert. -To enable these functionalities: +To enable these functionalities: 1. From the main page of your repository, click **Settings**. ![Repository -Settings]({186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png) +Settings](./images/{186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png) -1. In the sidebar, scroll down to the **Security** section and click **Code - security**. +1. In the sidebar, scroll down to the **Security** section and click **Code security**. 1. Scroll down to the **Secret scanning** section and click **Enable**. ![Enable -Secret scanning]({88B79545-E575-41D6-AAB5-EBD53195E25F}.png) +Secret scanning](./images/{88B79545-E575-41D6-AAB5-EBD53195E25F}.png) 1. After enabling Secret scanning, the option to enable Push protection will appear. Click **Enable**. ![Enable Push -protection]({EE4585DB-1219-43A3-BDF0-B8E6F0ADCEDB}.png) - +protection](./images/{EE4585DB-1219-43A3-BDF0-B8E6F0ADCEDB}.png) diff --git a/{186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png b/images/{186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png similarity index 100% rename from {186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png rename to images/{186D1DE0-B70F-4DAA-8267-D8029BB90F66}.png diff --git a/{2E6531D8-47AA-4584-BA62-07F41E068DA3}.png b/images/{2E6531D8-47AA-4584-BA62-07F41E068DA3}.png similarity index 100% rename from {2E6531D8-47AA-4584-BA62-07F41E068DA3}.png rename to images/{2E6531D8-47AA-4584-BA62-07F41E068DA3}.png diff --git a/{88B79545-E575-41D6-AAB5-EBD53195E25F}.png b/images/{88B79545-E575-41D6-AAB5-EBD53195E25F}.png similarity index 100% rename from {88B79545-E575-41D6-AAB5-EBD53195E25F}.png rename to images/{88B79545-E575-41D6-AAB5-EBD53195E25F}.png diff --git a/{EE4585DB-1219-43A3-BDF0-B8E6F0ADCEDB}.png b/images/{EE4585DB-1219-43A3-BDF0-B8E6F0ADCEDB}.png similarity index 100% rename from {EE4585DB-1219-43A3-BDF0-B8E6F0ADCEDB}.png rename to images/{EE4585DB-1219-43A3-BDF0-B8E6F0ADCEDB}.png