Resources
The following resources are used by this module:
- 
azurerm_federated_identity_credential.loki (resource) 
- 
azurerm_role_assignment.storage_contributor (resource) 
- 
azurerm_user_assigned_identity.loki (resource) 
- 
null_resource.dependencies (resource) 
- 
azurerm_resource_group.node_resource_group (data source) 
- 
azurerm_storage_container.container (data source) 
Required Inputs
The following input variables are required:
logs_storage
Description: Azure Blob Storage configuration for logs persistence.
Type:
object({
    container                        = string
    storage_account                  = string
    managed_identity_node_rg_name    = optional(string, null)
    managed_identity_oidc_issuer_url = optional(string, null)
    storage_account_key              = optional(string, null)
  })Optional Inputs
The following input variables are optional (have default values):
argocd_project
Description: Name of the Argo CD AppProject where the Application should be created. If not set, the Application will be created in a new AppProject only for this Application.
Type: string
Default: null
argocd_labels
Description: Labels to attach to the Argo CD Application resource.
Type: map(string)
Default: {}
destination_cluster
Description: Destination cluster where the application should be deployed.
Type: string
Default: "in-cluster"
target_revision
Description: Override of target revision of the application chart.
Type: string
Default: "v8.0.0"
helm_values
Description: Helm chart value overrides. They should be passed as a list of HCL structures.
Type: any
Default: []
app_autosync
Description: Automated sync options for the Argo CD Application resource.
Type:
object({
    allow_empty = optional(bool)
    prune       = optional(bool)
    self_heal   = optional(bool)
  })Default:
{
  "allow_empty": false,
  "prune": true,
  "self_heal": true
}dependency_ids
Description: IDs of the other modules on which this module depends on.
Type: map(string)
Default: {}
resources
Description: Resource limits and requests for Loki’s components. Follow the style on official documentation to understand the format of the values.
| These are not production values. You should always adjust them to your needs. | 
Type:
object({
    ingester = optional(object({
      requests = optional(object({
        cpu    = optional(string, "100m")
        memory = optional(string, "256Mi")
      }), {})
      limits = optional(object({
        cpu    = optional(string)
        memory = optional(string, "512Mi")
      }), {})
    }), {})
    distributor = optional(object({
      requests = optional(object({
        cpu    = optional(string, "100m")
        memory = optional(string, "256Mi")
      }), {})
      limits = optional(object({
        cpu    = optional(string)
        memory = optional(string, "512Mi")
      }), {})
    }), {})
    querier = optional(object({
      requests = optional(object({
        cpu    = optional(string, "100m")
        memory = optional(string, "256Mi")
      }), {})
      limits = optional(object({
        cpu    = optional(string)
        memory = optional(string, "512Mi")
      }), {})
    }), {})
    query_frontend = optional(object({
      requests = optional(object({
        cpu    = optional(string, "100m")
        memory = optional(string, "256Mi")
      }), {})
      limits = optional(object({
        cpu    = optional(string)
        memory = optional(string, "512Mi")
      }), {})
    }), {})
    query_scheduler = optional(object({
      requests = optional(object({
        cpu    = optional(string, "100m")
        memory = optional(string, "256Mi")
      }), {})
      limits = optional(object({
        cpu    = optional(string)
        memory = optional(string, "512Mi")
      }), {})
    }), {})
    compactor = optional(object({
      requests = optional(object({
        cpu    = optional(string, "100m")
        memory = optional(string, "512Mi")
      }), {})
      limits = optional(object({
        cpu    = optional(string)
        memory = optional(string, "1Gi")
      }), {})
    }), {})
    index_gateway = optional(object({
      requests = optional(object({
        cpu    = optional(string, "100m")
        memory = optional(string, "256Mi")
      }), {})
      limits = optional(object({
        cpu    = optional(string)
        memory = optional(string, "1Gi")
      }), {})
    }), {})
    memcached_chunks = optional(object({
      requests = optional(object({
        cpu    = optional(string, "100m")
        memory = optional(string, "256Mi")
      }), {})
      limits = optional(object({
        cpu    = optional(string)
        memory = optional(string, "512Mi")
      }), {})
    }), {})
    memcached_frontend = optional(object({
      requests = optional(object({
        cpu    = optional(string, "100m")
        memory = optional(string, "256Mi")
      }), {})
      limits = optional(object({
        cpu    = optional(string)
        memory = optional(string, "512Mi")
      }), {})
    }), {})
    memcached_index_queries = optional(object({
      requests = optional(object({
        cpu    = optional(string, "100m")
        memory = optional(string, "256Mi")
      }), {})
      limits = optional(object({
        cpu    = optional(string)
        memory = optional(string, "512Mi")
      }), {})
    }), {})
    memcached_index_writes = optional(object({
      requests = optional(object({
        cpu    = optional(string, "100m")
        memory = optional(string, "256Mi")
      }), {})
      limits = optional(object({
        cpu    = optional(string)
        memory = optional(string, "512Mi")
      }), {})
    }), {})
    promtail = optional(object({
      requests = optional(object({
        cpu    = optional(string, "100m")
        memory = optional(string, "256Mi")
      }), {})
      limits = optional(object({
        cpu    = optional(string)
        memory = optional(string, "512Mi")
      }), {})
    }), {})
    grafana_eventhandler = optional(object({
      requests = optional(object({
        cpu    = optional(string, "100m")
        memory = optional(string, "128Mi")
      }), {})
      limits = optional(object({
        cpu    = optional(string)
        memory = optional(string, "256Mi")
      }), {})
    }), {})
  })Default: {}
ingress
Description: Loki frontend ingress configuration.
Type:
object({
    hosts          = list(string)
    cluster_issuer = string
    allowed_ips    = optional(list(string), [])
  })Default: null
retention
Description: Logs retention period. To deactivate retention, pass 0s.
Type: string
Default: "30d"
Outputs
The following outputs are exported:
id
Description: ID to pass other modules in order to refer to this module as a dependency.
Providers
| Name | Version | 
|---|---|
| >= 3 | |
| n/a | 
Modules
| Name | Source | Version | 
|---|---|---|
Resources
| Name | Type | 
|---|---|
| resource | |
| resource | |
| resource | |
| resource | |
| data source | |
| data source | 
Inputs
| Name | Description | Type | Default | Required | ||
|---|---|---|---|---|---|---|
| Azure Blob Storage configuration for logs persistence. |  | n/a | yes | |||
| Name of the Argo CD AppProject where the Application should be created. If not set, the Application will be created in a new AppProject only for this Application. | 
 | 
 | no | |||
| Labels to attach to the Argo CD Application resource. | 
 | 
 | no | |||
| Destination cluster where the application should be deployed. | 
 | 
 | no | |||
| Override of target revision of the application chart. | 
 | 
 | no | |||
| Helm chart value overrides. They should be passed as a list of HCL structures. | 
 | 
 | no | |||
| Automated sync options for the Argo CD Application resource. |  |  | no | |||
| IDs of the other modules on which this module depends on. | 
 | 
 | no | |||
| Resource limits and requests for Loki’s components. Follow the style on official documentation to understand the format of the values. 
 |  | 
 | no | |||
| Loki frontend ingress configuration. |  | 
 | no | |||
| Logs retention period. To deactivate retention, pass 0s. | 
 | 
 | no | 
Outputs
| Name | Description | 
|---|---|
| ID to pass other modules in order to refer to this module as a dependency. | |
| Credentials to access the Loki ingress, if activated. |