tripleo-heat-templates/extraconfig/all_nodes/mac_hostname.j2.yaml
Carlos Camacho 927495fe3d Change template names to queens
The new master branch should point now to queens instead of pike.

So, HOT templates should specify that they might contain features
for queens release [1]

[1]: https://docs.openstack.org/heat/latest/template_guide/hot_spec.html#queens

Change-Id: I7654d1c59db0c4508a9d7045f452612d22493004
2017-11-23 10:15:32 +01:00

78 lines
3.1 KiB
YAML

heat_template_version: queens
description: >
Example extra config for cluster config
this example collects the hostname and MAC addresses for each node in
the deployment, then distributes that info to all Controller nodes.
# Parameters passed from the parent template - note if you maintain
# out-of-tree templates they may require additional parameters if the
# in-tree templates add a new role.
parameters:
servers:
type: json
# Note extra parameters can be defined, then passed data via the
# environment parameter_defaults, without modifying the parent template
resources:
CollectMacConfig:
type: OS::Heat::SoftwareConfig
properties:
group: script
config: |
#!/bin/sh
MACS=$(ifconfig | grep ether | awk '{print $2}' | tr "\n" " ")
HOSTNAME=$(hostname -s)
echo "$HOSTNAME $MACS"
# FIXME(shardy): Long term it'd be better if Heat SoftwareDeployments accepted
# list instead of a map, then we could join the lists of servers into one
# deployment instead of requiring one deployment per-role.
{% for role in roles %}
CollectMacDeployments{{role.name}}:
type: OS::Heat::SoftwareDeployments
properties:
name: CollectMacDeploymentsController
servers: {get_param: [servers, {{role.name}}]}
config: {get_resource: CollectMacConfig}
actions: ['CREATE'] # Only do this on CREATE
{% endfor %}
# Now we distribute all-the-macs to all Controller nodes
DistributeMacConfig:
type: OS::Heat::SoftwareConfig
properties:
group: script
inputs:
- name: controller_mappings
- name: compute_mappings
- name: blockstorage_mappings
- name: objectstorage_mappings
- name: cephstorage_mappings
config: |
#!/bin/sh
echo $controller_mappings > /root/controller_mappings
echo $compute_mappings > /root/compute_mappings
echo $blockstorage_mappings > /root/blockstorage_mappings
echo $objectstorage_mappings > /root/objectstorage_mappings
echo $cephstorage_mappings > /root/cephstorage_mappings
echo "mappings = $(cat /root/*_mappings)"
DistributeMacDeploymentsController:
type: OS::Heat::SoftwareDeployments
properties:
name: DistributeMacDeploymentsController
servers: {get_param: [servers, Controller]}
config: {get_resource: DistributeMacConfig}
input_values:
# FIXME(shardy): It'd be more convenient if we could join these
# items together but because the returned format is a map (not a list)
# we can't use list_join or str_replace. Possible Heat TODO.
controller_mappings: {get_attr: [CollectMacDeploymentsController, deploy_stdouts]}
compute_mappings: {get_attr: [CollectMacDeploymentsCompute, deploy_stdouts]}
blockstorage_mappings: {get_attr: [CollectMacDeploymentsBlockStorage, deploy_stdouts]}
objectstorage_mappings: {get_attr: [CollectMacDeploymentsObjectStorage, deploy_stdouts]}
cephstorage_mappings: {get_attr: [CollectMacDeploymentsCephStorage, deploy_stdouts]}
actions: ['CREATE'] # Only do this on CREATE