---
icon: octicons/package-24
---

Module YAML config files define the options which pipeline [modules](https://doc.log10x.com/engine/module/) and
[units](https://doc.log10x.com/engine/pipeline/#units) can receive at run time via input command line arguments and config files.

To load a module file at run time see [YAML config](https://doc.log10x.com/config/yaml/#activation).

## :material-menu: Attributes

Each module file defines the following attributes:

### :material-menu-right-outline:**`name`**

Provides a logical name for this module (e.g., 'datadogLogsInput').

Input, output and extractor configurations can reference this value using their respective [foreach](https://doc.log10x.com/run/input/stream/#inputforeach) values
to create a matching configuration object for each instance of this module (only applies if [allowMultiple](#allowmultiple) is true). 

### :material-menu-right-outline:**`title`**

Provides a concise human-readable title for this module (e.g., 'Datadog Logs Input').

### :material-menu-right-outline:**`description`**

Provides a short form description of this module.

### :material-menu-right-outline:**`configFolder`**

Specifies a folder containing default config files for the [options](#options) defined by this module.

### :material-menu-right-outline:**`allowMultiple`**

Specifies whether multiple instances of this module can be defined via command line arguments and configuration files.

For example, [input](https://doc.log10x.com/run/input/#modules) and [output](https://doc.log10x.com/run/output/#output-modules) modules support multiple instances 
(e.g., read events from different ElasticSearch instances and publish summaries to different Prometheus endpoints).

### :material-menu-right-outline:**`doc`**

Provides long-form documentation for this module. This value supports markdown elements.

### :material-menu-right-outline:**`options`**

Specifies an array of options which define the configuration values this module can receive at run time via
[CLI](https://doc.log10x.com/config/cli/) argument, [.yaml](https://doc.log10x.com/config/yaml/) files and [JSON](https://doc.log10x.com/config/json/) requests.

Each option contains the following attributes:

| Attribute | Description                                                                     | Required | Possible value                       |
|-----------|---------------------------------------------------------------------------------|----------|--------------------------------------|
| names     | List of logical names by which this option can be specified                     | ✔️        |                                      |
| type      | Data type of values defined by this option                                      | ✔️        | [number,boolean, string, list, file] |
| required  | Specifies whether a value must be explicitly set for this options               | ✔️        | True/False                           |
| category  | Category name for this option to divide module options into logical sub-groups  |          |                                      |
| defValue  | Default value this option will have if not required and not specified by user   |          |                                      |
| doc       | Markdown content documenting use of this option                                 |          |                                      |

## :material-wrench-cog-outline: Configuration

The example module below is derived from the [ElasticSearch input](https://doc.log10x.com/run/input/analyzer/elasticsearch) module.

To configure instances of an Elastic input at run time, specify its options via CLI arguments, configuration files or JSON.

For an example configuration see [elastic/config.yaml](https://doc.log10x.com/run/input/analyzer/elasticsearch/#config-files).

``` yaml
module:

# 'name' provides a logical name for this module .

# Input/output/extractor configurations can reference this value using their 'foreach' members
# to create a matching object for each instance of this option group (only applies to option groups with 'allowMultiple' true). 

name: elasticInput 

# 'title' provides a concise human-readable description of this module
title: ElasticSearch input

# 'description' provides a short form description of this module
description: read events from an ElasticSearch hosted/on-premises cluster

# 'configFolder' specifies a folder containing default config files for the settings defined by this module
configFolder: run/config/input/analyzer/elastic

# 'allowMultiple' is enabled for this module. Pipeline command line arguments and configuration files
#  can specify multiple groupings of the options defined below.
allowMultiple: true

# 'doc' specifies a long-form description of this module's. This value supports markdown elements.
doc: |
  Configures an [ElasticSearch](https://www.elastic.co/elasticsearch) input to read events...

# 'options' specifies a list of option specifications that define the values of this module
#  can receive at run time via command line arguments, YAML or JSON.
options:

  # 'names' specifies the different names by which to identify each option 
  #  via command line arguments or a YAML/JSON field. This array value allows
  #  for defining long-form names (e.g., 'elasticSearchHost') which are suitable
  #  for JSON/YAML fields, and short-form/acronym (e.g., 'eh') suitable for use within a shell. context.
  - names:
      elasticSearchHost
      eh
  
  # 'description' provides a summary of this option. 
  #  This value will appear as part of the 10x Engine's -help printout. 
  description: elastic host address
  
  # 'type' defines the type of values this option can accept. 
  #  Supported values: number, string, boolean, list
  type: string
  
  # 'required' defines whether the value of this option must be set when 
  #  specifying an instance of this module using command line arguments or YAML/JSON.
  required: false
  
  # 'defValue' documents the default value for this option if 'required' is false
  defValue: 127.0.0.1

  # 'category' specifies an optional label for this option within the context of this module (e.g., 'authentication') for grouping options according to logical categories.
  category: authentication
  
  # 'doc' provides a long-form description of this module's purpose and examples.
  #  This value supports markdown elements.
  doc: |
    set the elastic host address to connect to. Examples: ...
  
  ...  
```
