3c6ec654b4
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
58 lines
1.8 KiB
YAML
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]}
|