Using Configuration Variables Templates with Microservices Runtime

About Configuration Variables Templates

Microservices Runtime provides the ability to create a Docker image from an installed and configured instance of Microservices Runtime. The Docker image contains the Microservices Runtime application including packages and Microservices Runtime assets such as ports, JMS connection aliases, keystores, and JDBC pools. Because you can execute multiple Docker containers from a single Docker image, a Docker image for a Microservices Runtime instance might be used across development, testing, and production environments. While the microservices and accompanying artifacts are the same across the running containers and stages, configuration information might be different. For example, user name and password combinations, proxy server host and port, remote server host and port, and global variable values might be different across different instances of running Docker containers. While a Microservices Runtime stores configuration information inside its file system and therefore inside any Docker image created from the Microservices Runtime, some configuration information can be externalized and passed to the Microservices Runtime at startup. With Microservices Runtime you can accomplish this through use of a configuration variables template and environment variables.

A configuration variables template contains configuration properties that map to properties on the Microservices Runtime. The property values can be set externally in the template and then passed to a Microservices Runtime when it starts up. As part of the startup process, Microservices Runtime loads the information from the configuration variables template and replaces the configuration information stored in the file system.

By externalizing configuration information, a single Docker image created for a Microservices Runtime can be used across multiple environments, including different stages of the production cycle. For example, you might use different templates for specific environments such as testing versus production. Or you might use the same template for all environments but use environment variables to vary the configuration in each environment.

While the primary purpose of configuration variables is to extend the usefulness of single Microservices Runtime image by making it possible to reuse a single Docker image across multiple stages in the production cycle, you can also use configuration variables templates in situations where other deployment options are too heavyweight.

Note: The configuration variables feature is available by default for Microservices Runtime. To use the configuration variables feature with Integration Server, your Integration Server must have additional licensing.

What Does a Configuration Variables Template Look Like?

A configuration variables template is a properties file that contains configuration data as a series of key-value pairs where the key name reflects the asset and particular asset property for which you can supply a value. For example, jndi.DEFAULT_IS_JNDI_PROVIDER.providerURL=nsp://myHost:9000 indicates that the JNDI provider alias named DEFAULT_IS_JNDI_PROVIDER has a URL of nsp://myHost:9000.

When a configuration variables template is generated from an existing Microservices Runtime, the template is populated with configuration data from the Microservices Runtime instance. The template content reflects the Microservices Runtime configuration at the time Microservices Runtime generated the template. For example, the configuration variables template lists a key-value pair for each defined global variable.

The generated configuration variables template does not contain key-value pairs for all of configuration information for Microservices Runtime.

Below is an excerpt of a configuration variables template:

#Sample Generated Template 
#Wed Jun 20 17:13:40 EDT 2018 
email.WmRoot.myEmailPort.host=exchange 
email.WmRoot.myEmailPort.password={AES}VphDydln9QyvLIGf+FASxw\=\= 
email.WmRoot.myEmailPort.server_port=7891 
email.WmRoot.myEmailPort.user=user123ispasswordexpirationsettings. 
jms.DEFAULT_IS_JMS_CONNECTION.clientID=DEFAULT_IS_JMS_CLIENT 
jndi.DEFAULT_IS_JNDI_PROVIDER.providerURL=nsp\://localhost\:9000 
settings.watt.server.compile=C\:\\IS_10-3\\June6\\jvm\\jvm\\bin\\javac - 
classpath {0} -d {1} {2} 
settings.watt.ssh.jsch.ciphers=aes256-ctr,aes192- 
ctr,arcfour,arcfour128,arcfour256,aes128-ctr,aes128-cbc,3des-ctr,3des- 
cbc,blowfish-cbc,aes192-cbc,aes256-cbc

Only specific values can be supplied via the template for an asset. For example, for a JMS connection alias a configuration variables template lists a key-value pair for the clientID, user, and password properties. The template omits key-value pairs for all other properties.

In the template, each property name follows this pattern: assetType.assetName.propertyName=value where assetType is the type of administrative asset, assetName is the name given to the asset such as an alias name, and propertyName is the asset property for which you can set a value.

For example, following are key-value pairs for a global variable named serverhost, a global variable named serverport, the DEFAULT_IS_JMS_CONNECTION connection alias, and the JDBC pool alias named webMPool:

globalvariable.serverhost.value=server123.example.com 
globalvariable.serverport.value=5555 
jms.DEFAULT_IS_JMS_CONNECTION.clientID=DEFAULT_IS_JMS_CLIENT 
jms.DEFAULT_IS_JMS_CONNECTION.password=encryptedValue 
jms.DEFAULT_IS_JMS_CONNECTION.user= userA 
jdbc.webMPool.dbURL=jdbc:wm:oracle://testserver:1521;serviceName=webm 
jdbc.webMPool.password={AES}CszC/Yl1w1XqEK0B17RFucP0kgMHNt823RUU6ad39tw\= 
jdbc.webMPool.userid=jdbcuserTest

To change the assigned values in a configuration variables template, use a text editor to open the template and make changes. Any value you specify for a property must adhere to the requirements for that property. For example, the global variable value cannot exceed 255 characters. For passwords or other types of values that should be encrypted, Microservices Runtime Administrator provides a utility to encrypt a value. Microservices Runtime Administrator uses password handles and the Password-Based Encryption technology installed with Microservices Runtime for encryption.

You can also add an asset by editing the configuration variables template. Not all assets for which you can edit configuration in a configuration variables template can be created via a template.

Note: The ability to add an asset via the configuration variables template is provided in PIE-65555, which is available in IS_10.5_Core_Fix7 and later.

As an alternative to “hard coding” a value for a property in a template, you can specify an environment variable (ENV variable) as the value of a property in the configuration variables template. The following line specifies that the JDBC pool URL for the alias webMPool should be set to the value of the environment variable named JDBC_URL: jdbc.webMPool.dbURL=$env{JDBC_URL}

If you opt to use an ENV variable as a value for configuration variables, make sure that you specify the values for ENV variables defined in the configuration variables template. Refer to the Docker documentation or the documentation for your container orchestration tool for more information about how to specify the ENV variables for Docker containers.

When Is the Template Applied?

Microservices Runtime applies a configuration variables template at startup. When Microservices Runtime starts, either in a Docker container or on-premises, Microservices Runtime looks for a configuration variables template in the following locations in the specified order.

  1. The location identified by the SAG_IS_CONFIG_PROPERTIES environment variable.
  2. Integration Server_directory /instances/instanceName/application.properties
  3. Integration Server_directory /application.properties

Once Microservices Runtime locates a template, Microservices Runtime does not look for a template in any remaining locations.

Note: If Microservices Runtime does not find a configuration variables template at any of the above locations, Microservices Runtime proceeds with start up and does not apply a template.

Microservices Runtime processes the template, updating the configuration information in Microservices Runtime with the information in the template. While processing the template, Microservices Runtime writes log messages to the logs/configurationvariables.log to reflect the progress of the variable substitution. When updating is complete, Microservices Runtime proceeds with startup.

How the Configuration Is Updated when IS_10.5_Core_Fix7 Is Applied

When updating the configuration, if Microservices Runtime encounters an asset that does not exist and IS_10.5_Core_Fix7 or higher is applied, one of the following happens:

  • If the asset is one of the types that can be created through a configuration variables template, Microservices Runtime creates it using the supplied key-value pairs. Only a subset of all the properties for an asset can be set in a configuration variables template. Microservices Runtime uses default values for all other asset properties. For a list of assets that can be created via application of a configuration variables templates, see Creating New Assets with the Configurations Variable Template.
  • If an asset type cannot be created through a configuration variables template, Microservices Runtime ignores properties and values that do not correspond to existing assets on the Microservices Runtime.

During substitution or asset creation, Microservices Runtime sets values for properties that are specified in the template but not set on the Microservices Runtime. For example, suppose the configuration variables template file specifies the following for a JMS connection alias named myAlias:

jms.myAlias.clientID=abc 
jms.myAlias.password=encryptedValue 
jms.myAlias.user= userA

If the Microservices Runtime contains a JMS connection alias named “myAlias” and that alias specifies a Connection Client ID value of “xyz”, at startup, Microservices Runtime substitutes “abc” for “xyz”. If the myAlias connection alias does not specify values for Username or Password, Microservices Runtime substitutes the values set in jms.myAlias.password and jms.myAlias.user in the application properties template for the JMS connection alias Username and Password fields.

Note: The ability to add an asset via the configuration variables template is provided in PIE-65555, which is available in IS_10.5_Core_Fix7 and later.

How the Configuration Is Updated When IS_10.5_Core_Fix7 Is Not Applied

While substituting variable values and IS_10.5_Core_Fix7 or higher is not applied, Microservices Runtime ignores properties and values that do not correspond to existing assets on the Microservices Runtime. A configuration variables template can be used to change the configuration information only for assets that already exist on Microservices Runtime. That is, you cannot add assets to a Microservices Runtime by adding key-value pairs to a template

During substitution, Microservices Runtime ignores any values for properties that are not set on the Microservices Runtime. For example, suppose the configuration variables template file specifies the following for a JMS connection alias named myAlias:

jms.myAlias.clientID=abc 
jms.myAlias.password=encryptedValue 
jms.myAlias.user= userA

If the Microservices Runtime contains a JMS connection alias named “myAlias” and that alias specifies a Connection Client ID value of “xyz”, at startup, Microservices Runtime substitutes “abc” for “xyz”. If the myAlias connection alias does not specify values for Username or Password, Microservices Runtime does not substitute the values set in jms.myAlias.password or jms.myAlias.user.

Approaches for Using a Configuration Variables Template with Microservices Runtime

Because a configuration variables template can be used with a Microservices Runtime running in a Docker container or an on-premises Microservices Runtime, there are multiple approaches to using the template. The approach you select determines the template file name, the template file location, whether the template file is part of a Docker image, and how to start the Microservices Runtime so that Microservices Runtime applies the template.

To help determine which approach to use, decide the following:

  • Will the Microservices Runtime with which you want to use the template run in a Docker container or on-premises (outside of a Docker contaier)?
  • If Microservices Runtime runs in a Docker container, do you want to include the template as part of the Docker image or external to the image?
  • Do you want to hard code values for variables in the template or use environment (ENV) variables to specify some or all values?

The answers to the above questions help determine which approach to use, which in turn, determines the files that you need to create, where you place the configuration variables template, the name of the file, and how to start the Microservices Runtime so that Microservices Runtime applies the template values.

The following table describes the possible approaches for using a configuration variables template with Microservices Runtime

Approach Description and requirements
Docker image does not include template which does not use ENV variables Microservices Runtime runs in a Docker container, the template is not included in the Docker image, and configuration variables values are hard coded in the template only. The template does not use ENV variables.

Template file name: application.properties or a user-defined name

Template location: A location that is accessible to the Docker container.

Start up: The docker run command includes the SAG_IS_CONFIG_PROPERTIES environment variable which specifies the name and location of the configuration variables template.

Docker image does not include template and template uses ENV variables Microservices Runtime runs in a Docker container, the template is not included in the Docker image, and configuration variable values are hard coded in the template and/or the template uses environment variables.

Template file name: application.properties or a user-defined name

Template location: A location that is accessible to the Docker container.

If you are using ENV variables for some or all of the variable values, refer to the Docker documentation or the documentation for your container orchestration tool for more information about how to specify the ENV variables for Docker containers.

Start up: The docker run command includes the SAG_IS_CONFIG_PROPERTIES environment variable which specifies the name and location of the configuration variables template. If using the docker run command, the command must also include options --env, -e or --env-file options for setting the ENV variables in the container.

Docker image includes template which uses ENV variables Microservices Runtime runs in a Docker container, the configuration variables template is part of the Docker image, and the template uses environment variables for some or all the values in the template.

Template name: application.properties

Template location is one of the following:
  • Integration Server_directory /instances/instanceName/application.properties
  • Integration Server_directory /application.properties

If you are using ENV variables for some or all of the variable values, refer to the Docker documentation or the documentation for your container orchestration tool for more information about how to specify the ENV variables for Docker containers.

Start up: The docker run command includes options --env, -e or --env-file for setting the ENV variables in the container.

On-premises Microservices Runtime installation does not include template and template does not use ENV variables. Microservices Runtime runs on-premises, configuration variables values are hard coded in the template only, and the template is not included in the Microservices Runtime file system. The template does not use ENV variables.

Template name: application.properties or a user-defined name

Template location: A location that is accessible to the Microservices Runtime.

Start up: Microservices Runtime start up includes the SAG_IS_CONFIG_PROPERTIES ENV variable which specifies the name and location of the configuration variables template.

On-premises Microservices Runtime includes template which does not use ENV variables. Microservices Runtime runs on-premises and a configuration variables template defines all the values. The template does not use ENV variables.

Template name: application.properties

Template location is one of the following:

  • Integration Server_directory /instances/instanceName/application.properties
  • Integration Server_directory /application.properties

Start up: This approach does not require any special steps at start up.

On-premises Microservices Runtime includes template which uses ENV variables Microservices Runtime runs on-premises and a configuration variables template hard codes the values and/or uses environment variables for the values.

Template name: application.properties

Template location is one of the following:
  • Integration Server_directory /instances/instanceName/application.properties
  • Integration Server_directory /application.properties

Environment variables can be specified in Integration Server_directory /bin/setenv.bat(sh) files or ENV variables can be pre-defined in your environment.

For an Integration Server with an Microservices Runtime license, environment variables can be specified in Integration Server_directory profiles/IS_instanceName/bin/custom_setenv.bat(sh) files or ENV variables can be pre-defined in your environment.

Start up: This approach does not require any special steps at start up.

Overview of Building a Configuration Variables Template

Preparing a configuration variables template for use with Microservices Runtime consists of a series of general tasks. The order in which you complete these tasks may be affected by whether you intend to use the template with a Microservices Runtime in a Docker container or an on-premises Microservices Runtime.

The following table identifies the general tasks that you complete for preparing a configuration variables template for use with Microservices Runtime.

Task Description
1 Decide how you want to use the configuration variables template and how you want to supply values. Do you want to use the template with a Microservices Runtime running in a Docker container or an on-premises Microservices Runtime? Do you want to supply all the variable values in the template or do you want to use an environment variables as well? For more information, see Approaches for Using a Configuration Variables Template with Microservices Runtime.
2 Configure a Microservices Runtime such that the generated template will contain the properties that you want to control. When generating a template, the Microservices Runtime includes properties only for those assets which exist on the Microservices Runtime. That is, you cannot use a configuration variables template to add assets to the Microservices Runtime.
3 Generate the configuration variables template for the Microservices Runtime. For more information about creating a configuration variables template, see Generating a Configuration Variables Template.
4 Edit the configuration variables template to contain the property values that you want the Microservices Runtime to modify at startup. For more information about this stage, see Editing a Configuration Variables Template. If you want to add assets to Microservices Runtime by applying configuration variables template, add the key-value pairs for the asset and its properties to the template. Keep in mind that you can use a configuration variables template to add only certain asset types to the Microservices Runtime. For more information about adding assets, see Creating New Assets with the Configurations Variable Template.
5 Place the configuration variables template in the correct location with the appropriate name. The template location depends on whether or not you are using the template with a Docker image or on-premises Microservices Runtime and if the template is part of the image or file system. For more information, see Approaches for Using a Configuration Variables Template with Microservices Runtime.

If you are using ENV variables as values in the configuration variables template, refer to the Docker documentation or the documentation for your container orchestration tool for more information about how to specify the ENV variables for Docker containers.

6 If you are using the template in a Docker container and the template resides inside the Microservices Runtime file system, build the Docker image.

For more information about creating a Docker image, see Using with Docker .

For more information about creating a Docker image, see the webMethods Integration Server Administrator’s Guide

Generating a Configuration Variables Template

About this task

Microservices Runtime provides a utility to generate a configuration variables template based on the configuration of a running Microservices Runtime. This configuration variables template reflects the current configuration of the Microservices Runtime.

After the Microservices Runtime is configured, you can use the utility to generate the template. The resulting template serves as the starting point for creating a customized configuration variables template.

Because a configuration variables template can be used to modify existing configuration on Microservices Runtime only, make sure you fully configure the Microservices Runtime for all facilities and features that you wish to be modified dynamically. This applies only if IS_10.5_Core_Fix7 or later, which includes PIE-65555, is not applied.

Before you generate the configuration variables template from a Microservices Runtime, you might want to:

  • Make sure that the Settings > Extended page displays all of the server configuration parameters that you want to set with the template. To show settings, use Microservices Runtime Administrator to navigate to Settings > Extended > Show and Hide Keys. Select the check box next to each server configuration parameter that you want to appear in the template, and click Save Changes.
  • Ensure that the keystores and truststores are loaded. When a keystore or truststore is loaded it indicates that the keystore or truststore configuration is valid and that the Microservices Runtime initialized the keystore or truststore alias successfully. To see if a keystore or truststore is loaded, navigate to the Security > Keystore page and ensure that the Loaded column displays Yes.
Note: You can create a configuration variables template manually. You do not need to generate a template from an existing configured Microservices Runtime. However, generating the template from a Microservices Runtime is a time-saving option that provides a starting point. A generated template may also be less prone to errors with key names in the template than a template created manually.

To generate a configuration variables template

Procedure

  1. Open the Microservices Runtime Administrator for the Microservices Runtime from which you want to generate the variables
  2. In the Microservices menu of the Navigation panel, click Configuration Variables.
  3. On the Microservices > Configuration Variables page, click Generate Configuration Variables Template.

    Microservices Runtime generates an application.properties file. The application.propeties file includes the text #Sample Generated Template followed by the date and time of the generation.

  4. Download the application.properties file and save it to your preferred location for editing.

What to do next

The generated application.proeperties file includes the following:

  • The date and time that Microservices Runtime generated the template.
  • Key-value pairs for asset properties for which a value is specified on the Microservices Runtime. The template does not include variables for assets that do not exist or for asset properties that are not specified.

    For a list of assets and properties for which Microservices Runtime generates configuration variables see Configuration Variables Template Assets.

    Note: In the template, any key that contain a period (.) as part of its name is escaped using another period. For example, for a JMS connection alias named my.JMS.alias, the template property corresponding to the Client ID in the alias the name: jms.my..JMS..alias.clientID=value
  • Key-value pairs for the server configuration parameters that were configured to show on the Extended Settings page only.
  • Keystore and truststore alias properties for keystores and truststores that were loaded at the time of template generation only.
  • Encrypted values for any passwords that appear as property values in the template.
  • For a configured asset, the configuration variables template lists properties only for which a value is specified. For example, if you specify a client ID for a JMS connection alias, but do not specify a user name or password for use with the JMS connection alias, the configuration variables template contains jms.aliasName.clientID=value but not jms.aliasName.password or jms.aliasName.user.

Editing a Configuration Variables Template

About this task

After you generate a configuration variables template from a Microservices Runtime, you modify the configuration variables template to contain the property values that you want applied to a Microservices Runtime at startup. You can hard code values or specify an environment variable as the value. You can also encrypt values or use a Kubernetes Secret to protect sensitive data. In addition, you can add assets to the template if IS_10.5_Core_Fix7 or later is applied.

Keep the following information in mind when you edit a configuration variables template.

  • Any value that you specify must meet the requirements for the associated property. For example, global variable values cannot exceed 255 characters. If the value is not valid, failures will occur at runtime, either during server initialization or when clients start sending in requests.
  • A configuration variables template can be used to change the configuration information for assets that already exist on the Microservices Runtime only.
  • You can add assets for some asset types to a Microservices Runtime by adding key-value pairs to a template. Any asset that you create must meet the naming requirements for the asset. If it does not, the improperly configured asset might result in Microservices Runtime failure at start up or during operations. For a list of assets that you can add, Overview of Building a Configuration Variables Template
  • The configuration variables template lists only assets that existed on the Microservices Runtime from which you generated the template. You can add an asset for an asset type for which asset creation is allowed via a configuration variables template. If asset creation is not allowed for that type but you know the asset will exist on the Microservices Runtime that will use the template, you can add the asset and the necessary key-value pairs to the template. At startup, if the template specifies a value for a non-existent asset, the Microservices Runtime logs a message to the configuration variables log.

    For more information about assets and properties and the corresponding key name, see Configuration Variables Template Assets.

  • When Microservices Runtime generates an application.properties template, any properties that contain an alias name with a period (.) include another period as an escape character. For example, for a JMS connection alias named my.JMS.alias, the template property corresponding to the Client ID in the alias the name: jms.my..JMS..Alias.clientID=value

    Do not remove the period (.) acting as the escape character.

    If you edit the template by adding a key-value pair for an asset property and the asset property includes an alias name with a period (.), make sure to add another period to serve as the escape character.

To supply a value in the template

Procedure

  1. Open the template in a text editor.
  2. For each value that you want to supply, do one of the following:
    To Enter this for the property value
    Hard code a value The value you want to use.
    Use an environment value as the value The name of the environment variable in the format: $env{environmentVariableName}

    Where environmentVariableName is the name of the environment variable. For example: $env{JDBC_URL}

    Use a Kubernetes Secret as the value $secret{SecretName}

    Where secretName is the key for the secret whose value you want to use. For example: $secret{mySecretPassword}

    For more information about using a Kubernetes Secret with a configuration variables template, see Using a Kubernetes Secret with a Configuration Variables Template.

    Encrypt a value Use Microservices Runtime Administrator to generate an encrypted value and then copy that value into the template. For more information see,Encrypting Values for the Variables Template.

    While Microservices Runtime accepts clear text passwords as well as encrypted ones, Software AG recommends that you encrypt all passwords and other sensitive data in your configuration variables templates.

  3. Repeat the above step for each key that you want to set.
  4. To add an asset, add the key-value pair for each property of the asset that you want to set.

    For example, to add a global variable, insert the following into the template:

    globalvariable.globalVariableName.value

    Where globalVariableName is the name of the global variable that you want to create.

  5. Repeat step 4 for every asset that you want to create.
  6. Save the template.

Encrypting Values for the Variables Template

About this task

You may want your configuration variables template to use encrypted values for sensitive data such as passwords. Microservices Runtime provides a way to generate an encrypted value which can then be placed in the template.

For encryption, Microservices Runtime uses password handles and the Password-Based Encryption technology installed with Microservices Runtime. A password handles associate a password on the host Microservices Runtime with a corresponding key (or handle). The handle is encrypted as an outbound password using the Password-Based Encryption (PBE) technology.

Note: When you generate a configuration variables template, Microservices Runtime encrypts any passwords that appear as property values in the template.

Software AG recommends that you encrypt all passwords and other sensitive data in your configuration variables templates.

To encrypt a value

Procedure

  1. Open the Microservices Runtime Administrator for the Microservices Runtime that you want to use to generate an encrypted value.
  2. In the Microservices menu of the Navigation panel, click Configuration Variables.
  3. On the Microservices > Configuration Variables page, click Generate Encrypted Configuration Variables.
  4. On the Microservices > Configuration Variables > Generate Encrypted Configuration Variable page, in the Value field, enter the value that you want encrypted.

    By default, Microservices Runtime Administrator masks any characters that you enter in the Value field. Click the Show Value check box if you want Microservices Runtime Administrator to display the characters in clear text.

  5. Click Encrypt.

    Microservices Runtime encrypts the value and displays the encrypted value in the Encrypted Value field.

  6. Click Copy to copy the encrypted value to the clipboard.
  7. Open the configuration variables template to which you want to add the encrypted value, locate the key for which you want to use the value, and then paste the copied value into the template.
  8. Repeat steps 4 –7 for each value you want to encrypt.

Using a Kubernetes Secret with a Configuration Variables Template

About this task

A Kubernetes Secret is an object that contains a small piece of confidential data such as credentials. The Secret is separate from a Docker container image, meaning the confidential data can be externalized. You can use a Kubernetes Secret with Microservices Runtime by specifying the key for the Secret in the configuration variables file that is passed into a Microservices Runtime running in a Docker container.
Note: The ability to use a Kubernetes Secret with a configuration variables template was added in PIE-71448 (IS_10.5_Core_Fix12).

Microservices Runtime supports one Secret per container (each Secret can contain multiple entries often called keys) and a Secret of type Opaque only.

Prior to using a Secret with a configuration variables files (application.properties), you must do the following:

  • Create the Secret with Kubernetes
  • Mount the Secret as a data volume

To use a Kubernetes Secret for a property value in a configuration variables file, set the key-value pair for the asset property using the following format:

key=$secret{SecretName}

Where the SecretName is the key for the secret whose value you want to use. For example:

truststore.DEFAULT_JVM_TRUSTSTORE.ksPassword=$secret{TruststorePasswordSecretName}

user.userName.password=$secret{mySecretPassword}

When you start the container, you can set the SECRET_PATH environment variable to the path where the Secret will be present inside the container. You do not need to specify this environment variable if the Secret is mounted at /etc/secrets.

When Microservices Runtime applies the configuration variables file, Microservices Runtime looks for the location of the Secret by first checking if the SECRET_PATH environment variable is present. If so, then Microservices Runtime reads the Secret from the path present in this environment variable. If the SECRET_PATH environment variable was not provided when the container started, then Microservices Runtime expects the Secret will be mounted at /etc/secrets and will read the Secret from there.

If Microservices Runtime cannot find the Secret used in the configuration variables file (the Secret is not present or access to the file is restricted due to file permissions), the following Info level message will be written to the configurationvariables.log:

[ISS.0028.0039I] Exception occurred while reading secret file: <pathToFile>

Creating New Assets with the Configurations Variable Template

For some asset types, you can add assets to Microservices Runtime by adding key-value pairs to the configuration variables template that is applied at start up. Any asset that you create must meet the naming requirements for the asset. An incorrectly configured asset can cause Microservices Runtime start up fail or result in failure during later server operations.

To add an asset to a configuration variables template, follow the procedure and guidelines in Editing a Configuration Variables Template.

The following list identifies the asset types for which you can create an asset through application of a configuration variables template:

  • Consul
  • Email port
  • File polling port
  • Global variable
  • JDBC pool alias
  • JMS connection alias
  • JNDI provider alias
  • Keystore alias
  • LDAP configuration
  • Proxy server alias
  • Remote server alias
  • SFTP server alias
  • SFTP user alias
  • Truststore alias
  • Universal Messaging connection alias (webMethods messaging)
  • User account

Template File Locations

When the configuration variables template is ready for use with a Microservices Runtime, you need to save the template to a place accessible to Microservices Runtime upon startup. Where you place the configuration variables template file and any accompanying environment variables list depends on whether you are using the template with Microservices Runtime running in a Docker container or on-premises.

You can place the template file in one of the following locations.

  • The location to be identified by the SAG_IS_CONFIG_PROPERTIES environment variable.
  • Integration Server_directory /instances/instanceName

    For this option, the configuration variables template must be a file named application.properties. If you use this location with Microservices Runtime running in a Docker container, create the Docker image after completing the template and placing it here.

  • Integration Server_directory

    For this option, the configuration variables template must be a file named application.properties. If you use this location with Microservices Runtime running in a Docker container, create the Docker image after completing the template and placing it here.

For more details about where to place the configuration variables template and an environment variables list, if you are using one, see Approaches for Using a Configuration Variables Template with Microservices Runtime.

Providing a Configuration Variables Template when Starting a Docker Container

When running a Microservices Runtime image in a Docker container, you can specify the configuration variables template and/or environment (ENV) variables in the docker run command.

Example

The following docker run command uses the SAG_IS_CONFIG_PROPERTIES ENV variable to specify the name and location of the configuration variables template. In this example, the Docker image for the Microservices Runtime is named is:microPkg and exposes ports 5555 and 9999. Additionally, the customApplication.properties file location is accessible by the Docker container using Docker volume.

docker run -d --name IS_Default -p 5555 -p 9999 
-v /opt/softwareag/customApplication.properties:/opt/softwareag/customApplication.properties 
-e SAG_IS_CONFIG_PROPERTIES=/opt/softwareag/customApplication.properties 
is:microPkg

Example

The following docker run command uses the SAG_IS_CONFIG_PROPERTIES ENV variable to specify the name and location of the configuration variables template and uses the --env-file option to specify the list of ENV variables that are used in the configuration variables template. In this example, the Docker image for the Microservices Runtime is named is:microPkg and exposes ports 5555 and 9999.

docker run -d --name IS_Default -p 5555 -p 9999 
-e SAG_IS_CONFIG_PROPERTIES=/opt/softwareag/customApplication.properties 
-v /opt/softwareag/customApplication.properties:/opt/softwareag/customApplication.properties 
--env-file env.list is:microPkg

Configuration Variables Logging

When Microservices Runtime applies the configuration variables template at startup, Microservices Runtime has not yet initialized the journal logger which is used for the server log. For this reason, Microservices Runtime uses a separate logging capability for logging Microservices Runtime messages related to processing a configuration variables template. The configuration variables log contains messages about the operations, warnings, and errors that occur while Microservices Runtime applies the template.

Below is an excerpt from the configuration variables log:

2018-06-18 15:34:10 EDT [ISS.0028.0016I] Configuration variables template file 
found at C:\SoftwareAG\IntegrationServer\application.properties will be used for 
processing. 
2018-06-18 15:34:12 EDT [ISS.0028.0007I] Changed property in 
C:\SoftwareAG\IntegrationServer\instances\default\config\server.cnf. Old value: 
localhost. New value: localhost,127.0.0.1. Configuration variable key: 
watt.net.proxySkipList. 
2018-06-18 15:34:12 EDT [ISS.0028.0017W] Encryptor is creating password handle 
because the given password handle 
wm.is.admin.WSEndpoint.message.CONSUMER.HTTPS.ws_cons_https does not exist in 
the password store. 
2018-06-18 15:34:12 EDT [ISS.0028.0008I] Set password in secure password store. 
Password handle: wm.is.admin.WSEndpoint.message.CONSUMER.HTTPS.ws_cons_https 
2018-06-18 15:34:12 EDT [ISS.0028.0017W] Encryptor is creating password handle 
because the given password handle 
wm.is.admin.WSEndpoint.transport.CONSUMER.HTTPS.ws_cons_https does not exist in the password store. 
2018-06-18 15:34:12 EDT [ISS.0028.0008I] Set password in secure password store. 
Password handle: wm.is.admin.WSEndpoint.transport.CONSUMER.HTTPS.ws_cons_https 
2018-06-18 15:34:12 EDT [ISS.0028.0008I] Set password in secure password store. 
Password handle: wm.is.admin.WSEndpoint.message.CONSUMER.HTTPS.ws_cons_https 
2018-06-18 15:34:12 EDT [ISS.0028.0007I] Changed property in 
C:\SoftwareAG\IntegrationServer\instances\default\config\kerberos.cnf. Old 
value: . New value:

Each log message is prefixed with the time stamp and a message ID that includes the logging facility (0028), message code, and the severity level. The severity levels are described in the following table:

  Level Description Example
C Critical Could not execute the configuration variables processing or an error occurred that caused Microservices Runtime initialization to stop. Configuration file C:\SoftwareAG\IntegrationServer\instances\default\packages\WmPublic\config\listeners.cnf not found.
E Error One or more of the intended configuration changes could not be applied java.io.FileNotFoundException: C:\SoftwareAG\IntegrationServer\instances\default\config\jndi\jndi_BasicAuth.properties (The system cannot find the file specified)
W Warning A configuration variable was applied, but there is something about which you should be aware. Property corresponding to key username not found in XML file proxy.cnf.
I Information Informational messages about the progress of configuration variables processing. Changed property in C:\SoftwareAG\IntegrationServer\instances\default\config\server.cnf. Old value: localhost. New value: localhost,127.0.0.1. Configuration variable key: watt.net.proxySkipList.
D Debug Low level messages, helpful for troubleshooting. Processor found for the assetType truststore.

Microservices Runtime does not support filtering the contents of the configuration variables log based on logging level. By default, the configuration variables log includes all messages with a severity of Information or higher. To include debug messages in the log, you must set the SAG_IS_CONFIG_VARIABLES_DEBUG environment variable to true at startup.

Microservices Runtime writes the configuration variables log messages to the console (STDOUT) and/or to the location: Integration Server_directory /instances/instanceName/logs/configurationvariables.log. A Microservices Runtime running in a Docker container always writes the configuration variables log messages to both locations.

Note: Microservices Runtime running in a Docker container also writes the server log to the console. Configuration variables log messages include “ISS.0028” in the message ID which distinguishes the messages from server log messages.

When starting an on-premises Microservices Runtime from the command line, you can specify the destination for the configuration variables log using the -log switch.

The following table identifies the command line options for specifying the destination of the configuration variables log file.

Command Line Option Log Destination
-log none The console (STDOUT).
-log both The console (STDOUT) and Integration Server_directory /instances/instanceName/logs/configurationvariables.log.
Note: If the -log switch is not specified, Microservices Runtime writes the log messages to this location only: Integration Server_directory /instances/instanceName/logs/configurationvariables.log

Starting Microservices Runtime from the command line is the same as starting Integration Server from the command line.

For information about starting Integration Server from the command line, see webMethods Integration Server Administrator’s Guide.

For information about starting Integration Server from the command line, see Starting a Server Instance from the Command Prompt .

Microservices Runtime does not preserve the contents of the configurations variable log across restarts. When running on-premises Microservices Runtime overwrites the existing configurations variable log upon startup.

Viewing the Applied Template for a Microservices Runtime

About this task

For a running Microservices Runtime you may want to see the configuration variables templates that Microservices Runtime applied at startup. This can help you compare current configuration to configuration at the time of startup. Using Microservices Runtime Administrator, you can obtain the application.properties file used at startup. If the application.properties used environment variables as values, Microservices Runtime substitutes the actual value for the environment variable value.

To view the applied configuration variables template

Procedure

  1. Open Microservices Runtime Administrator for which you want to view the applied template.
  2. In the Microservices menu of the Navigation panel, click Configuration Variables.
  3. On the Microservices > Configuration Variables page, click Get Active Configuration Variables.

    Microservices Runtime generates an application.properties file that contains the key-value pairs from the applied template. The application.properties file includes the text #No Active Template if Microservices Runtime did not apply a template at startup.