aboutsummaryrefslogtreecommitdiffstats
path: root/os-apply-config/compute.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'os-apply-config/compute.yaml')
-rw-r--r--os-apply-config/compute.yaml562
1 files changed, 562 insertions, 0 deletions
diff --git a/os-apply-config/compute.yaml b/os-apply-config/compute.yaml
new file mode 100644
index 00000000..ee55c587
--- /dev/null
+++ b/os-apply-config/compute.yaml
@@ -0,0 +1,562 @@
+heat_template_version: 2015-04-30
+
+description: >
+ OpenStack hypervisor node. Can be wrapped in a ResourceGroup for scaling.
+
+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
+ CinderEnableNfsBackend:
+ default: false
+ description: Whether to enable or not the NFS backend for Cinder
+ type: boolean
+ CinderEnableRbdBackend:
+ default: false
+ description: Whether to enable or not the Rbd backend for Cinder
+ type: boolean
+ 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
+ KeystoneAdminApiVirtualIP:
+ type: string
+ default: ''
+ KeystonePublicApiVirtualIP:
+ 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: "datacentre:br-ex"
+ NeutronEnableTunnelling:
+ type: string
+ default: "True"
+ NeutronFlatNetworks:
+ type: string
+ default: 'datacentre'
+ 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: 'vxlan'
+ 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: comma_delimited_list
+ 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: 'vxlan'
+ NeutronTunnelIdRanges:
+ description: |
+ Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
+ of GRE tunnel IDs that are available for tenant network allocation
+ default: ["1:1000", ]
+ type: comma_delimited_list
+ NeutronVniRanges:
+ description: |
+ Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
+ of VXLAN VNI IDs that are available for tenant network allocation
+ default: ["1:1000", ]
+ type: comma_delimited_list
+ NeutronPublicInterfaceRawDevice:
+ default: ''
+ type: string
+ NeutronDVR:
+ default: 'False'
+ type: string
+ NeutronMetadataProxySharedSecret:
+ default: 'unset'
+ description: Shared secret to prevent spoofing
+ type: string
+ hidden: true
+ NeutronCorePlugin:
+ default: "ml2"
+ description: |
+ The core plugin for Neutron. The value should be the entrypoint to be loaded
+ from neutron.core_plugins namespace.
+ type: string
+ NeutronServicePlugins:
+ default: "router"
+ description: |
+ Comma-separated list of service plugin entrypoints to be loaded from the
+ neutron.service_plugins namespace.
+ type: comma_delimited_list
+ NeutronTypeDrivers:
+ default: "vxlan,vlan,flat,gre"
+ description: |
+ Comma-separated list of network type driver entrypoints to be loaded.
+ type: comma_delimited_list
+ 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
+ # Not relevant for Computes, should be removed
+ NeutronAllowL3AgentFailover:
+ default: 'True'
+ description: Allow automatic l3-agent failover
+ type: string
+ # Not relevant for Computes, should be removed
+ NeutronL3HA:
+ 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: ''
+ NovaEnableRbdBackend:
+ default: false
+ description: Whether to enable or not the Rbd backend for Nova
+ type: boolean
+ 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
+ RabbitClientUseSSL:
+ default: false
+ description: >
+ Rabbit client subscriber parameter to specify
+ an SSL connection to the RabbitMQ host.
+ type: string
+ RabbitClientPort:
+ default: 5672
+ description: Set rabbit subscriber port, change this if using SSL
+ type: number
+ 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
+ ServiceNetMap:
+ default: {}
+ description: Mapping of service_name -> network name. Typically set
+ via parameter_defaults in the resource registry.
+ type: json
+ UpdateIdentifier:
+ default: ''
+ type: string
+ description: >
+ Setting to a previously unused value during stack-update will trigger
+ package update on all nodes
+ Hostname:
+ type: string
+ default: '' # Defaults to Heat created hostname
+
+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
+ user_data: {get_resource: NodeUserData}
+ name: {get_param: Hostname}
+
+ NodeUserData:
+ type: OS::TripleO::NodeUserData
+
+ InternalApiPort:
+ type: OS::TripleO::Compute::Ports::InternalApiPort
+ properties:
+ ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+
+ StoragePort:
+ type: OS::TripleO::Compute::Ports::StoragePort
+ properties:
+ ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+
+ TenantPort:
+ type: OS::TripleO::Compute::Ports::TenantPort
+ properties:
+ ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+
+ NetworkConfig:
+ type: OS::TripleO::Compute::Net::SoftwareConfig
+ properties:
+ ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+ InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
+ StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
+ TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
+
+ NetworkDeployment:
+ type: OS::TripleO::SoftwareDeployment
+ properties:
+ signal_transport: NO_SIGNAL
+ config: {get_resource: NetworkConfig}
+ server: {get_resource: NovaCompute}
+ input_values:
+ bridge_name: {get_param: NeutronPhysicalBridge}
+ interface_name: {get_param: NeutronPublicInterface}
+
+ NovaComputeConfig:
+ 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}
+ core_plugin: {get_input: neutron_core_plugin}
+ service_plugins: {get_input: neutron_service_plugins}
+ type_drivers: {get_input: neutron_type_drivers}
+ 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}
+ tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
+ vni_ranges: {get_input: neutron_vni_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_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: KeystonePublicApiVirtualIP}
+ 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_tunnel_id_ranges:
+ str_replace:
+ template: "['RANGES']"
+ params:
+ RANGES:
+ list_join:
+ - "','"
+ - {get_param: NeutronTunnelIdRanges}
+ neutron_vni_ranges:
+ str_replace:
+ template: "['RANGES']"
+ params:
+ RANGES:
+ list_join:
+ - "','"
+ - {get_param: NeutronVniRanges}
+ 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_core_plugin: {get_param: NeutronCorePlugin}
+ neutron_service_plugins:
+ str_replace:
+ template: "['PLUGINS']"
+ params:
+ PLUGINS:
+ list_join:
+ - "','"
+ - {get_param: NeutronServicePlugins}
+ neutron_type_drivers:
+ str_replace:
+ template: "['DRIVERS']"
+ params:
+ DRIVERS:
+ list_join:
+ - "','"
+ - {get_param: NeutronTypeDrivers}
+ neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
+ neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
+ neutron_l3_ha: {get_param: NeutronL3HA}
+ 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}
+
+ NovaComputePassthrough:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config: {get_input: passthrough_config}
+
+ NovaComputePassthroughSpecific:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config: {get_input: passthrough_config_specific}
+
+ NovaComputePassthroughDeployment:
+ depends_on: [NovaComputeDeployment]
+ type: OS::Heat::StructuredDeployment
+ properties:
+ config: {get_resource: NovaComputePassthrough}
+ server: {get_resource: NovaCompute}
+ signal_transport: NO_SIGNAL
+ input_values:
+ passthrough_config: {get_param: ExtraConfig}
+
+ NovaComputePassthroughDeploymentSpecific:
+ depends_on: [NovaComputePassthroughDeployment]
+ type: OS::Heat::StructuredDeployment
+ properties:
+ config: {get_resource: NovaComputePassthroughSpecific}
+ server: {get_resource: NovaCompute}
+ signal_transport: NO_SIGNAL
+ input_values:
+ passthrough_config_specific: {get_param: NovaComputeExtraConfig}
+
+outputs:
+ ip_address:
+ description: IP address of the server in the ctlplane network
+ value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+ internal_api_ip_address:
+ description: IP address of the server in the internal_api network
+ value: {get_attr: [InternalApiPort, ip_address]}
+ storage_ip_address:
+ description: IP address of the server in the storage network
+ value: {get_attr: [StoragePort, ip_address]}
+ tenant_ip_address:
+ description: IP address of the server in the tenant network
+ value: {get_attr: [TenantPort, ip_address]}
+ 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"
+ 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}
+ config_identifier:
+ description: identifier which changes if the node configuration may need re-applying
+ value: "None - NO_SIGNAL"