heat_template_version: 2014-10-16 description: > Example extra config for cluster config this example deploys a random string to all controller and compute nodes, showing how data may be shared amongst nodes, vs the other ExtraConfig interfaces which act only on individual 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: controller_servers: type: json compute_servers: type: json blockstorage_servers: type: json objectstorage_servers: type: json cephstorage_servers: type: json # Note extra parameters can be defined, then passed data via the # environment parameter_defaults, without modifying the parent template resources: Random: type: OS::Heat::RandomString RandomConfig: type: OS::Heat::SoftwareConfig properties: group: script inputs: - name: random_value config: | #!/bin/sh echo $random_value > /root/random_value RandomDeploymentsController: type: OS::Heat::SoftwareDeployments properties: name: RandomDeploymentsController servers: {get_param: controller_servers} config: {get_resource: RandomConfig} actions: ['CREATE'] # Only do this on CREATE input_values: random_value: {get_attr: [Random, value]} RandomDeploymentsCompute: type: OS::Heat::SoftwareDeployments properties: name: RandomDeploymentsCompute servers: {get_param: compute_servers} config: {get_resource: RandomConfig} actions: ['CREATE'] # Only do this on CREATE input_values: random_value: {get_attr: [Random, value]}