aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2015-01-14 15:54:45 -0500
committerDan Prince <dprince@redhat.com>2015-01-27 09:07:18 -0500
commit2698bb457309108dbf5821fe3976a64509c692e5 (patch)
tree4914a57812347a4a0feb9788c87ed41a26547001
parent7f09f73a314ac0412a4410582a143899acf0528c (diff)
Compute: consolidated nested stack
In I250dc1a8c02626cf7d1a5d2ce92706504ec0c7de we split out just the Controller software config in an effort to provide hooks for alternate implementations (puppet). This sort of worked but caused quirky ordering issues with signal handling. It also causes problems for Tuskar which would prefer to think of these nested stacks and not have us split out just the software configs like this. This patch moves all the compute related stuff for our two implementations: compute.yaml: is used by os-apply-config (uses the tripleo-image-elements) compute-puppet.yaml: uses stackforge puppet-* modules for configuration By duplicating the entire compute in this manner we make it much easier to create dependencies and implement proper signal handling. The only (temporary) downside is the duplication of parameters most of which will eventually go away when we move using the global parameters via Heat environment files instead. Change-Id: I49175d1843520abc80fefe9528442e5dda151f5d
-rw-r--r--compute-config-puppet.yaml112
-rw-r--r--compute-config.yaml78
-rw-r--r--compute-puppet.yaml404
-rw-r--r--compute.yaml62
-rw-r--r--overcloud-resource-registry-puppet.yaml3
-rw-r--r--overcloud-resource-registry.yaml1
6 files changed, 463 insertions, 197 deletions
diff --git a/compute-config-puppet.yaml b/compute-config-puppet.yaml
deleted file mode 100644
index 5ad94f98..00000000
--- a/compute-config-puppet.yaml
+++ /dev/null
@@ -1,112 +0,0 @@
-# Copyright 2014 Red Hat, Inc.
-# All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-heat_template_version: 2014-10-16
-
-description: >
- Puppet Software Config for Nova Compute.
-
-parameters:
- server_id:
- type: string
- hidden: true
-
-resources:
-
- ComputePuppetConfig:
- type: OS::Heat::SoftwareConfig
- properties:
- group: puppet
- outputs:
- - name: result
- config:
- get_file: puppet/overcloud_compute.pp
-
- ComputePuppetDeployment:
- type: OS::Heat::StructuredDeployment
- properties:
- server: {get_param: server_id}
- config: {get_resource: ComputePuppetConfig}
- signal_transport: NO_SIGNAL
-
- NovaComputeConfigImpl:
- type: OS::Heat::StructuredConfig
- properties:
- group: os-apply-config
- config:
- hiera:
- hierarchy:
- - heat_config_%{::deploy_config_name}
- - compute
- - common
- datafiles:
- common:
- raw_data: {get_file: puppet/hieradata/common.yaml}
- compute:
- raw_data: {get_file: puppet/hieradata/compute.yaml}
- oac_data:
- nova::compute::vncserver_proxyclient_address: local-ipv4
- mapped_data:
- #nova::debug: {get_input: debug}
- nova_compute_driver: {get_input: nova_compute_driver}
- nova::compute::libvirt::libvirt_virt_type: {get_input: nova_compute_libvirt_type}
- nova_api_host: {get_input: nova_api_host}
- nova::compute::vncproxy_host: {get_input: nova_public_ip}
- nova_password: {get_input: nova_password}
- #ceilometer::debug: {get_input: debug}
- ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
- ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
- ceilometer_compute_agent: {get_input: ceilometer_compute_agent}
- snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
- snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
- glance_host: {get_input: glance_host}
- glance_port: {get_input: glance_port}
- glance_protocol: {get_input: glance_protocol}
- keystone_host: {get_input: keystone_host}
- #neutron::debug: {get_input: debug}
- neutron_flat_networks: {get_input: neutron_flat_networks}
- neutron_host: {get_input: neutron_host}
- neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
- neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
- neutron_tunnel_types: {get_input: neutron_tunnel_types}
- neutron::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
- neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
- neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
- neutron_physical_bridge: {get_input: neutron_physical_bridge}
- neutron_public_interface: {get_input: neutron_public_interface}
- nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
- neutron_router_distributed: {get_input: neutron_router_distributed}
- neutron_agent_mode: {get_input: neutron_agent_mode}
- neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
- neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
- neutron_allow_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
- neutron_l3_ha: {get_input: neutron_l3_ha}
- neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
- admin_password: {get_input: admin_password}
- nova::rabbit_host: {get_input: rabbit_host}
- neutron::rabbit_host: {get_input: rabbit_host}
- ceilometer::rabbit_host: {get_input: rabbit_host}
- nova::rabbit_userid: {get_input: rabbit_username}
- neutron::rabbit_user: {get_input: rabbit_username}
- ceilometer::rabbit_userid: {get_input: rabbit_username}
- nova::rabbit_password: {get_input: rabbit_password}
- neutron::rabbit_password: {get_input: rabbit_password}
- ceilometer::rabbit_password: {get_input: rabbit_password}
- ntp_server: {get_input: ntp_server}
-
-outputs:
- config_id:
- description: The ID of the NovaComputeConfigImpl resource.
- value:
- {get_resource: NovaComputeConfigImpl}
diff --git a/compute-config.yaml b/compute-config.yaml
deleted file mode 100644
index 0a863aa9..00000000
--- a/compute-config.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-heat_template_version: 2014-10-16
-
-description: >
- Software Config for Nova Compute.
-
-parameters:
- # unused here but is a placeholder for other compute-config templates
- # which may choose to create in-templates resources that require server
- server_id:
- type: string
- hidden: true
-
-resources:
- NovaComputeConfigImpl:
- type: OS::Heat::StructuredConfig
- properties:
- group: os-apply-config
- config:
- nova:
- compute_driver: { get_input: nova_compute_driver }
- compute_libvirt_type: { get_input: nova_compute_libvirt_type }
- debug: {get_input: debug}
- host: {get_input: nova_api_host}
- public_ip: {get_input: nova_public_ip}
- service-password: {get_input: nova_password}
- ceilometer:
- debug: {get_input: debug}
- metering_secret: {get_input: ceilometer_metering_secret}
- service-password: {get_input: ceilometer_password}
- compute_agent: {get_input: ceilometer_compute_agent}
- snmpd:
- export_MIB: UCD-SNMP-MIB
- readonly_user_name: {get_input: snmpd_readonly_user_name}
- readonly_user_password: {get_input: snmpd_readonly_user_password}
- glance:
- debug: {get_input: debug}
- host: {get_input: glance_host}
- port: {get_input: glance_port}
- protocol: {get_input: glance_protocol}
- keystone:
- debug: {get_input: debug}
- host: {get_input: keystone_host}
- neutron:
- debug: {get_input: debug}
- flat-networks: {get_input: neutron_flat_networks}
- host: {get_input: neutron_host}
- router_distributed: {get_input: neutron_router_distributed}
- agent_mode: {get_input: neutron_agent_mode}
- ovs_db: {get_input: neutron_dsn}
- metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
- mechanism_drivers: {get_input: neutron_mechanism_drivers}
- allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
- l3_ha: {get_input: neutron_l3_ha}
- ovs:
- local_ip: {get_input: neutron_local_ip}
- tenant_network_type: {get_input: neutron_tenant_network_type}
- tunnel_types: {get_input: neutron_tunnel_types}
- network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
- bridge_mappings: {get_input: neutron_bridge_mappings}
- enable_tunneling: {get_input: neutron_enable_tunneling}
- physical_bridge: {get_input: neutron_physical_bridge}
- public_interface: {get_input: neutron_public_interface}
- public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
- service-password: {get_input: neutron_password}
- admin-password: {get_input: admin_password}
- rabbit:
- host: {get_input: rabbit_host}
- username: {get_input: rabbit_username}
- password: {get_input: rabbit_password}
- ntp:
- servers:
- - {server: {get_input: ntp_server}}
-
-outputs:
- config_id:
- description: The ID of the NovaComputeConfigImpl resource.
- value:
- {get_resource: NovaComputeConfigImpl}
diff --git a/compute-puppet.yaml b/compute-puppet.yaml
new file mode 100644
index 00000000..843898fe
--- /dev/null
+++ b/compute-puppet.yaml
@@ -0,0 +1,404 @@
+heat_template_version: 2014-10-16
+
+description: >
+ OpenStack hypervisor node configured via Puppet.
+
+parameters:
+ AdminPassword:
+ default: unset
+ description: The password for the keystone admin account, used for monitoring, querying neutron etc.
+ type: string
+ hidden: true
+ CeilometerComputeAgent:
+ description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
+ type: string
+ default: ''
+ constraints:
+ - allowed_values: ['', Present]
+ CeilometerMeteringSecret:
+ default: unset
+ description: Secret shared by the ceilometer services.
+ type: string
+ hidden: true
+ CeilometerPassword:
+ default: unset
+ description: The password for the ceilometer service account.
+ type: string
+ hidden: true
+ Debug:
+ default: ''
+ description: Set to True to enable debugging on all services.
+ type: string
+ ExtraConfig:
+ default: {}
+ description: |
+ Additional configuration to inject into the cluster. The JSON should have
+ the following structure:
+ {"FILEKEY":
+ {"config":
+ [{"section": "SECTIONNAME",
+ "values":
+ [{"option": "OPTIONNAME",
+ "value": "VALUENAME"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ For instance:
+ {"nova":
+ {"config":
+ [{"section": "default",
+ "values":
+ [{"option": "force_config_drive",
+ "value": "always"
+ }
+ ]
+ },
+ {"section": "cells",
+ "values":
+ [{"option": "driver",
+ "value": "nova.cells.rpc_driver.CellsRPCDriver"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ type: json
+ Flavor:
+ description: Flavor for the nova compute node
+ type: string
+ constraints:
+ - custom_constraint: nova.flavor
+ GlanceHost:
+ type: string
+ default: '' # Has to be here because of the ignored empty value bug
+ GlancePort:
+ default: "9292"
+ description: Glance port.
+ type: string
+ GlanceProtocol:
+ default: http
+ description: Protocol to use when connecting to glance, set to https for SSL.
+ type: string
+ Image:
+ type: string
+ default: overcloud-compute
+ constraints:
+ - custom_constraint: glance.image
+ ImageUpdatePolicy:
+ default: 'REBUILD_PRESERVE_EPHEMERAL'
+ description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
+ type: string
+ KeyName:
+ description: Name of an existing EC2 KeyPair to enable SSH access to the instances
+ type: string
+ default: default
+ constraints:
+ - custom_constraint: nova.keypair
+ KeystoneHost:
+ type: string
+ default: ''
+ NeutronBridgeMappings:
+ description: >
+ The OVS logical->physical bridge mappings to use. See the Neutron
+ documentation for details. Defaults to mapping br-ex - the external
+ bridge on hosts - to a physical name 'datacentre' which can be used
+ to create provider networks (and we use this for the default floating
+ network) - if changing this either use different post-install network
+ scripts or be sure to keep 'datacentre' as a mapping network name.
+ type: string
+ default: ""
+ NeutronEnableTunnelling:
+ type: string
+ default: "True"
+ NeutronFlatNetworks:
+ type: string
+ default: ''
+ description: >
+ If set, flat networks to configure in neutron plugins.
+ NeutronHost:
+ type: string
+ default: '' # Has to be here because of the ignored empty value bug
+ NeutronNetworkType:
+ type: string
+ description: The tenant network type for Neutron, either gre or vxlan.
+ default: 'gre'
+ NeutronNetworkVLANRanges:
+ default: 'datacentre'
+ description: >
+ The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
+ Neutron documentation for permitted values. Defaults to permitting any
+ VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
+ type: string
+ NeutronPassword:
+ default: unset
+ description: The password for the neutron service account, used by neutron agents.
+ type: string
+ hidden: true
+ NeutronPhysicalBridge:
+ default: ''
+ description: An OVS bridge to create for accessing external networks.
+ type: string
+ NeutronPublicInterface:
+ default: nic1
+ description: A port to add to the NeutronPhysicalBridge.
+ type: string
+ NeutronTunnelTypes:
+ type: string
+ description: |
+ The tunnel types for the Neutron tenant network. To specify multiple
+ values, use a comma separated string, like so: 'gre,vxlan'
+ default: 'gre'
+ NeutronPublicInterfaceRawDevice:
+ default: ''
+ type: string
+ NeutronDVR:
+ default: 'False'
+ type: string
+ NeutronMetadataProxySharedSecret:
+ default: 'unset'
+ description: Shared secret to prevent spoofing
+ type: string
+ NeutronMechanismDrivers:
+ default: 'openvswitch'
+ description: |
+ The mechanism drivers for the Neutron tenant network. To specify multiple
+ values, use a comma separated string, like so: 'openvswitch,l2_population'
+ type: string
+ NeutronAllowL3AgentFailover:
+ default: 'True'
+ description: Allow automatic l3-agent failover
+ type: string
+ NeutronL3HA: #FIXME this isn't wired in
+ default: 'False'
+ description: Whether to enable l3-agent HA
+ type: string
+ NeutronAgentMode:
+ default: 'dvr_snat'
+ description: Agent mode for the neutron-l3-agent on the controller hosts
+ type: string
+ NovaApiHost:
+ type: string
+ default: '' # Has to be here because of the ignored empty value bug
+ NovaComputeDriver:
+ type: string
+ default: libvirt.LibvirtDriver
+ NovaComputeExtraConfig:
+ default: {}
+ description: |
+ NovaCompute specific configuration to inject into the cluster. Same
+ structure as ExtraConfig.
+ type: json
+ NovaComputeLibvirtType:
+ type: string
+ default: ''
+ NovaPassword:
+ default: unset
+ description: The password for the nova service account, used by nova-api.
+ type: string
+ hidden: true
+ NovaPublicIP:
+ type: string
+ default: '' # Has to be here because of the ignored empty value bug
+ NtpServer:
+ type: string
+ default: ''
+ RabbitHost:
+ type: string
+ default: '' # Has to be here because of the ignored empty value bug
+ RabbitPassword:
+ default: guest
+ description: The password for RabbitMQ
+ type: string
+ hidden: true
+ RabbitUserName:
+ default: guest
+ description: The username for RabbitMQ
+ type: string
+ SnmpdReadonlyUserName:
+ default: ro_snmp_user
+ description: The user name for SNMPd with readonly rights running on all Overcloud nodes
+ type: string
+ SnmpdReadonlyUserPassword:
+ default: unset
+ description: The user password for SNMPd with readonly rights running on all Overcloud nodes
+ type: string
+ hidden: true
+
+
+resources:
+
+ NovaCompute:
+ type: OS::Nova::Server
+ properties:
+ image:
+ {get_param: Image}
+ image_update_policy:
+ get_param: ImageUpdatePolicy
+ flavor: {get_param: Flavor}
+ key_name: {get_param: KeyName}
+ networks:
+ - network: ctlplane
+ user_data_format: SOFTWARE_CONFIG
+
+ NetworkConfig:
+ type: OS::TripleO::Net::SoftwareConfig
+
+ NetworkDeployment:
+ type: OS::TripleO::SoftwareDeployment
+ properties:
+ signal_transport: NO_SIGNAL
+ config: {get_attr: [NetworkConfig, config_id]}
+ server: {get_resource: NovaCompute}
+ input_values:
+ bridge_name: {get_param: NeutronPhysicalBridge}
+ interface_name: {get_param: NeutronPublicInterface}
+
+ ComputePuppetConfig:
+ type: OS::Heat::SoftwareConfig
+ properties:
+ group: puppet
+ outputs:
+ - name: result
+ config:
+ get_file: puppet/overcloud_compute.pp
+
+ ComputePuppetDeployment:
+ type: OS::Heat::StructuredDeployment
+ properties:
+ server: {get_resource: NovaCompute}
+ config: {get_resource: ComputePuppetConfig}
+
+ NovaComputeConfig:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config:
+ hiera:
+ hierarchy:
+ - heat_config_%{::deploy_config_name}
+ - compute
+ - common
+ datafiles:
+ common:
+ raw_data: {get_file: puppet/hieradata/common.yaml}
+ compute:
+ raw_data: {get_file: puppet/hieradata/compute.yaml}
+ oac_data:
+ nova::compute::vncserver_proxyclient_address: local-ipv4
+ mapped_data:
+ #nova::debug: {get_input: debug}
+ nova_compute_driver: {get_input: nova_compute_driver}
+ nova::compute::libvirt::libvirt_virt_type: {get_input: nova_compute_libvirt_type}
+ nova_api_host: {get_input: nova_api_host}
+ nova::compute::vncproxy_host: {get_input: nova_public_ip}
+ nova_password: {get_input: nova_password}
+ #ceilometer::debug: {get_input: debug}
+ ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
+ ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
+ ceilometer_compute_agent: {get_input: ceilometer_compute_agent}
+ snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
+ snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
+ glance_host: {get_input: glance_host}
+ glance_port: {get_input: glance_port}
+ glance_protocol: {get_input: glance_protocol}
+ keystone_host: {get_input: keystone_host}
+ #neutron::debug: {get_input: debug}
+ neutron_flat_networks: {get_input: neutron_flat_networks}
+ neutron_host: {get_input: neutron_host}
+ neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
+ neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
+ neutron_tunnel_types: {get_input: neutron_tunnel_types}
+ neutron::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
+ neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
+ neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
+ neutron_physical_bridge: {get_input: neutron_physical_bridge}
+ neutron_public_interface: {get_input: neutron_public_interface}
+ nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
+ neutron_router_distributed: {get_input: neutron_router_distributed}
+ neutron_agent_mode: {get_input: neutron_agent_mode}
+ neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
+ neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
+ neutron_allow_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
+ neutron_allow_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
+ neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
+ admin_password: {get_input: admin_password}
+ nova::rabbit_host: {get_input: rabbit_host}
+ neutron::rabbit_host: {get_input: rabbit_host}
+ ceilometer::rabbit_host: {get_input: rabbit_host}
+ nova::rabbit_userid: {get_input: rabbit_username}
+ neutron::rabbit_user: {get_input: rabbit_username}
+ ceilometer::rabbit_userid: {get_input: rabbit_username}
+ nova::rabbit_password: {get_input: rabbit_password}
+ neutron::rabbit_password: {get_input: rabbit_password}
+ ceilometer::rabbit_password: {get_input: rabbit_password}
+ ntp_server: {get_input: ntp_server}
+
+ NovaComputeDeployment:
+ type: OS::TripleO::SoftwareDeployment
+ properties:
+ signal_transport: NO_SIGNAL
+ config: {get_resource: NovaComputeConfig}
+ server: {get_resource: NovaCompute}
+ input_values:
+ debug: {get_param: Debug}
+ nova_compute_driver: {get_param: NovaComputeDriver}
+ nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
+ nova_public_ip: {get_param: NovaPublicIP}
+ nova_api_host: {get_param: NovaApiHost}
+ nova_password: {get_param: NovaPassword}
+ ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
+ ceilometer_password: {get_param: CeilometerPassword}
+ ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
+ snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
+ snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
+ glance_host: {get_param: GlanceHost}
+ glance_port: {get_param: GlancePort}
+ glance_protocol: {get_param: GlanceProtocol}
+ keystone_host: {get_param: KeystoneHost}
+ neutron_flat_networks: {get_param: NeutronFlatNetworks}
+ neutron_host: {get_param: NeutronHost}
+ neutron_local_ip: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+ neutron_tenant_network_type: {get_param: NeutronNetworkType}
+ neutron_tunnel_types: {get_param: NeutronTunnelTypes}
+ neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
+ neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
+ neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
+ neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
+ neutron_public_interface: {get_param: NeutronPublicInterface}
+ neutron_password: {get_param: NeutronPassword}
+ neutron_agent_mode: {get_param: NeutronAgentMode}
+ neutron_router_distributed: {get_param: NeutronDVR}
+ neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
+ neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
+ neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
+ neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
+ admin_password: {get_param: AdminPassword}
+ rabbit_host: {get_param: RabbitHost}
+ rabbit_username: {get_param: RabbitUserName}
+ rabbit_password: {get_param: RabbitPassword}
+ ntp_server: {get_param: NtpServer}
+
+outputs:
+ ip_address:
+ description: IP address of the server in the ctlplane network
+ value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+ hostname:
+ description: Hostname of the server
+ value: {get_attr: [NovaCompute, name]}
+ hosts_entry:
+ description: >
+ Server's IP address and hostname in the /etc/hosts format
+ value:
+ str_replace:
+ template: "IP HOST HOST.novalocal"
+ params:
+ IP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+ HOST: {get_attr: [NovaCompute, name]}
+ nova_server_resource:
+ description: Heat resource handle for the Nova compute server
+ value:
+ {get_resource: NovaCompute}
diff --git a/compute.yaml b/compute.yaml
index dbeeeb0c..60733586 100644
--- a/compute.yaml
+++ b/compute.yaml
@@ -258,16 +258,70 @@ resources:
interface_name: {get_param: NeutronPublicInterface}
NovaComputeConfig:
- type: OS::TripleO::Compute::SoftwareConfig
+ type: OS::Heat::StructuredConfig
properties:
- # allow configs to create sub-resources attached to the server
- server_id: {get_resource: NovaCompute}
+ group: os-apply-config
+ config:
+ nova:
+ compute_driver: { get_input: nova_compute_driver }
+ compute_libvirt_type: { get_input: nova_compute_libvirt_type }
+ debug: {get_input: debug}
+ host: {get_input: nova_api_host}
+ public_ip: {get_input: nova_public_ip}
+ service-password: {get_input: nova_password}
+ ceilometer:
+ debug: {get_input: debug}
+ metering_secret: {get_input: ceilometer_metering_secret}
+ service-password: {get_input: ceilometer_password}
+ compute_agent: {get_input: ceilometer_compute_agent}
+ snmpd:
+ export_MIB: UCD-SNMP-MIB
+ readonly_user_name: {get_input: snmpd_readonly_user_name}
+ readonly_user_password: {get_input: snmpd_readonly_user_password}
+ glance:
+ debug: {get_input: debug}
+ host: {get_input: glance_host}
+ port: {get_input: glance_port}
+ protocol: {get_input: glance_protocol}
+ keystone:
+ debug: {get_input: debug}
+ host: {get_input: keystone_host}
+ neutron:
+ debug: {get_input: debug}
+ flat-networks: {get_input: neutron_flat_networks}
+ host: {get_input: neutron_host}
+ router_distributed: {get_input: neutron_router_distributed}
+ agent_mode: {get_input: neutron_agent_mode}
+ ovs_db: {get_input: neutron_dsn}
+ metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
+ mechanism_drivers: {get_input: neutron_mechanism_drivers}
+ allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
+ l3_ha: {get_input: neutron_l3_ha}
+ ovs:
+ local_ip: {get_input: neutron_local_ip}
+ tenant_network_type: {get_input: neutron_tenant_network_type}
+ tunnel_types: {get_input: neutron_tunnel_types}
+ network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
+ bridge_mappings: {get_input: neutron_bridge_mappings}
+ enable_tunneling: {get_input: neutron_enable_tunneling}
+ physical_bridge: {get_input: neutron_physical_bridge}
+ public_interface: {get_input: neutron_public_interface}
+ public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
+ service-password: {get_input: neutron_password}
+ admin-password: {get_input: admin_password}
+ rabbit:
+ host: {get_input: rabbit_host}
+ username: {get_input: rabbit_username}
+ password: {get_input: rabbit_password}
+ ntp:
+ servers:
+ - {server: {get_input: ntp_server}}
NovaComputeDeployment:
type: OS::TripleO::SoftwareDeployment
properties:
signal_transport: NO_SIGNAL
- config: {get_attr: [NovaComputeConfig, config_id]}
+ config: {get_resource: NovaComputeConfig}
server: {get_resource: NovaCompute}
input_values:
debug: {get_param: Debug}
diff --git a/overcloud-resource-registry-puppet.yaml b/overcloud-resource-registry-puppet.yaml
index cb3c7c74..23cdf2a9 100644
--- a/overcloud-resource-registry-puppet.yaml
+++ b/overcloud-resource-registry-puppet.yaml
@@ -1,7 +1,6 @@
resource_registry:
OS::TripleO::BlockStorage: cinder-storage.yaml
- OS::TripleO::Compute: compute.yaml
- OS::TripleO::Compute::SoftwareConfig: compute-config-puppet.yaml
+ OS::TripleO::Compute: compute-puppet.yaml
OS::TripleO::SoftwareDeployment: OS::Heat::StructuredDeployment
OS::TripleO::Controller: controller-puppet.yaml
OS::TripleO::ObjectStorage: swift-storage.yaml
diff --git a/overcloud-resource-registry.yaml b/overcloud-resource-registry.yaml
index 03e790d6..8a1398b6 100644
--- a/overcloud-resource-registry.yaml
+++ b/overcloud-resource-registry.yaml
@@ -1,7 +1,6 @@
resource_registry:
OS::TripleO::BlockStorage: cinder-storage.yaml
OS::TripleO::Compute: compute.yaml
- OS::TripleO::Compute::SoftwareConfig: compute-config.yaml
OS::TripleO::SoftwareDeployment: OS::Heat::StructuredDeployment
OS::TripleO::Controller: controller.yaml
OS::TripleO::ObjectStorage: swift-storage.yaml