tripleo-heat-templates/puppet/extraconfig/pre_deploy/per_node.yaml
Steven Hardy 3c6ec654b4 Bump template version for all templates to "ocata"
Heat now supports release name aliases, so we can replace
the inconsistent mix of date related versions with one consistent
version that aligns with the supported version of heat for this
t-h-t branch.

This should also help new users who sometimes copy/paste old templates
and discover intrinsic functions in the t-h-t docs don't work because
their template version is too old.

Change-Id: Ib415e7290fea27447460baa280291492df197e54
2016-12-23 11:43:39 +00:00

58 lines
1.8 KiB
YAML

heat_template_version: ocata
description: Configure hieradata overrides for specific nodes
parameters:
server:
description: ID of the controller node to apply this config to
type: string
# Config specific parameters, to be provided via parameter_defaults
# This would be a lookup of the node UUID as provided by dmidecode
# to the json required for the node-specific hieradata
# Note this needs to be a json blob e.g:
# parameter_defaults:
# NodeDataLookup: |
# {"AB4114B1-9C9D-409A-BEFB-D88C151BF2C3": {"foo": "bar"},
# "8CF1A7EA-7B4B-4433-AC83-17675514B1B8": {"foo2": "bar2"}}
NodeDataLookup:
type: string
default: ''
description: json string containing per-node configuration map
resources:
NodeSpecificConfig:
type: OS::Heat::SoftwareConfig
properties:
group: script
inputs:
- name: node_lookup
config: |
#!/bin/sh
node_id=$(dmidecode --s system-uuid)
# Create a /etc/puppet/hieradata/UUID.json file to provide
# the data of the NodeDataLookup parameter that matches the
# system UUID
echo $node_lookup | python -c "
import json
import sys
input = sys.stdin.readline() or '{}'
cnt = json.loads(input)
print json.dumps(cnt.get('${node_id}', {}))
" > /etc/puppet/hieradata/${node_id}.json
NodeSpecificDeployment:
type: OS::Heat::SoftwareDeployment
properties:
name: NodeSpecificDeployment
config: {get_resource: NodeSpecificConfig}
server: {get_param: server}
input_values:
node_lookup: {get_param: NodeDataLookup}
outputs:
deploy_stdout:
description: Deployment reference, used to trigger puppet apply on changes
value: {get_attr: [NodeSpecificDeployment, deploy_stdout]}