Convert AllNodesExtraConfig to support composable roles
This adjusts the interface to OS::TripleO::AllNodesExtraConfig so it supports custom/composable/optional roles. Note this does break backwards compatibility, and I can't see any way to avoid that. I've converted the in-tree templates, and we'll have to document carefully and or provide a script (or automated conversion via mistral perhaps?) to allow folks to easily adjust any out of tree templates to the new format. Basically you just have to: 1. Remove all the *_servers parameters, replace with one "servers" json parameter 2. Replace references to e.g "controller_servers" with "servers, Controller" which does a path-based lookup into the json map provided by overcloud.yaml Change-Id: I5eebf853646b2f6300d6b542fcd4f43e82d3b413 Partially-Implements: blueprint custom-roles
This commit is contained in:
parent
3a8d20a63d
commit
b738e9ca78
|
@ -9,15 +9,7 @@ description: >
|
|||
# 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:
|
||||
servers:
|
||||
type: json
|
||||
# Note extra parameters can be defined, then passed data via the
|
||||
# environment parameter_defaults, without modifying the parent template
|
||||
|
@ -37,47 +29,17 @@ resources:
|
|||
# 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.
|
||||
CollectMacDeploymentsController:
|
||||
{% for role in roles %}
|
||||
CollectMacDeployments{{role.name}}:
|
||||
type: OS::Heat::SoftwareDeployments
|
||||
properties:
|
||||
name: CollectMacDeploymentsController
|
||||
servers: {get_param: controller_servers}
|
||||
servers: {get_param: servers, {{role.name}}}
|
||||
config: {get_resource: CollectMacConfig}
|
||||
actions: ['CREATE'] # Only do this on CREATE
|
||||
{% endfor %}
|
||||
|
||||
CollectMacDeploymentsCompute:
|
||||
type: OS::Heat::SoftwareDeployments
|
||||
properties:
|
||||
name: CollectMacDeploymentsCompute
|
||||
servers: {get_param: compute_servers}
|
||||
config: {get_resource: CollectMacConfig}
|
||||
actions: ['CREATE'] # Only do this on CREATE
|
||||
|
||||
CollectMacDeploymentsBlockStorage:
|
||||
type: OS::Heat::SoftwareDeployments
|
||||
properties:
|
||||
name: CollectMacDeploymentsBlockStorage
|
||||
servers: {get_param: blockstorage_servers}
|
||||
config: {get_resource: CollectMacConfig}
|
||||
actions: ['CREATE'] # Only do this on CREATE
|
||||
|
||||
CollectMacDeploymentsObjectStorage:
|
||||
type: OS::Heat::SoftwareDeployments
|
||||
properties:
|
||||
name: CollectMacDeploymentsObjectStorage
|
||||
servers: {get_param: objectstorage_servers}
|
||||
config: {get_resource: CollectMacConfig}
|
||||
actions: ['CREATE'] # Only do this on CREATE
|
||||
|
||||
CollectMacDeploymentsCephStorage:
|
||||
type: OS::Heat::SoftwareDeployments
|
||||
properties:
|
||||
name: CollectMacDeploymentsCephStorage
|
||||
servers: {get_param: cephstorage_servers}
|
||||
config: {get_resource: CollectMacConfig}
|
||||
actions: ['CREATE'] # Only do this on CREATE
|
||||
|
||||
# Now we distribute all-the-macs to all nodes
|
||||
# Now we distribute all-the-macs to all Controller nodes
|
||||
DistributeMacConfig:
|
||||
type: OS::Heat::SoftwareConfig
|
||||
properties:
|
||||
|
@ -101,7 +63,7 @@ resources:
|
|||
type: OS::Heat::SoftwareDeployments
|
||||
properties:
|
||||
name: DistributeMacDeploymentsController
|
||||
servers: {get_param: controller_servers}
|
||||
servers: {get_param: servers, Controller}
|
||||
config: {get_resource: DistributeMacConfig}
|
||||
input_values:
|
||||
# FIXME(shardy): It'd be more convenient if we could join these
|
|
@ -10,15 +10,7 @@ description: >
|
|||
# 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:
|
||||
servers:
|
||||
type: json
|
||||
# Note extra parameters can be defined, then passed data via the
|
||||
# environment parameter_defaults, without modifying the parent template
|
||||
|
@ -42,7 +34,7 @@ resources:
|
|||
type: OS::Heat::SoftwareDeployments
|
||||
properties:
|
||||
name: RandomDeploymentsController
|
||||
servers: {get_param: controller_servers}
|
||||
servers: {get_param: servers, Controller}
|
||||
config: {get_resource: RandomConfig}
|
||||
actions: ['CREATE'] # Only do this on CREATE
|
||||
input_values:
|
||||
|
@ -52,7 +44,7 @@ resources:
|
|||
type: OS::Heat::SoftwareDeployments
|
||||
properties:
|
||||
name: RandomDeploymentsCompute
|
||||
servers: {get_param: compute_servers}
|
||||
servers: {get_param: servers, Compute}
|
||||
config: {get_resource: RandomConfig}
|
||||
actions: ['CREATE'] # Only do this on CREATE
|
||||
input_values:
|
|
@ -0,0 +1,44 @@
|
|||
heat_template_version: 2014-10-16
|
||||
|
||||
description: >
|
||||
Extra config to add swap space to 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
|
||||
swap_partition_label:
|
||||
type: string
|
||||
description: Swap partition label
|
||||
default: 'swap1'
|
||||
|
||||
|
||||
resources:
|
||||
|
||||
SwapConfig:
|
||||
type: OS::Heat::SoftwareConfig
|
||||
properties:
|
||||
group: script
|
||||
config: |
|
||||
#!/bin/bash
|
||||
set -eux
|
||||
swap_partition=$(realpath /dev/disk/by-label/$swap_partition_label)
|
||||
swapon $swap_partition
|
||||
echo "$swap_partition swap swap defaults 0 0" >> /etc/fstab
|
||||
inputs:
|
||||
- name: swap_partition_label
|
||||
description: Swap partition label
|
||||
default: 'swap1'
|
||||
|
||||
{% for role in roles %}
|
||||
{{role.name}}SwapDeployment:
|
||||
type: OS::Heat::SoftwareDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: SwapConfig}
|
||||
servers: {get_param: servers, {{role.name}}}
|
||||
input_values:
|
||||
swap_partition_label: {get_param: swap_partition_label}
|
||||
actions: ["CREATE"]
|
||||
{% endfor %}
|
|
@ -1,86 +0,0 @@
|
|||
heat_template_version: 2014-10-16
|
||||
|
||||
description: >
|
||||
Extra config to add swap space to 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
|
||||
swap_partition_label:
|
||||
type: string
|
||||
description: Swap partition label
|
||||
default: 'swap1'
|
||||
|
||||
|
||||
resources:
|
||||
|
||||
SwapConfig:
|
||||
type: OS::Heat::SoftwareConfig
|
||||
properties:
|
||||
group: script
|
||||
config: |
|
||||
#!/bin/bash
|
||||
set -eux
|
||||
swap_partition=$(realpath /dev/disk/by-label/$swap_partition_label)
|
||||
swapon $swap_partition
|
||||
echo "$swap_partition swap swap defaults 0 0" >> /etc/fstab
|
||||
inputs:
|
||||
- name: swap_partition_label
|
||||
description: Swap partition label
|
||||
default: 'swap1'
|
||||
|
||||
ControllerSwapDeployment:
|
||||
type: OS::Heat::SoftwareDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: SwapConfig}
|
||||
servers: {get_param: controller_servers}
|
||||
input_values:
|
||||
swap_partition_label: {get_param: swap_partition_label}
|
||||
actions: ["CREATE"]
|
||||
|
||||
ComputeSwapDeployment:
|
||||
type: OS::Heat::SoftwareDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: SwapConfig}
|
||||
servers: {get_param: compute_servers}
|
||||
input_values:
|
||||
swap_partition_label: {get_param: swap_partition_label}
|
||||
actions: ["CREATE"]
|
||||
|
||||
BlockStorageSwapDeployment:
|
||||
type: OS::Heat::SoftwareDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: SwapConfig}
|
||||
servers: {get_param: blockstorage_servers}
|
||||
input_values:
|
||||
swap_partition_label: {get_param: swap_partition_label}
|
||||
actions: ["CREATE"]
|
||||
|
||||
ObjectStorageSwapDeployment:
|
||||
type: OS::Heat::SoftwareDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: SwapConfig}
|
||||
servers: {get_param: objectstorage_servers}
|
||||
input_values:
|
||||
swap_partition_label: {get_param: swap_partition_label}
|
||||
actions: ["CREATE"]
|
||||
|
||||
CephStorageSwapDeployment:
|
||||
type: OS::Heat::SoftwareDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: SwapConfig}
|
||||
servers: {get_param: cephstorage_servers}
|
||||
input_values:
|
||||
swap_partition_label: {get_param: swap_partition_label}
|
||||
actions: ["CREATE"]
|
|
@ -0,0 +1,58 @@
|
|||
heat_template_version: 2014-10-16
|
||||
|
||||
description: >
|
||||
Extra config to add swap space to 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
|
||||
swap_size_megabytes:
|
||||
type: string
|
||||
description: Amount of swap space to allocate in megabytes
|
||||
default: '4096'
|
||||
swap_path:
|
||||
type: string
|
||||
description: Full path to location of swap file
|
||||
default: '/swap'
|
||||
|
||||
|
||||
resources:
|
||||
|
||||
SwapConfig:
|
||||
type: OS::Heat::SoftwareConfig
|
||||
properties:
|
||||
group: script
|
||||
config: |
|
||||
#!/bin/bash
|
||||
set -eux
|
||||
if [ ! -f $swap_path ]; then
|
||||
dd if=/dev/zero of=$swap_path count=$swap_size_megabytes bs=1M
|
||||
chmod 0600 $swap_path
|
||||
mkswap $swap_path
|
||||
swapon $swap_path
|
||||
else
|
||||
echo "$swap_path already exists"
|
||||
fi
|
||||
echo "$swap_path swap swap defaults 0 0" >> /etc/fstab
|
||||
inputs:
|
||||
- name: swap_size_megabytes
|
||||
description: Amount of swap space to allocate in megabytes
|
||||
default: '4096'
|
||||
- name: swap_path
|
||||
description: Full path to location of swap file
|
||||
default: '/swap'
|
||||
|
||||
{% for role in roles %}
|
||||
{{role.name}}SwapDeployment:
|
||||
type: OS::Heat::SoftwareDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: SwapConfig}
|
||||
servers: {get_param: servers, {{role.name}}}
|
||||
input_values:
|
||||
swap_size_megabytes: {get_param: swap_size_megabytes}
|
||||
swap_path: {get_param: swap_path}
|
||||
actions: ["CREATE"]
|
||||
{% endfor %}
|
|
@ -1,104 +0,0 @@
|
|||
heat_template_version: 2014-10-16
|
||||
|
||||
description: >
|
||||
Extra config to add swap space to 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
|
||||
swap_size_megabytes:
|
||||
type: string
|
||||
description: Amount of swap space to allocate in megabytes
|
||||
default: '4096'
|
||||
swap_path:
|
||||
type: string
|
||||
description: Full path to location of swap file
|
||||
default: '/swap'
|
||||
|
||||
|
||||
resources:
|
||||
|
||||
SwapConfig:
|
||||
type: OS::Heat::SoftwareConfig
|
||||
properties:
|
||||
group: script
|
||||
config: |
|
||||
#!/bin/bash
|
||||
set -eux
|
||||
if [ ! -f $swap_path ]; then
|
||||
dd if=/dev/zero of=$swap_path count=$swap_size_megabytes bs=1M
|
||||
chmod 0600 $swap_path
|
||||
mkswap $swap_path
|
||||
swapon $swap_path
|
||||
else
|
||||
echo "$swap_path already exists"
|
||||
fi
|
||||
echo "$swap_path swap swap defaults 0 0" >> /etc/fstab
|
||||
inputs:
|
||||
- name: swap_size_megabytes
|
||||
description: Amount of swap space to allocate in megabytes
|
||||
default: '4096'
|
||||
- name: swap_path
|
||||
description: Full path to location of swap file
|
||||
default: '/swap'
|
||||
|
||||
ControllerSwapDeployment:
|
||||
type: OS::Heat::SoftwareDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: SwapConfig}
|
||||
servers: {get_param: controller_servers}
|
||||
input_values:
|
||||
swap_size_megabytes: {get_param: swap_size_megabytes}
|
||||
swap_path: {get_param: swap_path}
|
||||
actions: ["CREATE"]
|
||||
|
||||
ComputeSwapDeployment:
|
||||
type: OS::Heat::SoftwareDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: SwapConfig}
|
||||
servers: {get_param: compute_servers}
|
||||
input_values:
|
||||
swap_size_megabytes: {get_param: swap_size_megabytes}
|
||||
swap_path: {get_param: swap_path}
|
||||
actions: ["CREATE"]
|
||||
|
||||
BlockStorageSwapDeployment:
|
||||
type: OS::Heat::SoftwareDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: SwapConfig}
|
||||
servers: {get_param: blockstorage_servers}
|
||||
input_values:
|
||||
swap_size_megabytes: {get_param: swap_size_megabytes}
|
||||
swap_path: {get_param: swap_path}
|
||||
actions: ["CREATE"]
|
||||
|
||||
ObjectStorageSwapDeployment:
|
||||
type: OS::Heat::SoftwareDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: SwapConfig}
|
||||
servers: {get_param: objectstorage_servers}
|
||||
input_values:
|
||||
swap_size_megabytes: {get_param: swap_size_megabytes}
|
||||
swap_path: {get_param: swap_path}
|
||||
actions: ["CREATE"]
|
||||
|
||||
CephStorageSwapDeployment:
|
||||
type: OS::Heat::SoftwareDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: SwapConfig}
|
||||
servers: {get_param: cephstorage_servers}
|
||||
input_values:
|
||||
swap_size_megabytes: {get_param: swap_size_megabytes}
|
||||
swap_path: {get_param: swap_path}
|
||||
actions: ["CREATE"]
|
|
@ -442,17 +442,13 @@ resources:
|
|||
type: OS::TripleO::AllNodesExtraConfig
|
||||
depends_on:
|
||||
- UpdateWorkflow
|
||||
- ComputeAllNodesValidationDeployment
|
||||
- BlockStorageAllNodesValidationDeployment
|
||||
- ObjectStorageAllNodesValidationDeployment
|
||||
- CephStorageAllNodesValidationDeployment
|
||||
- ControllerAllNodesValidationDeployment
|
||||
{% for role in roles %}
|
||||
- {{role.name}}AllNodesValidationDeployment
|
||||
{% endfor %}
|
||||
properties:
|
||||
controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
|
||||
compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
|
||||
blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
|
||||
objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
|
||||
cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
|
||||
{% for role in roles %}
|
||||
servers: {get_attr: [{{role.name}}, attributes, nova_server_resource]}
|
||||
{% endfor %}
|
||||
|
||||
# Post deployment steps for all roles
|
||||
AllNodesDeploySteps:
|
||||
|
|
|
@ -4,15 +4,7 @@ description: Configure hieradata for all MidoNet nodes
|
|||
|
||||
parameters:
|
||||
# Parameters passed from the parent template
|
||||
controller_servers:
|
||||
type: json
|
||||
compute_servers:
|
||||
type: json
|
||||
blockstorage_servers:
|
||||
type: json
|
||||
objectstorage_servers:
|
||||
type: json
|
||||
cephstorage_servers:
|
||||
servers:
|
||||
type: json
|
||||
|
||||
EnableZookeeperOnController:
|
||||
|
@ -102,10 +94,10 @@ resources:
|
|||
type: OS::Heat::StructuredDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: NetworkMidoNetConfig}
|
||||
servers: {get_param: controller_servers}
|
||||
servers: {get_param: servers, Controller}
|
||||
|
||||
NetworkMidonetDeploymentComputes:
|
||||
type: OS::Heat::StructuredDeploymentGroup
|
||||
properties:
|
||||
config: {get_resource: NetworkMidoNetConfig}
|
||||
servers: {get_param: compute_servers}
|
||||
servers: {get_param: servers, Compute}
|
||||
|
|
|
@ -4,15 +4,7 @@ description: Configure hieradata for Network Cisco configuration
|
|||
|
||||
parameters:
|
||||
# Parameters passed from the parent template
|
||||
controller_servers:
|
||||
type: json
|
||||
compute_servers:
|
||||
type: json
|
||||
blockstorage_servers:
|
||||
type: json
|
||||
objectstorage_servers:
|
||||
type: json
|
||||
cephstorage_servers:
|
||||
servers:
|
||||
type: json
|
||||
|
||||
# extra parameters passed via parameter_defaults
|
||||
|
@ -140,7 +132,7 @@ resources:
|
|||
properties:
|
||||
name: NetworkCiscoDeployment
|
||||
config: {get_resource: NetworkCiscoConfig}
|
||||
servers: {get_param: controller_servers}
|
||||
servers: {get_param: servers, Controller}
|
||||
input_values:
|
||||
UCSM_ip: {get_param: NetworkUCSMIp}
|
||||
UCSM_username: {get_param: NetworkUCSMUsername}
|
||||
|
@ -187,7 +179,7 @@ resources:
|
|||
type: OS::Heat::SoftwareDeployments
|
||||
properties:
|
||||
name: CollectMacDeploymentsController
|
||||
servers: {get_param: controller_servers}
|
||||
servers: {get_param: servers, Controller}
|
||||
config: {get_resource: CollectMacConfig}
|
||||
actions: ['CREATE'] # Only do this on CREATE
|
||||
|
||||
|
@ -195,7 +187,7 @@ resources:
|
|||
type: OS::Heat::SoftwareDeployments
|
||||
properties:
|
||||
name: CollectMacDeploymentsCompute
|
||||
servers: {get_param: compute_servers}
|
||||
servers: {get_param: servers, Compute}
|
||||
config: {get_resource: CollectMacConfig}
|
||||
actions: ['CREATE'] # Only do this on CREATE
|
||||
|
||||
|
@ -203,7 +195,7 @@ resources:
|
|||
type: OS::Heat::SoftwareDeployments
|
||||
properties:
|
||||
name: CollectMacDeploymentsBlockStorage
|
||||
servers: {get_param: blockstorage_servers}
|
||||
servers: {get_param: servers, BlockStorage}
|
||||
config: {get_resource: CollectMacConfig}
|
||||
actions: ['CREATE'] # Only do this on CREATE
|
||||
|
||||
|
@ -211,7 +203,7 @@ resources:
|
|||
type: OS::Heat::SoftwareDeployments
|
||||
properties:
|
||||
name: CollectMacDeploymentsObjectStorage
|
||||
servers: {get_param: objectstorage_servers}
|
||||
servers: {get_param: servers, ObjectStorage}
|
||||
config: {get_resource: CollectMacConfig}
|
||||
actions: ['CREATE'] # Only do this on CREATE
|
||||
|
||||
|
@ -219,7 +211,7 @@ resources:
|
|||
type: OS::Heat::SoftwareDeployments
|
||||
properties:
|
||||
name: CollectMacDeploymentsCephStorage
|
||||
servers: {get_param: cephstorage_servers}
|
||||
servers: {get_param: servers, CephStorage}
|
||||
config: {get_resource: CollectMacConfig}
|
||||
actions: ['CREATE'] # Only do this on CREATE
|
||||
|
||||
|
@ -294,7 +286,7 @@ resources:
|
|||
type: OS::Heat::SoftwareDeployment
|
||||
properties:
|
||||
name: MappingToNexusDeploymentsController
|
||||
server: {get_param: [controller_servers, '0']}
|
||||
server: {get_param: [servers, Controller, '0']}
|
||||
config: {get_resource: MappingToNexusConfig}
|
||||
input_values:
|
||||
# FIXME(shardy): It'd be more convenient if we could join these
|
||||
|
@ -338,7 +330,7 @@ resources:
|
|||
depends_on: MappingToNexusDeploymentsController
|
||||
properties:
|
||||
name: MappingToUCSMDeploymentsController
|
||||
server: {get_param: [controller_servers, '0']}
|
||||
server: {get_param: [servers, Controller, '0']}
|
||||
config: {get_resource: MappingToUCSMConfig}
|
||||
input_values:
|
||||
ucsm_config: {get_param: NetworkUCSMHostList}
|
||||
|
|
Loading…
Reference in New Issue