...
The templates
folder contains of the configurable template files. For example, if clustering can be configured in a particular template module for a Carbon product, the axis2.xml
file should be included in the templates folder as a templated file, axis2.xml.template
. The template file content for the clustering related area can look like something as follows.
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
<clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent" enable="{{ CONFIG_PARAM_CLUSTERING }}">
<parameter name="membershipScheme">{{CONFIG_PARAM_MEMBERSHIP_SCHEME}}</parameter>
<parameter name="domain">{{CONFIG_PARAM_DOMAIN}}</parameter>
<parameter name="localMemberHost">{{CONFIG_PARAM_LOCAL_MEMBER_HOST}}</parameter>
<parameter name="localMemberPort">{{CONFIG_PARAM_LOCAL_MEMBER_PORT}}</parameter>
<parameter name="properties">
<property name="backendServerURL" value="https://${hostName}:${httpsPort}/services/"/>
<property name="mgtConsoleURL" value="https://${hostName}:${httpsPort}/"/>
{% if CONFIG_PARAM_SUB_DOMAIN == 'mgt' %}
{% if CONFIG_PARAM_PT_HTTP_PROXY_PORT is defined -%}
<property name="port.mapping.80" value="{{CONFIG_PARAM_PT_HTTP_PROXY_PORT}}"/>
{% else -%}
<property name="port.mapping.80" value="9763"/>
{% endif -%}
{% if CONFIG_PARAM_PT_HTTPS_PROXY_PORT is defined -%}
<property name="port.mapping.443" value="{{CONFIG_PARAM_PT_HTTPS_PROXY_PORT}}"/>
{% else -%}
<property name="port.mapping.443" value="9443"/>
{% endif -%}
<property name="subDomain" value="mgt"/>
{% endif %}
<!-- Worker Setup-->
{% if CONFIG_PARAM_SUB_DOMAIN == 'worker' %}
<property name="subDomain" value="worker"/>
{% endif %}
</parameter>
<members>
{% for key, value in CONFIG_PARAM_WKA_MEMBERS.iteritems() -%}
<member>
<hostName>{{ key }}</hostName>
<port>{{ value }}</port>
</member>
{% endfor -%}
</members> |
The templating language used in the Configurator is Jinja Templating.
module.ini
The module.ini
file contains the configurable options for the specific template module. For example, for the above mentioned clustering enabled axis2.xml.template
file, the following can be the likely entries of the module.ini
file.
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
[SETTINGS] |
...
READ_FROM_ENVIRONMENT=true |
...
CARBON_HOME=/opt/wso2am-1.9.1 |
...
[PARAMS] |
...
CONFIG_PARAM_CLUSTERING=true |
...
CONFIG_PARAM_MEMBERSHIP_SCHEME=wka |
...
CONFIG_PARAM_DOMAIN=wso2.carbon.domain |
...
CONFIG_PARAM_LOCAL_MEMBER_HOST=127.0.0.1 |
...
CONFIG_PARAM_LOCAL_MEMBER_PORT=4000 |
...
CONFIG_PARAM_WKA_MEMBERS=[127.0.0.1:4000] |
...
CONFIG_PARAM_PORT_OFFSET=0 |
...
CONFIG_PARAM_PROFILE=Default |
READ_FROM_ENVIRONMENT
If READ_FROM_ENVIRONMENT is set to true
, then the Configurator will override any values specified in the module.ini
file with values from the environment variables.
CARBON_HOME
CARBON_HOME is the path to the product which has to be configured using the specified templates.
Running the Configurator
The Configurator has to be pointed to the location of the template module. It will look for the module.ini
file, read the configuration values, process the templates inside templates
folder, and copy the processed templates and the files inside files
folder to the CARBON_HOME
.
Download Configurator
The Configurator is hosted on the Private PaaS Cartridge Repository.
- Checkout the Cartridge Repository.
Note | ||
---|---|---|
| ||
This section has to be updated when the release completes. |
Create Template Module
Create the template module with the above mentioned folder structure. However, Private PaaS Cartridge Repository contains a list of Cartridges with Template Modules that can built. For example, if we are building the template module for WSO2 API Manager the following procedure can be followed.
- Checkout the Private PaaS Cartridge Repository.
- Navigate to WSO2 API Manager 1.9.1 Template Module.
- cd <PRIVATE_PAAS_CARTRIDGES_HOME>/wso2am/1.9.1/template-module/
- Build the Template Module.
- mvn clean install
- Unzip the resulting zip file.
- cd /tmp
- unzip <PRIVATE_PAAS_CARTRIDGES_HOME>/wso2am/1.9.1/template-module/target/wso2am-1.9.1-template-module-4.1.0.zip
Execute Configurator on the Template Module
Navigate to the Configurator folder and execute configurator.py
, and pass the template module folder as a command line argument.
Code Block | ||
---|---|---|
| ||
./configurator.py -d /tmp/wso2am-1.9.1-template-module-4.1.0 |