Split out hosts config deployment

This patch moves the hosts configuration into its own deployment.
It will continue to use os-apply-config as something that is
required early on in the bootstrapping (it needs to be
configured before puppet runs for example).

The motivation here is so we can refactor all-nodes-config.yaml to use a
new hiera hook that that avoids os-apply-config entirely.

Change-Id: Ib3e4380f205358b27d22a1102b663cf300b1ed86
Partial-bug: #1596373
This commit is contained in:
Dan Prince 2016-10-10 21:03:12 -04:00
parent 8f5ebd08c4
commit 9f8944111c
4 changed files with 54 additions and 19 deletions

30
hosts-config.yaml Normal file
View File

@ -0,0 +1,30 @@
heat_template_version: 2016-10-14
description: 'All Hosts Config'
parameters:
hosts:
type: comma_delimited_list
resources:
hostsConfigImpl:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
hosts:
list_join:
- "\n"
- {get_param: hosts}
outputs:
config_id:
description: The ID of the hostsConfigImpl resource.
value:
{get_resource: hostsConfigImpl}
hosts_entries:
description: |
The content that should be appended to your /etc/hosts if you want to get
hostname-based access to the deployed nodes (useful for testing without
setting up a DNS).
value: {get_attr: [hostsConfigImpl, config, hosts]}

View File

@ -3,6 +3,7 @@ resource_registry:
OS::TripleO::SoftwareDeployment: OS::Heat::StructuredDeployment
OS::TripleO::PostDeploySteps: puppet/post.yaml
OS::TripleO::AllNodes::SoftwareConfig: puppet/all-nodes-config.yaml
OS::TripleO::Hosts::SoftwareConfig: hosts-config.yaml
OS::TripleO::DefaultPasswords: default_passwords.yaml
# Tasks (for internal TripleO usage)

View File

@ -214,8 +214,16 @@ resources:
EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
{{role.name}}HostsDeployment:
type: OS::Heat::StructuredDeployments
properties:
name: {{role.name}}HostsDeployment
config: {get_attr: [hostsConfig, config_id]}
servers: {get_attr: [{{role.name}}, attributes, nova_server_resource]}
{{role.name}}AllNodesDeployment:
type: OS::Heat::StructuredDeployments
depends_on: {{role.name}}HostsDeployment
properties:
name: {{role.name}}AllNodesDeployment
config: {get_attr: [allNodesConfig, config_id]}
@ -303,6 +311,16 @@ resources:
MonitoringSubscriptions: {get_attr: [{{role.name}}ServiceChain, role_data, monitoring_subscriptions]}
{% endfor %}
hostsConfig:
type: OS::TripleO::Hosts::SoftwareConfig
properties:
hosts:
{% for role in roles %}
- list_join:
- '\n'
- {get_attr: [{{role.name}}, hosts_entry]}
{% endfor %}
allNodesConfig:
type: OS::TripleO::AllNodes::SoftwareConfig
properties:
@ -311,12 +329,6 @@ resources:
cloud_name_storage: {get_param: CloudNameStorage}
cloud_name_storage_mgmt: {get_param: CloudNameStorageManagement}
cloud_name_ctlplane: {get_param: CloudNameCtlplane}
hosts:
{% for role in roles %}
- list_join:
- '\n'
- {get_attr: [{{role.name}}, hosts_entry]}
{% endfor %}
enabled_services:
list_join:
- ','
@ -517,6 +529,10 @@ resources:
# Post deployment steps for all roles
AllNodesDeploySteps:
type: OS::TripleO::PostDeploySteps
{% for role in roles %}
depends_on:
- {{role.name}}AllNodesDeployment
{% endfor %}
properties:
servers:
{% for role in roles %}
@ -599,7 +615,7 @@ outputs:
value:
list_join:
- "\n"
- - {get_attr: [allNodesConfig, hosts_entries]}
- - {get_attr: [hostsConfig, hosts_entries]}
-
- str_replace:
template: IP HOST

View File

@ -12,8 +12,6 @@ parameters:
type: string
cloud_name_ctlplane:
type: string
hosts:
type: comma_delimited_list
# FIXME(shardy) this can be comma_delimited_list when
# https://bugs.launchpad.net/heat/+bug/1617019 is fixed
enabled_services:
@ -75,10 +73,6 @@ resources:
properties:
group: os-apply-config
config:
hosts:
list_join:
- "\n"
- {get_param: hosts}
hiera:
datafiles:
bootstrap_node:
@ -217,9 +211,3 @@ outputs:
description: The ID of the allNodesConfigImpl resource.
value:
{get_resource: allNodesConfigImpl}
hosts_entries:
description: |
The content that should be appended to your /etc/hosts if you want to get
hostname-based access to the deployed nodes (useful for testing without
setting up a DNS).
value: {get_attr: [allNodesConfigImpl, config, hosts]}