diff options
author | Peter Barabas <peter.barabas@ericsson.com> | 2016-07-07 17:40:28 +0200 |
---|---|---|
committer | Peter Barabas <peter.barabas@ericsson.com> | 2016-07-22 12:26:55 +0000 |
commit | 6d01c223e8bab2f5bab4941d12a1f09c5d5123b0 (patch) | |
tree | a8bf85494887b7b44ee566a3a4c21652e21bc586 /deploy/README.templater | |
parent | b89e203b875737b0f251bf13ceb300b90e14b14f (diff) |
Add templating support for generating config files
- Remove unneeded method
- Write result to a file and not STDOUT
- Add documentation
- Remove trailing whitespace
- Documentation corrections
Change-Id: I7532222d3512380c4f1129bd05dc2ba37b409dc2
Signed-off-by: Peter Barabas <peter.barabas@ericsson.com>
Diffstat (limited to 'deploy/README.templater')
-rw-r--r-- | deploy/README.templater | 277 |
1 files changed, 277 insertions, 0 deletions
diff --git a/deploy/README.templater b/deploy/README.templater new file mode 100644 index 000000000..964872fb7 --- /dev/null +++ b/deploy/README.templater @@ -0,0 +1,277 @@ +############################################################################## +# Copyright (c) 2016 Ericsson AB and others. +# peter.barabas@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +======== TEMPLATING SUPPORT IN YAML CONFIGURATION FILES ======== + +deploy/templater.py makes it possible to use templates to generate configuration +files. It takes 2 input YAML files and an output file as arguments. One being +the dictionary (called the base file), which is used to look up values in; the +other file is the template, where the substitution will take place. Templater +will write the result to an output file, specified as the 3rd argument. + + +======== SYNTAX OF TEMPLATE FILES ======== + +A template file can contain any valid YAML data and template variables, whose +syntax is described below: + +1. Single value references + + %{title} + + %{environment/net_segment_type} + + Either a root element, or a path can be specified. + +2. YAML sections + + %{nodes} + + %{network/networking_parameters} + + Either a root element, or a path can be specified. + +3. Interface lookup for network + + %{interface(storage)} + + Specify a network type as argument to interface(). + +4. Interface lookup for network and role + + %{interface(public,compute)} + + Specify a network type and a role as arguments to interface(). + + +======== EXAMPLES ======== + +Base YAML file (excerpt): + +title: Deployment Environment Adapter (DEA) +version: 1.1 +created: Wed Mar 30 08:16:04 2016 +environment: + name: vCity + net_segment_type: tun +wanted_release: Liberty on Ubuntu 14.04 +nodes: +- id: 1 + interfaces: interfaces_1 + role: ceph-osd,compute + transformations: transformations_1 +- id: 2 + interfaces: interfaces_1 + role: ceph-osd,compute + transformations: transformations_1 +- id: 3 + interfaces: interfaces_1 + role: ceph-osd,compute + transformations: transformations_1 +- id: 4 + interfaces: interfaces_2 + role: controller,mongo + transformations: transformations_2 +- id: 5 + interfaces: interfaces_2 + role: controller,mongo + transformations: transformations_2 +- id: 6 + interfaces: interfaces_2 + role: controller,mongo + transformations: transformations_2 +interfaces_1: + ens3: + - fuelweb_admin + - management + ens4: + - storage + ens5: + - private + ens6: + - public +interfaces_2: + ens3: + - fuelweb_admin + - management + ens4: + - storage + - private + - public +network: + networks: + - cidr: 172.16.0.0/24 + gateway: 172.16.0.1 + ip_ranges: + - - 172.16.0.2 + - 172.16.0.126 + meta: + cidr: 172.16.0.0/24 + configurable: true + floating_range_var: floating_ranges + ip_range: + - 172.16.0.2 + - 172.16.0.126 + map_priority: 1 + name: public + notation: ip_ranges + render_addr_mask: public + render_type: null + use_gateway: true + vips: + - haproxy + - vrouter + vlan_start: null + name: public + vlan_start: null + - cidr: 192.168.1.0/24 + gateway: null + ip_ranges: + - - 192.168.1.1 + - 192.168.1.254 + meta: + cidr: 192.168.1.0/24 + configurable: true + map_priority: 2 + name: storage + notation: cidr + render_addr_mask: storage + render_type: cidr + use_gateway: false + vlan_start: 102 + name: storage + vlan_start: 102 + + +--- Example 1 --- + +Template file: + +deployment-scenario-metadata: + title: %{title} + version: 0.1 +dea-override-config: + environment: + net_segment_type: %{environment/net_segment_type} + nodes: + %{nodes} + + +Result: + +deployment-scenario-metadata: + title: Deployment Environment Adapter (DEA) + version: 0.1 +dea-override-config: + environment: + net_segment_type: tun + nodes: + - id: 1 + interfaces: interfaces_1 + role: ceph-osd,compute + transformations: transformations_1 + - id: 2 + interfaces: interfaces_1 + role: ceph-osd,compute + transformations: transformations_1 + - id: 3 + interfaces: interfaces_1 + role: ceph-osd,compute + transformations: transformations_1 + - id: 4 + interfaces: interfaces_2 + role: controller,mongo + transformations: transformations_2 + - id: 5 + interfaces: interfaces_2 + role: controller,mongo + transformations: transformations_2 + - id: 6 + interfaces: interfaces_2 + role: controller,mongo + transformations: transformations_2 + + +--- Example 2 --- + +Template file: + +dea-override-config: + network: + networks: + %{network/networks} + + +Result: + +dea-override-config: + network: + networks: + - cidr: 172.16.0.0/24 + gateway: 172.16.0.1 + ip_ranges: + - - 172.16.0.2 + - 172.16.0.126 + meta: + cidr: 172.16.0.0/24 + configurable: true + floating_range_var: floating_ranges + ip_range: + - 172.16.0.2 + - 172.16.0.126 + map_priority: 1 + name: public + notation: ip_ranges + render_addr_mask: public + render_type: null + use_gateway: true + vips: + - haproxy + - vrouter + vlan_start: null + name: public + vlan_start: null + - cidr: 192.168.1.0/24 + gateway: null + ip_ranges: + - - 192.168.1.1 + - 192.168.1.254 + meta: + cidr: 192.168.1.0/24 + configurable: true + map_priority: 2 + name: storage + notation: cidr + render_addr_mask: storage + render_type: cidr + use_gateway: false + vlan_start: 102 + name: storage + vlan_start: 102 + + +--- Example 3 --- + +Template file: + +storage_if: %{interface(storage)} +compute_private_if: %{interface(private,compute)} +# Management interface of a mongo node +mongo_mgmt_if: %{interface(management,mongo)} +controller_private_if: %{interface(private,controller)} + + +Result: + +storage_if: ens4 +compute_private_if: ens5 +# Management interface of a mongo node +mongo_mgmt_if: ens3 +controller_private_if: ens4 + |