diff options
-rw-r--r-- | compute-config-puppet.yaml | 112 | ||||
-rw-r--r-- | compute-config.yaml | 8 | ||||
-rw-r--r-- | compute.yaml | 6 | ||||
-rw-r--r-- | controller.yaml | 5 | ||||
-rw-r--r-- | nova-compute-config.yaml | 1 | ||||
-rw-r--r-- | nova-compute-instance.yaml | 3 | ||||
-rw-r--r-- | overcloud-resource-registry-puppet.yaml | 8 | ||||
-rw-r--r-- | overcloud-source.yaml | 11 | ||||
-rw-r--r-- | overcloud-without-mergepy.yaml | 6 | ||||
-rw-r--r-- | puppet/hieradata/common.yaml | 1 | ||||
-rw-r--r-- | puppet/hieradata/compute.yaml | 20 | ||||
-rw-r--r-- | puppet/overcloud_compute.pp | 58 |
12 files changed, 217 insertions, 22 deletions
diff --git a/compute-config-puppet.yaml b/compute-config-puppet.yaml new file mode 100644 index 00000000..8414579c --- /dev/null +++ b/compute-config-puppet.yaml @@ -0,0 +1,112 @@ +# 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_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} + +outputs: + config_id: + description: The ID of the NovaComputeConfigImpl resource. + value: + {get_resource: NovaComputeConfigImpl} diff --git a/compute-config.yaml b/compute-config.yaml index 45bb8e1e..9698cc3b 100644 --- a/compute-config.yaml +++ b/compute-config.yaml @@ -3,6 +3,13 @@ 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 @@ -17,7 +24,6 @@ resources: public_ip: {get_input: nova_public_ip} service-password: {get_input: nova_password} ceilometer: - db: {get_input: ceilometer_dsn} debug: {get_input: debug} metering_secret: {get_input: ceilometer_metering_secret} service-password: {get_input: ceilometer_password} diff --git a/compute.yaml b/compute.yaml index c0a69afe..66d4bef0 100644 --- a/compute.yaml +++ b/compute.yaml @@ -15,8 +15,6 @@ parameters: default: '' constraints: - allowed_values: ['', Present] - CeilometerDSN: - type: string CeilometerMeteringSecret: default: unset description: Secret shared by the ceilometer services. @@ -257,6 +255,9 @@ resources: NovaComputeConfig: type: OS::TripleO::Compute::SoftwareConfig + properties: + # allow configs to create sub-resources attached to the server + server_id: {get_resource: NovaCompute} NovaComputeDeployment: type: OS::TripleO::SoftwareDeployment @@ -271,7 +272,6 @@ resources: nova_public_ip: {get_param: NovaPublicIP} nova_api_host: {get_param: NovaApiHost} nova_password: {get_param: NovaPassword} - ceilometer_dsn: {get_param: CeilometerDSN} ceilometer_metering_secret: {get_param: CeilometerMeteringSecret} ceilometer_password: {get_param: CeilometerPassword} ceilometer_compute_agent: {get_param: CeilometerComputeAgent} diff --git a/controller.yaml b/controller.yaml index 9b3745dc..6d1c2121 100644 --- a/controller.yaml +++ b/controller.yaml @@ -170,8 +170,9 @@ parameters: description: A unique identifier of the MySQL cluster the controller is in. type: string default: 'unset' # Has to be here because of the ignored empty value bug - constraints: - - length: {min: 4, max: 10} + # Drop the validation: https://bugs.launchpad.net/tripleo/+bug/1405446 + # constraints: + # - length: {min: 4, max: 10} MysqlInnodbBufferPoolSize: description: > Specifies the size of the buffer pool in megabytes. Setting to diff --git a/nova-compute-config.yaml b/nova-compute-config.yaml index 2d8168c0..8129cfa1 100644 --- a/nova-compute-config.yaml +++ b/nova-compute-config.yaml @@ -12,7 +12,6 @@ resources: public_ip: {get_input: nova_public_ip} service-password: {get_input: nova_password} ceilometer: - db: {get_input: ceilometer_dsn} debug: {get_param: Debug} metering_secret: {get_input: ceilometer_metering_secret} service-password: {get_input: ceilometer_password} diff --git a/nova-compute-instance.yaml b/nova-compute-instance.yaml index 639d971e..70172cb2 100644 --- a/nova-compute-instance.yaml +++ b/nova-compute-instance.yaml @@ -15,8 +15,6 @@ parameters: default: '' constraints: - allowed_values: ['', Present] - CeilometerDSN: - type: string CeilometerMeteringSecret: default: unset description: Secret shared by the ceilometer services. @@ -210,7 +208,6 @@ resources: nova_public_ip: {get_param: NovaPublicIP} nova_api_host: {get_param: NovaApiHost} nova_password: {get_param: NovaPassword} - ceilometer_dsn: {get_param: CeilometerDSN} ceilometer_metering_secret: {get_param: CeilometerMeteringSecret} ceilometer_password: {get_param: CeilometerPassword} ceilometer_compute_agent: {get_param: CeilometerComputeAgent} diff --git a/overcloud-resource-registry-puppet.yaml b/overcloud-resource-registry-puppet.yaml new file mode 100644 index 00000000..30afa813 --- /dev/null +++ b/overcloud-resource-registry-puppet.yaml @@ -0,0 +1,8 @@ +resource_registry: + OS::TripleO::BlockStorage: cinder-storage.yaml + OS::TripleO::Compute: compute.yaml + OS::TripleO::Compute::SoftwareConfig: compute-config-puppet.yaml + OS::TripleO::SoftwareDeployment: OS::Heat::StructuredDeployment + OS::TripleO::Controller: controller.yaml + OS::TripleO::ObjectStorage: swift-storage.yaml + OS::TripleO::Net::SoftwareConfig: net-config-bridge.yaml diff --git a/overcloud-source.yaml b/overcloud-source.yaml index ee759ea7..a3d1e34f 100644 --- a/overcloud-source.yaml +++ b/overcloud-source.yaml @@ -116,6 +116,10 @@ parameters: description: The filepath of the file to use for logging messages from Glance. type: string default: '' + HorizonPort: + type: number + default: 80 + description: Horizon web server port. GlancePassword: default: unset description: The password for the glance service account, used by the glance services. @@ -419,12 +423,6 @@ resources: GlanceHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} RabbitHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} - CeilometerDSN: - Fn::Join: - - '' - - - mysql://ceilometer:unset@ - - &compute_database_host {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} - - /ceilometer NeutronNetworkType: get_param: NeutronNetworkType NeutronTunnelTypes: @@ -571,6 +569,7 @@ resources: metadata_server_url: {get_input: heat.metadata_server_url} waitcondition_server_url: {get_input: heat.waitcondition_server_url} horizon: + port: {get_param: HorizonPort} caches: memcached: nodes: diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml index d07d6856..f704abaa 100644 --- a/overcloud-without-mergepy.yaml +++ b/overcloud-without-mergepy.yaml @@ -579,12 +579,6 @@ resources: RabbitUserName: {get_param: RabbitUserName} SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName} SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword} - CeilometerDSN: - list_join: - - '' - - - mysql://ceilometer:unset@ - - &compute_database_host {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} - - /ceilometer BlockStorage: type: OS::Heat::ResourceGroup diff --git a/puppet/hieradata/common.yaml b/puppet/hieradata/common.yaml new file mode 100644 index 00000000..884be6af --- /dev/null +++ b/puppet/hieradata/common.yaml @@ -0,0 +1 @@ +# Common Hiera data gets applied to all nodes diff --git a/puppet/hieradata/compute.yaml b/puppet/hieradata/compute.yaml new file mode 100644 index 00000000..ffa716a4 --- /dev/null +++ b/puppet/hieradata/compute.yaml @@ -0,0 +1,20 @@ +# Hiera data here applies to all compute nodes + +nova::notify_on_state_change: 'vm_and_task_state' + +nova::compute::enabled: true +nova::compute::instance_usage_audit: true +nova::compute::instance_usage_audit_period: 'hour' +nova::compute::vnc_enabled: true + +nova::compute::libvirt::vncserver_listen: '0.0.0.0' +nova::compute::libvirt::migration_support: true + +nova::network::neutron::neutron_admin_tenant_name: 'service' +nova::network::neutron::neutron_admin_username: 'neutron' +nova::network::neutron::vif_plugging_is_fatal: false +nova::network::neutron::vif_plugging_timeout: 30 + +neutron::plugins::ml2::tunnel_id_ranges: ['1:1000'] + +ceilometer::agent::auth::auth_tenant_name: 'service' diff --git a/puppet/overcloud_compute.pp b/puppet/overcloud_compute.pp new file mode 100644 index 00000000..798fb544 --- /dev/null +++ b/puppet/overcloud_compute.pp @@ -0,0 +1,58 @@ +# 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. + +class { 'nova': + glance_api_servers => join([hiera('glance_protocol'), '://', hiera('glance_host'), ':', hiera('glance_port')]), +} + +file { ['/etc/libvirt/qemu/networks/autostart/default.xml', + '/etc/libvirt/qemu/networks/default.xml']: + ensure => absent, + before => Service['libvirt'] +} + +include ::nova::compute + +nova_config { + 'DEFAULT/my_ip': value => $ipaddress; + 'DEFAULT/linuxnet_interface_driver': value => 'nova.network.linux_net.LinuxOVSInterfaceDriver'; +} + +include ::nova::compute::libvirt + +class { 'nova::network::neutron': + neutron_admin_auth_url => join(['http://', hiera('neutron_host'), ':35357/v2.0']), + neutron_url => join(['http://', hiera('neutron_host'), ':9696']), +} + +include ::neutron + +class { 'neutron::plugins::ml2': + flat_networks => split(hiera('neutron_flat_networks'), ','), + tenant_network_types => [hiera('neutron_tenant_network_type')], + type_drivers => [hiera('neutron_tenant_network_type')], +} + +class { 'neutron::agents::ml2::ovs': + bridge_mappings => split(hiera('neutron_bridge_mappings'), ','), + tunnel_types => split(hiera('neutron_tunnel_types'), ','), +} + +include ::ceilometer +include ::ceilometer::agent::compute + +class { 'ceilometer::agent::auth': + auth_url => join(['http://', hiera('keystone_host'), ':5000/v2.0']), +} |