Documentation

Nomirun Host Configuration

Nomirun Host Configuration is a simple way to configure the Nomirun Host. It is supported from the version of Nomirun Host 1.5.0 and above.

Prior to version 1.5.0, Nomirun Host configuration looked like this (clusters.yaml):

clusters:
- name: SolarInverters
  hosts:
  - name: SolarInverters
    hostPath: \hosts\SolarInverters
    hostFramework: net10.0
    hostPlatform: win-x64
    hostVersion: latest
    hostPorts:
      httpPort: 5310
      httpsPort: 5311
      grpcPort: 5312
      grpcsPort: 5313
      metricsHttpPort: 5314
      metricsHttpsPort: 5315
    modules:
    - name: SolarInverters
      version:

After version 1.5.0, Nomirun Host configuration looks like this (clusters.yaml):

clusters:
- name: SolarInverters
  hosts:
  - name: SolarInverters
    hostPath: \hosts\SolarInverters
    hostFramework: net10.0
    hostPlatform: win-x64
    hostVersion: latest
    hostPorts:
      httpPort: 5310
      httpsPort: 5311
      grpcPort: 5312
      grpcsPort: 5313
      metricsHttpPort: 5314
      metricsHttpsPort: 5315
    modules:
    - name: SolarInverters
      version: 
    extensions:
    - name: Nomirun.Host.OpenTelemetry
      version: 1.0.0
      hash: D3D7CF2B592A4C233E27CAB56A5C77D065567DF2DDB9C95B7E2B66835CEAF928A2638B5E777DB7CBEFA3109CDB623381D1DF829BE8A04187F2CC7CC15B851B13
    configuration:
      caching:
        enabled: true
        type: Memory
        redisConnectionString: 
      metrics:
        enabled: true
        username: user
        password: pass
      swagger:
        enabled: true
        username: user
        password: pass
      otel:
        hostUrl: http://otel-collector.localhost:4317
        protocol: 
        headers: 
      serilog:
        using:
        - Serilog.Sinks.Console
        minimumLevel:
          default: Debug
          override:
            microsoft: Debug
            interceptorsHelper: Debug
      rateLimiting:
        enabled: true
        policies:
        - endpoint: Global
          limit: 250
          periodInSeconds: 5

You can see two new sections were added:

  • extensions
  • configuration

The extensions section is used to add additional Nomirun Host extensions to the Nomirun Host. Check the guide here.

The configuration section is used to configure the Nomirun Host. You can modify the values, and those will be used by the Nomirun Host.

The values in clusters.yaml are used by Nomirun CLI to generate different configuration formats, from JSON, Kubernetes secrets, docker .env files, etc.

For example:

  • you can modify the Redis connection string to use a distributed cache.
  • you can change Serilog logging configuration.
  • you can change the OpenTelemetry configuration.
  • you can change the rate limiting policies.
  • you can change the Swagger username and password configuration.
  • you can change the metrics endpoint username and password configuration.

After version 1.16.0, you can also configure Azure KeyVault and Azure App Configuration Nomirun Host extensions. Additionally hostAddress was added.

Nomirun Host configuration looks like this (clusters.yaml):

clusters:
- name: SolarInverters
  hosts:
  - name: SolarInverters
    hostAddress: localhost
    hostPath: \hosts\SolarInverters
    hostFramework: net10.0
    hostPlatform: win-x64
    hostVersion: latest
    hostPorts:
      httpPort: 5310
      httpsPort: 5311
      grpcPort: 5312
      grpcsPort: 5313
      metricsHttpPort: 5314
      metricsHttpsPort: 5315
    modules:
    - name: SolarInverters
      version: 
    extensions:
    - name: Nomirun.Host.OpenTelemetry
      version: 1.0.0
      hash: D3D7CF2B592A4C233E27CAB56A5C77D065567DF2DDB9C95B7E2B66835CEAF928A2638B5E777DB7CBEFA3109CDB623381D1DF829BE8A04187F2CC7CC15B851B13
    configuration:
      caching:
        enabled: true
        type: Memory
        redisConnectionString: 
      metrics:
        enabled: true
        username: user
        password: pass
      swagger:
        enabled: true
        username: user
        password: pass
      otel:
        hostUrl: http://otel-collector.localhost:4317
        protocol: 
        headers: 
      serilog:
        using:
        - Serilog.Sinks.Console
        minimumLevel:
          default: Debug
          override:
            microsoft: Debug
            interceptorsHelper: Debug
      rateLimiting:
        enabled: true
        policies:
        - endpoint: Global
          limit: 250
          periodInSeconds: 5
      configurationStores:
        azureKeyVault:
          name:
          managedIdentityId:
        azureAppConfig:
          name:
          managedIdentityId:
          label:

To all previous Clusters in your clusters.yaml, under the configuration: section you need to add:

      configurationStores:
        azureKeyVault:
          name:
          managedIdentityId:
        azureAppConfig:
          name:
          managedIdentityId:
          label: