Batch configurations¶
In case you have multiple services to configure in your environment, that you probably will have at some point, there is a tool for that as well. The tool is called yacfg-batch. It has only yaml input and it uses yacfg to generate configurations as you are already used to.
Input yaml file defines all services you need to generate, what
profiles to use, and what tuning to provide to yacgf
.
It allows you to configure defaults and common for services.
Batch profile file¶
As said it is YAML. It has two special sections: _default
and _common
.
As the name suggests, _default
values are used when values are not
defined per specific section. Where _common
is added to the values
of all sections. The important thing here is that _default
has lower
priority than _common
and that has lower priority than specific section
values.
Every section has 4 values: profile
, template
, tuning_files
,
and tuning
. As the name suggests, profile
defines what generation profile
to select, and it directly correlates with yacgf
’s --profile
.
template
defines what generation template to use
(overrides one in the profile if defined), and it directly correlates with
--template
from yacgf
. tuning_files
option is a list of tuning
files to use, when combining defaults, commons, and specific values,
tuning_files list is concatenated. Finally tuning
is a map of
specific tuning values, correlates with --opt
of yacgf
. When combining
defaults, commons, and specifics, it will be updated over using python
dict.update() and it will work only on first level, so it is recommended
to use flat values for tuning only.
Example:
_default:
profile: artemis/2.5.0/default.yaml.jinja2
tuning_files:
- defaults/broker_default.yaml
_common:
tuning_files:
- common/security.yaml
- common/logging.yaml
tuning_values:
LOG_LEVEL_ALL: INFO
brokerA/opt/artemis/etc:
pass: true
brokerB/opt/artemis/etc:
profile: artemis/2.5.0/AIOBasic.yaml.jinja2
tuning_files:
- brokerB/queues.yaml
---
_default:
profile: amq_broker/7.2.0/default.yaml.jinja2
tuning_files:
- defaults/amq_broker_default.yaml
brokerC/opt/amq/etc:
tuning:
LOG_LEVEL_ALL: DEBUG
As you can see, yacgf-batch
supports multiple sections, in single
batch profile file, that allows you to generate multiple groups using
separated _default
and _common
sections for that.
executing batch¶
When you have defined all tuning files you need, and in the root of this
batch configuration you have your batch profile file, you can now simply
run yacgf-batch
:
yacgf-batch --input [batch_profile_file] --output [output_path]
You can use multiple input files and all of those will be generated
consecutively. In the output path, new subdirectories will be created
for every item you configure (every section), section key will be used
for that subdirectory. If the section name resembles a path, whole
path will be created. For example for brokerA/opt/artemis/etc
the configuration will be generated into
[output_path]/brokerA/opt/artemis/etc/
.