From 93b2c7986c11c31fc816d33fc133bf46d516bf6e Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Tue, 3 Sep 2024 09:20:38 +0200 Subject: [PATCH 1/2] [CI] Add test package creating local resources with Terraform (#2032) Added a new test package that uses Terraform to create local resources (files). Those files will be read by the Elastic Agent (as logs) via the volume mount used via SERVICE_LOGS_DIR environment variable. This test package includes Terraform resources and outputs as they were used in aws or aws_logs packages. --- .../_static/terraform_deployer.yml | 1 + .../ec2_metrics/_dev/deploy/tf/env.yml | 9 - .../ec2_metrics/_dev/deploy/tf/main.tf | 42 ---- .../ec2_metrics/_dev/deploy/tf/variables.tf | 22 -- .../_dev/test/system/test-default-config.yml | 13 - .../parallel/aws_logs/_dev/build/build.yml | 3 - .../aws_logs/_dev/build/docs/README.md | 28 --- test/packages/parallel/aws_logs/changelog.yml | 65 ----- .../generic/_dev/deploy/tf/env.yml | 9 - .../generic/_dev/deploy/tf/main.tf | 64 ----- .../generic/_dev/deploy/tf/variables.tf | 30 --- .../_dev/test/system/test-default-config.yml | 14 -- .../generic/agent/stream/aws-s3.yml.hbs | 113 --------- .../data_stream/generic/fields/agent.yml | 198 --------------- .../data_stream/generic/fields/ecs.yml | 10 - .../data_stream/generic/fields/fields.yml | 28 --- .../aws_logs/data_stream/generic/manifest.yml | 228 ------------------ .../data_stream/generic/sample_event.json | 21 -- .../packages/parallel/aws_logs/docs/README.md | 28 --- test/packages/parallel/aws_logs/img/icon.svg | 5 - test/packages/parallel/aws_logs/manifest.yml | 94 -------- .../parallel/terraform_local/LICENSE.txt | 93 +++++++ .../terraform_local/_dev/build/build.yml | 3 + .../parallel/terraform_local/changelog.yml | 6 + .../local/_dev/deploy/tf/files/example.log | 1 + .../data_stream/local/_dev/deploy/tf/main.tf | 5 + .../_dev/test/system/test-default-config.yml | 2 + .../local/agent/stream/stream.yml.hbs | 7 + .../elasticsearch/ingest_pipeline/default.yml | 14 ++ .../data_stream/local}/fields/base-fields.yml | 11 - .../data_stream/local/fields/ecs.yml | 8 + .../data_stream/local/fields/fields.yml | 11 + .../data_stream/local/manifest.yml | 17 ++ .../outputs/_dev/deploy/tf/files/example.log | 1 + .../outputs/_dev/deploy/tf/main.tf | 13 + .../_dev/test/system/test-default-config.yml | 5 + .../outputs/agent/stream/stream.yml.hbs | 7 + .../elasticsearch/ingest_pipeline/default.yml | 14 ++ .../outputs/fields/base-fields.yml | 12 + .../data_stream/outputs/fields/ecs.yml | 8 + .../data_stream/outputs/fields/fields.yml | 11 + .../data_stream/outputs/manifest.yml | 17 ++ .../parallel/terraform_local/docs/README.md | 84 +++++++ .../terraform_local/img/sample-logo.svg | 1 + .../terraform_local/img/sample-screenshot.png | Bin 0 -> 18849 bytes .../parallel/terraform_local/manifest.yml | 36 +++ 46 files changed, 377 insertions(+), 1035 deletions(-) delete mode 100644 test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/env.yml delete mode 100644 test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/main.tf delete mode 100644 test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/variables.tf delete mode 100644 test/packages/parallel/aws/data_stream/ec2_metrics/_dev/test/system/test-default-config.yml delete mode 100644 test/packages/parallel/aws_logs/_dev/build/build.yml delete mode 100644 test/packages/parallel/aws_logs/_dev/build/docs/README.md delete mode 100644 test/packages/parallel/aws_logs/changelog.yml delete mode 100644 test/packages/parallel/aws_logs/data_stream/generic/_dev/deploy/tf/env.yml delete mode 100644 test/packages/parallel/aws_logs/data_stream/generic/_dev/deploy/tf/main.tf delete mode 100644 test/packages/parallel/aws_logs/data_stream/generic/_dev/deploy/tf/variables.tf delete mode 100644 test/packages/parallel/aws_logs/data_stream/generic/_dev/test/system/test-default-config.yml delete mode 100644 test/packages/parallel/aws_logs/data_stream/generic/agent/stream/aws-s3.yml.hbs delete mode 100644 test/packages/parallel/aws_logs/data_stream/generic/fields/agent.yml delete mode 100644 test/packages/parallel/aws_logs/data_stream/generic/fields/ecs.yml delete mode 100644 test/packages/parallel/aws_logs/data_stream/generic/fields/fields.yml delete mode 100644 test/packages/parallel/aws_logs/data_stream/generic/manifest.yml delete mode 100644 test/packages/parallel/aws_logs/data_stream/generic/sample_event.json delete mode 100644 test/packages/parallel/aws_logs/docs/README.md delete mode 100644 test/packages/parallel/aws_logs/img/icon.svg delete mode 100644 test/packages/parallel/aws_logs/manifest.yml create mode 100644 test/packages/parallel/terraform_local/LICENSE.txt create mode 100644 test/packages/parallel/terraform_local/_dev/build/build.yml create mode 100644 test/packages/parallel/terraform_local/changelog.yml create mode 100644 test/packages/parallel/terraform_local/data_stream/local/_dev/deploy/tf/files/example.log create mode 100644 test/packages/parallel/terraform_local/data_stream/local/_dev/deploy/tf/main.tf create mode 100644 test/packages/parallel/terraform_local/data_stream/local/_dev/test/system/test-default-config.yml create mode 100644 test/packages/parallel/terraform_local/data_stream/local/agent/stream/stream.yml.hbs create mode 100644 test/packages/parallel/terraform_local/data_stream/local/elasticsearch/ingest_pipeline/default.yml rename test/packages/parallel/{aws_logs/data_stream/generic => terraform_local/data_stream/local}/fields/base-fields.yml (55%) create mode 100644 test/packages/parallel/terraform_local/data_stream/local/fields/ecs.yml create mode 100644 test/packages/parallel/terraform_local/data_stream/local/fields/fields.yml create mode 100644 test/packages/parallel/terraform_local/data_stream/local/manifest.yml create mode 100644 test/packages/parallel/terraform_local/data_stream/outputs/_dev/deploy/tf/files/example.log create mode 100644 test/packages/parallel/terraform_local/data_stream/outputs/_dev/deploy/tf/main.tf create mode 100644 test/packages/parallel/terraform_local/data_stream/outputs/_dev/test/system/test-default-config.yml create mode 100644 test/packages/parallel/terraform_local/data_stream/outputs/agent/stream/stream.yml.hbs create mode 100644 test/packages/parallel/terraform_local/data_stream/outputs/elasticsearch/ingest_pipeline/default.yml create mode 100644 test/packages/parallel/terraform_local/data_stream/outputs/fields/base-fields.yml create mode 100644 test/packages/parallel/terraform_local/data_stream/outputs/fields/ecs.yml create mode 100644 test/packages/parallel/terraform_local/data_stream/outputs/fields/fields.yml create mode 100644 test/packages/parallel/terraform_local/data_stream/outputs/manifest.yml create mode 100644 test/packages/parallel/terraform_local/docs/README.md create mode 100644 test/packages/parallel/terraform_local/img/sample-logo.svg create mode 100644 test/packages/parallel/terraform_local/img/sample-screenshot.png create mode 100644 test/packages/parallel/terraform_local/manifest.yml diff --git a/internal/servicedeployer/_static/terraform_deployer.yml b/internal/servicedeployer/_static/terraform_deployer.yml index 5e7173e32..f775bb93e 100644 --- a/internal/servicedeployer/_static/terraform_deployer.yml +++ b/internal/servicedeployer/_static/terraform_deployer.yml @@ -13,3 +13,4 @@ services: volumes: - ${TF_DIR}:/stage - ${TF_OUTPUT_DIR}:/output + - ${SERVICE_LOGS_DIR}:/tmp/service_logs/ diff --git a/test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/env.yml b/test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/env.yml deleted file mode 100644 index b795fcdeb..000000000 --- a/test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/env.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: '2.3' -services: - terraform: - environment: - - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - - AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN} - - AWS_PROFILE=${AWS_PROFILE} - - AWS_REGION=${AWS_REGION:-us-east-1} diff --git a/test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/main.tf b/test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/main.tf deleted file mode 100644 index fff56b462..000000000 --- a/test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/main.tf +++ /dev/null @@ -1,42 +0,0 @@ -variable "TEST_RUN_ID" { - default = "detached" -} - -provider "aws" { - default_tags { - tags = { - environment = var.ENVIRONMENT - repo = var.REPO - branch = var.BRANCH - build = var.BUILD_ID - created_date = var.CREATED_DATE - - division = "engineering" - org = "ingest" - team = "ecosystem" - project = "ci-testing" - } - } -} - -resource "aws_instance" "i" { - ami = data.aws_ami.latest-amzn.id - monitoring = true - instance_type = "t1.micro" - tags = { - Name = "elastic-package-test-${var.TEST_RUN_ID}" - } -} - -data "aws_ami" "latest-amzn" { - most_recent = true - owners = [ "amazon" ] # AWS - filter { - name = "name" - values = ["amzn2-ami-minimal-hvm-*-ebs"] - } -} - -output "instance_id" { - value = aws_instance.i.id -} \ No newline at end of file diff --git a/test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/variables.tf b/test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/variables.tf deleted file mode 100644 index 9d78b1b3c..000000000 --- a/test/packages/parallel/aws/data_stream/ec2_metrics/_dev/deploy/tf/variables.tf +++ /dev/null @@ -1,22 +0,0 @@ -variable "BRANCH" { - description = "Branch name or pull request for tagging purposes" - default = "unknown-branch" -} - -variable "BUILD_ID" { - description = "Build ID in the CI for tagging purposes" - default = "unknown-build" -} - -variable "CREATED_DATE" { - description = "Creation date in epoch time for tagging purposes" - default = "unknown-date" -} - -variable "ENVIRONMENT" { - default = "unknown-environment" -} - -variable "REPO" { - default = "unknown-repo-name" -} diff --git a/test/packages/parallel/aws/data_stream/ec2_metrics/_dev/test/system/test-default-config.yml b/test/packages/parallel/aws/data_stream/ec2_metrics/_dev/test/system/test-default-config.yml deleted file mode 100644 index edbd95621..000000000 --- a/test/packages/parallel/aws/data_stream/ec2_metrics/_dev/test/system/test-default-config.yml +++ /dev/null @@ -1,13 +0,0 @@ -wait_for_data_timeout: 20m # AWS CloudWatch may delay metrics delivery for more than 10 minutes. -vars: - access_key_id: '{{AWS_ACCESS_KEY_ID}}' - secret_access_key: '{{AWS_SECRET_ACCESS_KEY}}' - session_token: '{{AWS_SESSION_TOKEN}}' -data_stream: - vars: - period: 5m - latency: 10m - instance_id: '{{TF_OUTPUT_instance_id}}' - tags_filter: |- - - key: Name - value: "elastic-package-test-{{TEST_RUN_ID}}" diff --git a/test/packages/parallel/aws_logs/_dev/build/build.yml b/test/packages/parallel/aws_logs/_dev/build/build.yml deleted file mode 100644 index 47cbed9fe..000000000 --- a/test/packages/parallel/aws_logs/_dev/build/build.yml +++ /dev/null @@ -1,3 +0,0 @@ -dependencies: - ecs: - reference: git@v8.0.0 diff --git a/test/packages/parallel/aws_logs/_dev/build/docs/README.md b/test/packages/parallel/aws_logs/_dev/build/docs/README.md deleted file mode 100644 index 1b16353c9..000000000 --- a/test/packages/parallel/aws_logs/_dev/build/docs/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Custom AWS Log Integration - -The custom AWS input integration offers users two ways to collect logs from AWS: from an [S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html) (with or without SQS notification) and from [CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html). -Custom ingest pipelines may be added by adding the name to the pipeline configuration option, creating custom ingest pipelines can be done either through the API or the [Ingest Node Pipeline UI](/app/management/ingest/ingest_pipelines/). - -## Collecting logs from S3 bucket - -When collecting logs from S3 bucket is enabled, users can retrieve logs from S3 -objects that are pointed to by S3 notification events read from an SQS queue or -directly polling list of S3 objects in an S3 bucket. - -The use of SQS notification is preferred: polling list of S3 objects is -expensive in terms of performance and costs and should be preferably used only -when no SQS notification can be attached to the S3 buckets. This input -integration also supports S3 notification from SNS to SQS. - -SQS notification method is enabled setting `queue_url` configuration value. S3 -bucket list polling method is enabled setting `bucket_arn` configuration value -and `number_of_workers` value. Both `queue_url` and `bucket_arn` cannot be set -at the same time and at least one of the two value must be set. - -## Collecting logs from CloudWatch - -When collecting logs from CloudWatch is enabled, users can retrieve logs from -all log streams in a specific log group. `filterLogEvents` AWS API is used to -list log events from the specified log group. Amazon CloudWatch Logs can be used -to store log files from Amazon Elastic Compute Cloud(EC2), AWS CloudTrail, -Route53, and other sources. diff --git a/test/packages/parallel/aws_logs/changelog.yml b/test/packages/parallel/aws_logs/changelog.yml deleted file mode 100644 index c1469c65b..000000000 --- a/test/packages/parallel/aws_logs/changelog.yml +++ /dev/null @@ -1,65 +0,0 @@ -- version: "999.999.999" - changes: - - description: Change test public IPs to the supported subset - type: bugfix - link: https://github.com/elastic/integrations/pull/2327 -- version: "0.4.0" - changes: - - description: Add multiline support for using s3 input - type: enhancement - link: https://github.com/elastic/integrations/pull/6081 -- version: "0.3.3" - changes: - - description: Added categories and/or subcategories. - type: enhancement - link: https://github.com/elastic/integrations/pull/5123 -- version: "0.3.2" - changes: - - description: Add required field number of workers to support non aws buckets, and add default value. - type: enhancement - link: https://github.com/elastic/integrations/pull/4917 -- version: "0.3.1" - changes: - - description: Add latency config parameter for aws-cloudwatch input - type: bugfix - link: https://github.com/elastic/integrations/pull/4859 -- version: "0.3.0" - changes: - - description: Expose Default Region setting to UI - type: enhancement - link: https://github.com/elastic/integrations/pull/4158 -- version: "0.2.5" - changes: - - description: Set default endpoint to empty string - type: bugfix - link: https://github.com/elastic/integrations/pull/4103 -- version: "0.2.4" - changes: - - description: Fix proxy URL documentation rendering. - type: bugfix - link: https://github.com/elastic/integrations/pull/3881 -- version: "0.2.3" - changes: - - description: Fix misspelling of Log Stream Prefix variable in manifest for aws-cloudwatch input - type: bugfix - link: https://github.com/elastic/integrations/pull/3610 -- version: "0.2.2" - changes: - - description: update readme file - type: bugfix - link: https://github.com/elastic/integrations/pull/2819 -- version: "0.2.1" - changes: - - description: Add kibana version constraint - type: bugfix - link: https://github.com/elastic/integrations/pull/2819 -- version: "0.2.0" - changes: - - description: Move s3 input and cloudwatch input into the same generic data stream - type: enhancement - link: https://github.com/elastic/integrations/pull/2710 -- version: "0.1.0" - changes: - - description: initial release - type: enhancement # can be one of: enhancement, bugfix, breaking-change - link: https://github.com/elastic/integrations/pull/2353 diff --git a/test/packages/parallel/aws_logs/data_stream/generic/_dev/deploy/tf/env.yml b/test/packages/parallel/aws_logs/data_stream/generic/_dev/deploy/tf/env.yml deleted file mode 100644 index b795fcdeb..000000000 --- a/test/packages/parallel/aws_logs/data_stream/generic/_dev/deploy/tf/env.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: '2.3' -services: - terraform: - environment: - - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - - AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN} - - AWS_PROFILE=${AWS_PROFILE} - - AWS_REGION=${AWS_REGION:-us-east-1} diff --git a/test/packages/parallel/aws_logs/data_stream/generic/_dev/deploy/tf/main.tf b/test/packages/parallel/aws_logs/data_stream/generic/_dev/deploy/tf/main.tf deleted file mode 100644 index f7d5618cd..000000000 --- a/test/packages/parallel/aws_logs/data_stream/generic/_dev/deploy/tf/main.tf +++ /dev/null @@ -1,64 +0,0 @@ -variable "TEST_RUN_ID" { - default = "detached" -} - -provider "aws" { - default_tags { - tags = { - environment = var.ENVIRONMENT - repo = var.REPO - branch = var.BRANCH - build = var.BUILD_ID - created_date = var.CREATED_DATE - } - } -} - -resource "aws_s3_bucket" "bucket" { - bucket = "elastic-package-aws-logs-bucket-${var.TEST_RUN_ID}" -} - -resource "aws_sqs_queue" "queue" { - name = "elastic-package-aws-logs-queue-${var.TEST_RUN_ID}" - policy = < - If the host is a container. - - - name: os.build - type: keyword - example: "18D109" - description: > - OS build information. - - - name: os.codename - type: keyword - example: "stretch" - description: > - OS codename, if any. - diff --git a/test/packages/parallel/aws_logs/data_stream/generic/fields/ecs.yml b/test/packages/parallel/aws_logs/data_stream/generic/fields/ecs.yml deleted file mode 100644 index d1c52ea0e..000000000 --- a/test/packages/parallel/aws_logs/data_stream/generic/fields/ecs.yml +++ /dev/null @@ -1,10 +0,0 @@ -- external: ecs - name: ecs.version -- external: ecs - name: log.level -- external: ecs - name: message -- name: event.original - external: ecs -- name: tags - external: ecs diff --git a/test/packages/parallel/aws_logs/data_stream/generic/fields/fields.yml b/test/packages/parallel/aws_logs/data_stream/generic/fields/fields.yml deleted file mode 100644 index c43e4dcc5..000000000 --- a/test/packages/parallel/aws_logs/data_stream/generic/fields/fields.yml +++ /dev/null @@ -1,28 +0,0 @@ -- name: aws.cloudwatch - type: group - fields: - - name: message - type: text - description: | - CloudWatch log message. -- name: aws.s3 - type: group - fields: - - name: bucket - type: group - fields: - - name: name - type: keyword - description: Name of the S3 bucket that this log retrieved from. - - name: arn - type: keyword - description: ARN of the S3 bucket that this log retrieved from. - - name: object.key - type: keyword - description: Name of the S3 object that this log retrieved from. -- name: log.file.path - type: keyword - description: Path to the log file. -- name: log.offset - type: long - description: Log offset diff --git a/test/packages/parallel/aws_logs/data_stream/generic/manifest.yml b/test/packages/parallel/aws_logs/data_stream/generic/manifest.yml deleted file mode 100644 index 7710d3c50..000000000 --- a/test/packages/parallel/aws_logs/data_stream/generic/manifest.yml +++ /dev/null @@ -1,228 +0,0 @@ -title: Custom logs from AWS -type: logs -streams: - - input: aws-s3 - enabled: false - template_path: aws-s3.yml.hbs - title: AWS logs from S3 - description: Collect logs using aws-s3 input with or without SQS notification - vars: - - name: api_timeout - type: text - title: API Timeout - multi: false - required: false - show_user: false - description: The maximum duration of AWS API can take. The maximum is half of the visibility timeout value. - - name: bucket_arn - type: text - title: Bucket ARN - multi: false - required: false - show_user: true - description: ARN of the AWS S3 bucket that will be polled for list operation. (Required when `queue_url` and `non_aws_bucket_name` are not set). - - name: number_of_workers - type: integer - title: Number of Workers - multi: false - required: false - default: 1 - show_user: true - description: Number of workers that will process the S3 objects listed. (Required when `bucket_arn` is set). - - name: bucket_list_interval - type: text - title: Bucket List Interval - multi: false - required: false - show_user: false - default: 120s - description: Time interval for polling listing of the S3 bucket. - - name: bucket_list_prefix - type: text - title: Bucket List Prefix - multi: false - required: false - show_user: false - description: Prefix to apply for the list request to the S3 bucket. - - name: buffer_size - type: text - title: Buffer Size - multi: false - required: false - show_user: false - description: The size in bytes of the buffer that each harvester uses when fetching a file. This only applies to non-JSON logs. - - name: content_type - type: text - title: Content Type - multi: false - required: false - show_user: false - description: > - A standard MIME type describing the format of the object data. This can be set to override the MIME type that was given to the object when it was uploaded. For example application/json. - - - name: encoding - type: text - title: Encoding - multi: false - required: false - show_user: false - description: The file encoding to use for reading data that contains international characters. This only applies to non-JSON logs. - - name: expand_event_list_from_field - type: text - title: Expand Event List from Field - multi: false - required: false - show_user: false - description: > - If the fileset using this input expects to receive multiple messages bundled under a specific field then the config option expand_event_list_from_field value can be assigned the name of the field. This setting will be able to split the messages under the group value into separate events. For example, CloudTrail logs are in JSON format and events are found under the JSON object "Records". - - - name: file_selectors - type: yaml - title: File Selectors - multi: true - required: false - show_user: false - description: > - If the SQS queue will have events that correspond to files that this integration shouldn’t process file_selectors can be used to limit the files that are downloaded. This is a list of selectors which are made up of regex and expand_event_list_from_field options. The regex should match the S3 object key in the SQS message, and the optional expand_event_list_from_field is the same as the global setting. If file_selectors is given, then any global expand_event_list_from_field value is ignored in favor of the ones specified in the file_selectors. Regex syntax is the same as the Go language. Files that don’t match one of the regexes won’t be processed. content_type, parsers, include_s3_metadata,max_bytes, buffer_size, and encoding may also be set for each file selector. - - - name: fips_enabled - type: bool - title: Enable S3 FIPS - default: false - multi: false - required: false - show_user: false - description: Enabling this option changes the service name from `s3` to `s3-fips` for connecting to the correct service endpoint. - - name: include_s3_metadata - type: text - title: Include S3 Metadata - multi: true - required: false - show_user: false - description: > - This input can include S3 object metadata in the generated events for use in follow-on processing. You must specify the list of keys to include. By default none are included. If the key exists in the S3 response then it will be included in the event as aws.s3.metadata. where the key name as been normalized to all lowercase. - - - name: max_bytes - type: text - title: Max Bytes - default: 10MiB - multi: false - required: false - show_user: false - description: The maximum number of bytes that a single log message can have. All bytes after max_bytes are discarded and not sent. This setting is especially useful for multiline log messages, which can get large. This only applies to non-JSON logs. - - name: max_number_of_messages - type: integer - title: Maximum Concurrent SQS Messages - description: The maximum number of SQS messages that can be inflight at any time. - default: 5 - required: false - show_user: false - - name: parsers - type: yaml - title: Parsers - description: | - This option expects a list of parsers that the payload has to go through. For more information see [Parsers](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-aws-s3.html#input-aws-s3-parsers) - required: false - show_user: true - multi: false - default: | - #- multiline: - # pattern: "^ - Enabling this option sets the bucket name as a path in the API call instead of a subdomain. When enabled https://.s3...com becomes https://s3...com/. This is only supported with 3rd party S3 providers. AWS does not support path style. - - - name: provider - type: text - title: Provider Name - multi: false - required: false - show_user: false - description: Name of the 3rd party S3 bucket provider like backblaze or GCP. - - name: queue_url - type: text - title: Queue URL - multi: false - required: false - show_user: true - description: URL of the AWS SQS queue that messages will be received from. - - name: sqs.max_receive_count - type: integer - title: SQS Message Maximum Receive Count - multi: false - required: false - show_user: false - default: 5 - description: The maximum number of times a SQS message should be received (retried) before deleting it. This feature prevents poison-pill messages (messages that can be received but can’t be processed) from consuming resources. - - name: sqs.wait_time - type: text - title: SQS Maximum Wait Time - multi: false - required: false - show_user: false - default: 20s - description: > - The maximum duration that an SQS `ReceiveMessage` call should wait for a message to arrive in the queue before returning. The maximum value is `20s`. - - - name: visibility_timeout - type: text - title: Visibility Timeout - multi: false - required: false - show_user: false - description: The duration that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request. The maximum is 12 hours. - - name: tags - type: text - title: Tags - multi: true - required: true - show_user: true - default: - - forwarded - - name: processors - type: yaml - title: Processors - multi: false - required: false - show_user: false - description: > - Processors are used to reduce the number of fields in the exported event or to enhance the event with metadata. This executes in the agent before the logs are parsed. See [Processors](https://www.elastic.co/guide/en/beats/filebeat/current/filtering-and-enhancing-data.html) for details. - - - name: preserve_original_event - required: true - show_user: true - title: Preserve original event - description: Preserves a raw copy of the original event, added to the field `event.original` - type: bool - multi: false - default: false - - name: data_stream.dataset - type: text - required: true - default: aws_logs.generic - show_user: true - title: Dataset name - description: > - Set the name for your dataset. Changing the dataset will send the data to a different index. You can't use `-` in the name of a dataset and only valid characters for [Elasticsearch index names](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html). - - - name: pipeline - type: text - title: Ingest Pipeline - description: | - The Ingest Node pipeline ID to be used by the integration. - required: false - show_user: true diff --git a/test/packages/parallel/aws_logs/data_stream/generic/sample_event.json b/test/packages/parallel/aws_logs/data_stream/generic/sample_event.json deleted file mode 100644 index e07cb4fe6..000000000 --- a/test/packages/parallel/aws_logs/data_stream/generic/sample_event.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "@timestamp": "2020-02-20T07:02:37.000Z", - "data_stream": { - "namespace": "default", - "type": "logs", - "dataset": "aws_logs.generic" - }, - "ecs": { - "version": "8.0.0" - }, - "event": { - "ingested": "2021-07-19T21:47:04.696803300Z", - "original": "2020-02-20T07:02:37.000Z Feb 20 07:02:37 ip-172-31-81-156 ec2net: [get_meta] Trying to get http://169.254.169.254/latest/meta-data/network/interfaces/macs/12:e2:a9:95:8b:97/local-ipv4s", - "kind": "event", - "dataset": "aws_logs.generic" - }, - "message": "ip-172-31-81-156 ec2net: [get_meta] Trying to get http://169.254.169.254/latest/meta-data/network/interfaces/macs/12:e2:a9:95:8b:97/local-ipv4s", - "tags": [ - "preserve_original_event" - ] -} \ No newline at end of file diff --git a/test/packages/parallel/aws_logs/docs/README.md b/test/packages/parallel/aws_logs/docs/README.md deleted file mode 100644 index 1b16353c9..000000000 --- a/test/packages/parallel/aws_logs/docs/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Custom AWS Log Integration - -The custom AWS input integration offers users two ways to collect logs from AWS: from an [S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html) (with or without SQS notification) and from [CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html). -Custom ingest pipelines may be added by adding the name to the pipeline configuration option, creating custom ingest pipelines can be done either through the API or the [Ingest Node Pipeline UI](/app/management/ingest/ingest_pipelines/). - -## Collecting logs from S3 bucket - -When collecting logs from S3 bucket is enabled, users can retrieve logs from S3 -objects that are pointed to by S3 notification events read from an SQS queue or -directly polling list of S3 objects in an S3 bucket. - -The use of SQS notification is preferred: polling list of S3 objects is -expensive in terms of performance and costs and should be preferably used only -when no SQS notification can be attached to the S3 buckets. This input -integration also supports S3 notification from SNS to SQS. - -SQS notification method is enabled setting `queue_url` configuration value. S3 -bucket list polling method is enabled setting `bucket_arn` configuration value -and `number_of_workers` value. Both `queue_url` and `bucket_arn` cannot be set -at the same time and at least one of the two value must be set. - -## Collecting logs from CloudWatch - -When collecting logs from CloudWatch is enabled, users can retrieve logs from -all log streams in a specific log group. `filterLogEvents` AWS API is used to -list log events from the specified log group. Amazon CloudWatch Logs can be used -to store log files from Amazon Elastic Compute Cloud(EC2), AWS CloudTrail, -Route53, and other sources. diff --git a/test/packages/parallel/aws_logs/img/icon.svg b/test/packages/parallel/aws_logs/img/icon.svg deleted file mode 100644 index e60377c8b..000000000 --- a/test/packages/parallel/aws_logs/img/icon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/test/packages/parallel/aws_logs/manifest.yml b/test/packages/parallel/aws_logs/manifest.yml deleted file mode 100644 index fe7e906ab..000000000 --- a/test/packages/parallel/aws_logs/manifest.yml +++ /dev/null @@ -1,94 +0,0 @@ -format_version: 1.0.0 -name: aws_logs -title: Custom AWS Logs -description: Collect raw logs from AWS S3 or CloudWatch with Elastic Agent. -type: integration -# version is set to something very large to so this test package can -# be installed in the package registry regardless of the version of -# the actual apache package in the registry at any given time. -version: 999.999.999 -release: beta -license: basic -categories: - - observability - - custom - - aws -conditions: - kibana.version: ^8.0.0 -policy_templates: - - name: aws_logs - title: Custom AWS Logs - description: Collect raw logs from AWS S3 or CloudWatch with Elastic Agent. - inputs: - - type: aws-s3 - title: Collect Logs from S3 Bucket - description: Collect raw logs from S3 bucket with Elastic Agent. - - type: aws-cloudwatch - title: Collect Logs from CloudWatch - description: Collect raw logs from CloudWatch with Elastic Agent. -icons: - - src: "/img/icon.svg" - type: "image/svg+xml" -vars: - - name: shared_credential_file - type: text - title: Shared Credential File - multi: false - required: false - show_user: false - description: Directory of the shared credentials file - - name: credential_profile_name - type: text - title: Credential Profile Name - multi: false - required: false - show_user: false - - name: access_key_id - type: text - title: Access Key ID - multi: false - required: false - show_user: true - - name: secret_access_key - type: text - title: Secret Access Key - multi: false - required: false - show_user: true - - name: session_token - type: text - title: Session Token - multi: false - required: false - show_user: true - - name: role_arn - type: text - title: Role ARN - multi: false - required: false - show_user: false - - name: endpoint - type: text - title: Endpoint - multi: false - required: false - show_user: false - default: "" - description: URL of the entry point for an AWS web service - - name: default_region - type: text - title: Default AWS Region - multi: false - required: false - show_user: false - default: "" - description: Default region to use prior to connecting to region specific services/endpoints if no AWS region is set from environment variable, credentials or instance profile. If none of the above are set and no default region is set as well, `us-east-1` is used. A region, either from environment variable, credentials or instance profile or from this default region setting, needs to be set when using regions in non-regular AWS environments such as AWS China or US Government Isolated. - - name: proxy_url - type: text - title: Proxy URL - multi: false - required: false - show_user: false - description: URL to proxy connections in the form of http\[s\]://:@: -owner: - github: elastic/obs-cloud-monitoring diff --git a/test/packages/parallel/terraform_local/LICENSE.txt b/test/packages/parallel/terraform_local/LICENSE.txt new file mode 100644 index 000000000..809108b85 --- /dev/null +++ b/test/packages/parallel/terraform_local/LICENSE.txt @@ -0,0 +1,93 @@ +Elastic License 2.0 + +URL: https://www.elastic.co/licensing/elastic-license + +## Acceptance + +By using the software, you agree to all of the terms and conditions below. + +## Copyright License + +The licensor grants you a non-exclusive, royalty-free, worldwide, +non-sublicensable, non-transferable license to use, copy, distribute, make +available, and prepare derivative works of the software, in each case subject to +the limitations and conditions below. + +## Limitations + +You may not provide the software to third parties as a hosted or managed +service, where the service provides users with access to any substantial set of +the features or functionality of the software. + +You may not move, change, disable, or circumvent the license key functionality +in the software, and you may not remove or obscure any functionality in the +software that is protected by the license key. + +You may not alter, remove, or obscure any licensing, copyright, or other notices +of the licensor in the software. Any use of the licensor’s trademarks is subject +to applicable law. + +## Patents + +The licensor grants you a license, under any patent claims the licensor can +license, or becomes able to license, to make, have made, use, sell, offer for +sale, import and have imported the software, in each case subject to the +limitations and conditions in this license. This license does not cover any +patent claims that you cause to be infringed by modifications or additions to +the software. If you or your company make any written claim that the software +infringes or contributes to infringement of any patent, your patent license for +the software granted under these terms ends immediately. If your company makes +such a claim, your patent license ends immediately for work on behalf of your +company. + +## Notices + +You must ensure that anyone who gets a copy of any part of the software from you +also gets a copy of these terms. + +If you modify the software, you must include in any modified copies of the +software prominent notices stating that you have modified the software. + +## No Other Rights + +These terms do not imply any licenses other than those expressly granted in +these terms. + +## Termination + +If you use the software in violation of these terms, such use is not licensed, +and your licenses will automatically terminate. If the licensor provides you +with a notice of your violation, and you cease all violation of this license no +later than 30 days after you receive that notice, your licenses will be +reinstated retroactively. However, if you violate these terms after such +reinstatement, any additional violation of these terms will cause your licenses +to terminate automatically and permanently. + +## No Liability + +*As far as the law allows, the software comes as is, without any warranty or +condition, and the licensor will not be liable to you for any damages arising +out of these terms or the use or nature of the software, under any kind of +legal claim.* + +## Definitions + +The **licensor** is the entity offering these terms, and the **software** is the +software the licensor makes available under these terms, including any portion +of it. + +**you** refers to the individual or entity agreeing to these terms. + +**your company** is any legal entity, sole proprietorship, or other kind of +organization that you work for, plus all organizations that have control over, +are under the control of, or are under common control with that +organization. **control** means ownership of substantially all the assets of an +entity, or the power to direct its management and policies by vote, contract, or +otherwise. Control can be direct or indirect. + +**your licenses** are all the licenses granted to you for the software under +these terms. + +**use** means anything you do with the software requiring one of your licenses. + +**trademark** means trademarks, service marks, and similar rights. diff --git a/test/packages/parallel/terraform_local/_dev/build/build.yml b/test/packages/parallel/terraform_local/_dev/build/build.yml new file mode 100644 index 000000000..e2b012548 --- /dev/null +++ b/test/packages/parallel/terraform_local/_dev/build/build.yml @@ -0,0 +1,3 @@ +dependencies: + ecs: + reference: git@v8.11.0 diff --git a/test/packages/parallel/terraform_local/changelog.yml b/test/packages/parallel/terraform_local/changelog.yml new file mode 100644 index 000000000..bb0320a52 --- /dev/null +++ b/test/packages/parallel/terraform_local/changelog.yml @@ -0,0 +1,6 @@ +# newer versions go on top +- version: "0.0.1" + changes: + - description: Initial draft of the package + type: enhancement + link: https://github.com/elastic/integrations/pull/1 # FIXME Replace with the real PR link diff --git a/test/packages/parallel/terraform_local/data_stream/local/_dev/deploy/tf/files/example.log b/test/packages/parallel/terraform_local/data_stream/local/_dev/deploy/tf/files/example.log new file mode 100644 index 000000000..8701353d8 --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/local/_dev/deploy/tf/files/example.log @@ -0,0 +1 @@ +{ "contents": "Message from file", "file": "logs.json"} diff --git a/test/packages/parallel/terraform_local/data_stream/local/_dev/deploy/tf/main.tf b/test/packages/parallel/terraform_local/data_stream/local/_dev/deploy/tf/main.tf new file mode 100644 index 000000000..00ded29f8 --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/local/_dev/deploy/tf/main.tf @@ -0,0 +1,5 @@ +resource "local_file" "log" { + source = "./files/example.log" + filename = "/tmp/service_logs/file.log" + file_permission = "0777" +} diff --git a/test/packages/parallel/terraform_local/data_stream/local/_dev/test/system/test-default-config.yml b/test/packages/parallel/terraform_local/data_stream/local/_dev/test/system/test-default-config.yml new file mode 100644 index 000000000..b10b64f08 --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/local/_dev/test/system/test-default-config.yml @@ -0,0 +1,2 @@ +wait_for_data_timeout: 1m +vars: ~ diff --git a/test/packages/parallel/terraform_local/data_stream/local/agent/stream/stream.yml.hbs b/test/packages/parallel/terraform_local/data_stream/local/agent/stream/stream.yml.hbs new file mode 100644 index 000000000..5845510de --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/local/agent/stream/stream.yml.hbs @@ -0,0 +1,7 @@ +paths: +{{#each paths as |path i|}} + - {{path}} +{{/each}} +exclude_files: [".gz$"] +processors: + - add_locale: ~ diff --git a/test/packages/parallel/terraform_local/data_stream/local/elasticsearch/ingest_pipeline/default.yml b/test/packages/parallel/terraform_local/data_stream/local/elasticsearch/ingest_pipeline/default.yml new file mode 100644 index 000000000..cb3aea9e9 --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/local/elasticsearch/ingest_pipeline/default.yml @@ -0,0 +1,14 @@ +--- +description: Pipeline for processing sample logs +processors: +- json: + field: message + target_field: target +- set: + field: error.message + value: not present target + if: ctx?.target == null +on_failure: +- set: + field: error.message + value: '{{ _ingest.on_failure_message }}' diff --git a/test/packages/parallel/aws_logs/data_stream/generic/fields/base-fields.yml b/test/packages/parallel/terraform_local/data_stream/local/fields/base-fields.yml similarity index 55% rename from test/packages/parallel/aws_logs/data_stream/generic/fields/base-fields.yml rename to test/packages/parallel/terraform_local/data_stream/local/fields/base-fields.yml index c124b0964..7c798f453 100644 --- a/test/packages/parallel/aws_logs/data_stream/generic/fields/base-fields.yml +++ b/test/packages/parallel/terraform_local/data_stream/local/fields/base-fields.yml @@ -10,14 +10,3 @@ - name: '@timestamp' type: date description: Event timestamp. -- name: event.module - type: constant_keyword - description: Event module - value: aws -- name: event.dataset - type: constant_keyword - description: Event dataset - value: aws_logs.generic -- name: input.type - type: keyword - description: Type of Filebeat input. diff --git a/test/packages/parallel/terraform_local/data_stream/local/fields/ecs.yml b/test/packages/parallel/terraform_local/data_stream/local/fields/ecs.yml new file mode 100644 index 000000000..2d92bac2b --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/local/fields/ecs.yml @@ -0,0 +1,8 @@ +- external: ecs + name: ecs.version +- external: ecs + name: log.file.path +- external: ecs + name: error.message +- external: ecs + name: message diff --git a/test/packages/parallel/terraform_local/data_stream/local/fields/fields.yml b/test/packages/parallel/terraform_local/data_stream/local/fields/fields.yml new file mode 100644 index 000000000..d665a691a --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/local/fields/fields.yml @@ -0,0 +1,11 @@ +- name: input.type + type: keyword +- name: log.offset + type: long +- name: target + type: group + fields: + - name: contents + type: text + - name: file + type: keyword diff --git a/test/packages/parallel/terraform_local/data_stream/local/manifest.yml b/test/packages/parallel/terraform_local/data_stream/local/manifest.yml new file mode 100644 index 000000000..bd5af5c94 --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/local/manifest.yml @@ -0,0 +1,17 @@ +title: "Local" +type: logs +streams: + - input: logfile + title: Sample logs + description: Collect sample logs + vars: + - name: paths + type: text + title: Paths + multi: true + default: + - /tmp/service_logs/*.log +elasticsearch: + index_template: + mappings: + subobjects: false diff --git a/test/packages/parallel/terraform_local/data_stream/outputs/_dev/deploy/tf/files/example.log b/test/packages/parallel/terraform_local/data_stream/outputs/_dev/deploy/tf/files/example.log new file mode 100644 index 000000000..8701353d8 --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/outputs/_dev/deploy/tf/files/example.log @@ -0,0 +1 @@ +{ "contents": "Message from file", "file": "logs.json"} diff --git a/test/packages/parallel/terraform_local/data_stream/outputs/_dev/deploy/tf/main.tf b/test/packages/parallel/terraform_local/data_stream/outputs/_dev/deploy/tf/main.tf new file mode 100644 index 000000000..7ace607aa --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/outputs/_dev/deploy/tf/main.tf @@ -0,0 +1,13 @@ +variable "TEST_RUN_ID" { + default = "detached" +} + +resource "local_file" "log" { + source = "./files/example.log" + filename = "/tmp/service_logs/${var.TEST_RUN_ID}.log" + file_permission = "0777" +} + +output "filename" { + value = local_file.log.filename +} diff --git a/test/packages/parallel/terraform_local/data_stream/outputs/_dev/test/system/test-default-config.yml b/test/packages/parallel/terraform_local/data_stream/outputs/_dev/test/system/test-default-config.yml new file mode 100644 index 000000000..e2fd5b513 --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/outputs/_dev/test/system/test-default-config.yml @@ -0,0 +1,5 @@ +wait_for_data_timeout: 1m +data_stream: + vars: + paths: + - '{{TF_OUTPUT_filename}}' diff --git a/test/packages/parallel/terraform_local/data_stream/outputs/agent/stream/stream.yml.hbs b/test/packages/parallel/terraform_local/data_stream/outputs/agent/stream/stream.yml.hbs new file mode 100644 index 000000000..5845510de --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/outputs/agent/stream/stream.yml.hbs @@ -0,0 +1,7 @@ +paths: +{{#each paths as |path i|}} + - {{path}} +{{/each}} +exclude_files: [".gz$"] +processors: + - add_locale: ~ diff --git a/test/packages/parallel/terraform_local/data_stream/outputs/elasticsearch/ingest_pipeline/default.yml b/test/packages/parallel/terraform_local/data_stream/outputs/elasticsearch/ingest_pipeline/default.yml new file mode 100644 index 000000000..cb3aea9e9 --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/outputs/elasticsearch/ingest_pipeline/default.yml @@ -0,0 +1,14 @@ +--- +description: Pipeline for processing sample logs +processors: +- json: + field: message + target_field: target +- set: + field: error.message + value: not present target + if: ctx?.target == null +on_failure: +- set: + field: error.message + value: '{{ _ingest.on_failure_message }}' diff --git a/test/packages/parallel/terraform_local/data_stream/outputs/fields/base-fields.yml b/test/packages/parallel/terraform_local/data_stream/outputs/fields/base-fields.yml new file mode 100644 index 000000000..7c798f453 --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/outputs/fields/base-fields.yml @@ -0,0 +1,12 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. diff --git a/test/packages/parallel/terraform_local/data_stream/outputs/fields/ecs.yml b/test/packages/parallel/terraform_local/data_stream/outputs/fields/ecs.yml new file mode 100644 index 000000000..2d92bac2b --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/outputs/fields/ecs.yml @@ -0,0 +1,8 @@ +- external: ecs + name: ecs.version +- external: ecs + name: log.file.path +- external: ecs + name: error.message +- external: ecs + name: message diff --git a/test/packages/parallel/terraform_local/data_stream/outputs/fields/fields.yml b/test/packages/parallel/terraform_local/data_stream/outputs/fields/fields.yml new file mode 100644 index 000000000..d665a691a --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/outputs/fields/fields.yml @@ -0,0 +1,11 @@ +- name: input.type + type: keyword +- name: log.offset + type: long +- name: target + type: group + fields: + - name: contents + type: text + - name: file + type: keyword diff --git a/test/packages/parallel/terraform_local/data_stream/outputs/manifest.yml b/test/packages/parallel/terraform_local/data_stream/outputs/manifest.yml new file mode 100644 index 000000000..dc8d182d1 --- /dev/null +++ b/test/packages/parallel/terraform_local/data_stream/outputs/manifest.yml @@ -0,0 +1,17 @@ +title: "Outputs" +type: logs +streams: + - input: logfile + title: Sample logs + description: Collect sample logs + vars: + - name: paths + type: text + title: Paths + multi: true + default: + - /other_path/*.log +elasticsearch: + index_template: + mappings: + subobjects: false diff --git a/test/packages/parallel/terraform_local/docs/README.md b/test/packages/parallel/terraform_local/docs/README.md new file mode 100644 index 000000000..28ff999ea --- /dev/null +++ b/test/packages/parallel/terraform_local/docs/README.md @@ -0,0 +1,84 @@ + + + +# Terraform Local + + + +## Data streams + + + + + + + + + + + +## Requirements + +You need Elasticsearch for storing and searching your data and Kibana for visualizing and managing it. +You can use our hosted Elasticsearch Service on Elastic Cloud, which is recommended, or self-manage the Elastic Stack on your own hardware. + + + +## Setup + + + +For step-by-step instructions on how to set up an integration, see the +[Getting started](https://www.elastic.co/guide/en/welcome-to-elastic/current/getting-started-observability.html) guide. + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/packages/parallel/terraform_local/img/sample-logo.svg b/test/packages/parallel/terraform_local/img/sample-logo.svg new file mode 100644 index 000000000..6268dd88f --- /dev/null +++ b/test/packages/parallel/terraform_local/img/sample-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/packages/parallel/terraform_local/img/sample-screenshot.png b/test/packages/parallel/terraform_local/img/sample-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..d7a56a3ecc078c38636698cefba33f86291dd178 GIT binary patch literal 18849 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

}qal5$moSACwfNXLXG5|3R0AtBcN` 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 literal 0 HcmV?d00001 diff --git a/test/packages/parallel/terraform_local/manifest.yml b/test/packages/parallel/terraform_local/manifest.yml new file mode 100644 index 000000000..4a5aa7ed7 --- /dev/null +++ b/test/packages/parallel/terraform_local/manifest.yml @@ -0,0 +1,36 @@ +format_version: 3.2.1 +name: terraform_local +title: "Terraform Local" +version: 0.0.1 +source: + license: "Elastic-2.0" +description: "Package to test creating local resources using terraform" +type: integration +categories: + - custom +conditions: + kibana: + version: "^8.14.3" + elastic: + subscription: "basic" +screenshots: + - src: /img/sample-screenshot.png + title: Sample screenshot + size: 600x600 + type: image/png +icons: + - src: /img/sample-logo.svg + title: Sample logo + size: 32x32 + type: image/svg+xml +policy_templates: + - name: sample + title: Sample logs + description: Collect sample logs + inputs: + - type: logfile + title: Collect sample logs from instances + description: Collecting sample logs +owner: + github: elastic/integrations + type: elastic From e2697087225a8faac3abb6137474f9104e48fc66 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 09:21:14 +0200 Subject: [PATCH 2/2] chore: [updatecli] Update latest snapshot to 8.16.0-a3caaa65 (#2071) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2d74b317d..00eba52ad 100644 --- a/Makefile +++ b/Makefile @@ -73,7 +73,7 @@ test-stack-command-86: ./scripts/test-stack-command.sh 8.6.2 test-stack-command-8x: - ./scripts/test-stack-command.sh 8.16.0-77b64b1f-SNAPSHOT + ./scripts/test-stack-command.sh 8.16.0-a3caaa65-SNAPSHOT test-stack-command-with-apm-server: APM_SERVER_ENABLED=true ./scripts/test-stack-command.sh