Pass -q option to yum
[apex-tripleo-heat-templates.git] / puppet / compute.yaml
index 6ae3913..8b2bcd3 100644 (file)
@@ -1,11 +1,10 @@
-heat_template_version: 2015-04-30
+heat_template_version: 2015-10-15
 
 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
@@ -16,12 +15,10 @@ parameters:
     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
@@ -61,7 +58,7 @@ parameters:
     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
+    description: Name of an existing Nova key pair to enable SSH access to the instances
     type: string
     default: default
     constraints:
@@ -80,7 +77,7 @@ parameters:
       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
+    type: comma_delimited_list
     default: "datacentre:br-ex"
   NeutronEnableTunnelling:
     type: string
@@ -91,7 +88,7 @@ parameters:
         Enable/disable the L2 population feature in the Neutron agents.
     default: "False"
   NeutronFlatNetworks:
-    type: string
+    type: comma_delimited_list
     default: 'datacentre'
     description: >
       If set, flat networks to configure in neutron plugins.
@@ -99,18 +96,17 @@ parameters:
     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.
+    type: comma_delimited_list
+    description: The tenant network type for Neutron.
     default: 'vxlan'
   NeutronNetworkVLANRanges:
-    default: 'datacentre'
+    default: 'datacentre:1:1000'
     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
@@ -123,22 +119,21 @@ parameters:
     description: A port to add to the NeutronPhysicalBridge.
     type: string
   NeutronTunnelTypes:
-    type: string
+    type: comma_delimited_list
     description: |
-        The tunnel types for the Neutron tenant network. To specify multiple
-        values, use a comma separated string, like so: 'gre,vxlan'
+        The tunnel types for the Neutron tenant network.
     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", ]
+    default: ["1:4094", ]
     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", ]
+    default: ["1:4094", ]
     type: comma_delimited_list
   NeutronPublicInterfaceRawDevice:
     default: ''
@@ -147,7 +142,6 @@ parameters:
     default: 'False'
     type: string
   NeutronMetadataProxySharedSecret:
-    default: 'unset'
     description: Shared secret to prevent spoofing
     type: string
     hidden: true
@@ -158,7 +152,7 @@ parameters:
         from neutron.core_plugins namespace.
     type: string
   NeutronServicePlugins:
-    default: "router"
+    default: "router,qos"
     description: |
         Comma-separated list of service plugin entrypoints to be loaded from the
         neutron.service_plugins namespace.
@@ -171,9 +165,13 @@ parameters:
   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
+        The mechanism drivers for the Neutron tenant network.
+    type: comma_delimited_list
+  NeutronAgentExtensions:
+    default: "qos"
+    description: |
+        Comma-separated list of extensions enabled for the Neutron agents.
+    type: comma_delimited_list
   # Not relevant for Computes, should be removed
   NeutronAllowL3AgentFailover:
     default: 'True'
@@ -202,19 +200,30 @@ parameters:
     type: json
   NovaComputeLibvirtType:
     type: string
+    default: kvm
+  NovaComputeLibvirtVifDriver:
     default: ''
+    description: Libvirt VIF driver configuration for the network
+    type: string
   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
+  NovaOVSBridge:
+    default: 'br-int'
+    description: Name of integration bridge used by Open vSwitch
+    type: string
+  NovaSecurityGroupAPI:
+    default: 'neutron'
+    description: The full class name of the security API class
+    type: string
   NtpServer:
     default: ''
     description: Comma-separated list of ntp servers
@@ -246,7 +255,6 @@ parameters:
     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
@@ -264,6 +272,10 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  TimeZone:
+    default: 'UTC'
+    description: The timezone to be set on compute nodes.
+    type: string
   UpdateIdentifier:
     default: ''
     type: string
@@ -278,6 +290,29 @@ parameters:
     description: >
       Heat action when to apply network configuration changes
     default: ['CREATE']
+  SoftwareConfigTransport:
+    default: POLL_SERVER_CFN
+    description: |
+      How the server should receive the metadata required for software configuration.
+    type: string
+    constraints:
+    - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
+  CloudDomain:
+    default: ''
+    type: string
+    description: >
+      The DNS domain used for the hosts. This should match the dhcp_domain
+      configured in the Undercloud neutron. Defaults to localdomain.
+  ServerMetadata:
+    default: {}
+    description: >
+      Extra properties or metadata passed to Nova for the created nodes in
+      the overcloud. It's accessible via the Nova metadata API.
+    type: json
+  SchedulerHints:
+    type: json
+    description: Optional scheduler hints to pass to nova
+    default: {}
 
 resources:
 
@@ -295,6 +330,9 @@ resources:
       user_data_format: SOFTWARE_CONFIG
       user_data: {get_resource: UserData}
       name: {get_param: Hostname}
+      software_config_transport: {get_param: SoftwareConfigTransport}
+      metadata: {get_param: ServerMetadata}
+      scheduler_hints: {get_param: SchedulerHints}
 
   # Combine the NodeAdminUserData and NodeUserData mime archives
   UserData:
@@ -316,6 +354,11 @@ resources:
   NodeUserData:
     type: OS::TripleO::NodeUserData
 
+  ExternalPort:
+    type: OS::TripleO::Compute::Ports::ExternalPort
+    properties:
+      ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+
   InternalApiPort:
     type: OS::TripleO::Compute::Ports::InternalApiPort
     properties:
@@ -326,30 +369,47 @@ resources:
     properties:
       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
 
+  StorageMgmtPort:
+    type: OS::TripleO::Compute::Ports::StorageMgmtPort
+    properties:
+      ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+
   TenantPort:
     type: OS::TripleO::Compute::Ports::TenantPort
     properties:
       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
 
+  ManagementPort:
+    type: OS::TripleO::Compute::Ports::ManagementPort
+    properties:
+      ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+
   NetIpMap:
     type: OS::TripleO::Network::Ports::NetIpMap
     properties:
       ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+      ExternalIp: {get_attr: [ExternalPort, ip_address]}
       InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
       StorageIp: {get_attr: [StoragePort, ip_address]}
+      StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
       TenantIp: {get_attr: [TenantPort, ip_address]}
+      ManagementIp: {get_attr: [ManagementPort, ip_address]}
 
   NetworkConfig:
     type: OS::TripleO::Compute::Net::SoftwareConfig
     properties:
       ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+      ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
+      StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
+      ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
 
   NetworkDeployment:
     type: OS::TripleO::SoftwareDeployment
     properties:
+      name: NetworkDeployment
       config: {get_resource: NetworkConfig}
       server: {get_resource: NovaCompute}
       actions: {get_param: NetworkDeploymentActions}
@@ -375,6 +435,8 @@ resources:
             - '"%{::osfamily}"'
             - common
             - cisco_n1kv_data  # Optionally provided by ComputeExtraConfigPre
+            - nova_nuage_data  # Optionally provided by ComputeExtraConfigPre
+            - midonet_data # Optionally provided by AllNodesExtraConfig
           datafiles:
             compute_extraconfig:
               mapped_data: {get_param: NovaComputeExtraConfig}
@@ -395,12 +457,15 @@ resources:
                 nova::rabbit_port: {get_input: rabbit_client_port}
                 nova_compute_driver: {get_input: nova_compute_driver}
                 nova::compute::libvirt::libvirt_virt_type: {get_input: nova_compute_libvirt_type}
+                nova::compute::neutron::libvirt_vif_driver: {get_input: nova_compute_libvirt_vif_driver}
                 nova_api_host: {get_input: nova_api_host}
                 nova::compute::vncproxy_host: {get_input: nova_public_ip}
                 nova::compute::rbd::ephemeral_storage: {get_input: nova_enable_rbd_backend}
                 rbd_persistent_storage: {get_input: cinder_enable_rbd_backend}
                 nova_password: {get_input: nova_password}
                 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
+                nova::network::neutron::neutron_ovs_bridge: {get_input: nova_ovs_bridge}
+                nova::network::neutron::security_group_api: {get_input: nova_security_group_api}
                 ceilometer::debug: {get_input: debug}
                 ceilometer::rabbit_userid: {get_input: rabbit_username}
                 ceilometer::rabbit_password: {get_input: rabbit_password}
@@ -418,16 +483,17 @@ resources:
                 neutron::rabbit_user: {get_input: rabbit_username}
                 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
                 neutron::rabbit_port: {get_input: rabbit_client_port}
-                neutron_flat_networks: {get_input: neutron_flat_networks}
+                neutron::plugins::ml2::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::plugins::ml2::tenant_network_types: {get_input: neutron_tenant_network_types}
+                neutron::agents::ml2::ovs::tunnel_types: {get_input: neutron_tunnel_types}
+                neutron::agents::ml2::ovs::extensions: {get_input: neutron_agent_extensions}
                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
                 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
                 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
-                neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
+                neutron::agents::ml2::ovs::bridge_mappings: {get_input: neutron_bridge_mappings}
                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
                 neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
                 neutron_physical_bridge: {get_input: neutron_physical_bridge}
@@ -441,10 +507,12 @@ resources:
                 neutron::core_plugin: {get_input: neutron_core_plugin}
                 neutron::service_plugins: {get_input: neutron_service_plugins}
                 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
-                neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
+                neutron::plugins::ml2::mechanism_drivers: {get_input: neutron_mechanism_drivers}
                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
+                keystone_public_api_virtual_ip: {get_input: keystone_vip}
                 admin_password: {get_input: admin_password}
                 ntp::servers: {get_input: ntp_servers}
+                timezone::timezone: {get_input: timezone}
                 tripleo::packages::enable_install: {get_input: enable_package_install}
                 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
 
@@ -452,6 +520,7 @@ resources:
     type: OS::TripleO::SoftwareDeployment
     depends_on: NetworkDeployment
     properties:
+      name: NovaComputeDeployment
       config: {get_resource: NovaComputeConfig}
       server: {get_resource: NovaCompute}
       input_values:
@@ -459,12 +528,15 @@ resources:
         debug: {get_param: Debug}
         nova_compute_driver: {get_param: NovaComputeDriver}
         nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
+        nova_compute_libvirt_vif_driver: {get_param: NovaComputeLibvirtVifDriver}
         nova_public_ip: {get_param: NovaPublicIP}
         nova_api_host: {get_param: NovaApiHost}
         nova_password: {get_param: NovaPassword}
         nova_enable_rbd_backend: {get_param: NovaEnableRbdBackend}
         cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
         nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
+        nova_ovs_bridge: {get_param: NovaOVSBridge}
+        nova_security_group_api: {get_param: NovaSecurityGroupAPI}
         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
         ceilometer_password: {get_param: CeilometerPassword}
         ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
@@ -472,36 +544,43 @@ resources:
         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
         glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
-        neutron_flat_networks: {get_param: NeutronFlatNetworks}
+        neutron_flat_networks:
+          str_replace:
+            template: NETWORKS
+            params:
+              NETWORKS: {get_param: NeutronFlatNetworks}
         neutron_host: {get_param: NeutronHost}
         neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
-        neutron_tenant_network_type: {get_param: NeutronNetworkType}
-        neutron_tunnel_types: {get_param: NeutronTunnelTypes}
         neutron_tunnel_id_ranges:
           str_replace:
-            template: "['RANGES']"
+            template: RANGES
             params:
-              RANGES:
-                list_join:
-                - "','"
-                - {get_param: NeutronTunnelIdRanges}
+              RANGES: {get_param: NeutronTunnelIdRanges}
         neutron_vni_ranges:
           str_replace:
-            template: "['RANGES']"
+            template: RANGES
+            params:
+              RANGES: {get_param: NeutronVniRanges}
+        neutron_tenant_network_types:
+          str_replace:
+            template: TYPES
+            params:
+              TYPES: {get_param: NeutronNetworkType}
+        neutron_tunnel_types:
+          str_replace:
+            template: TYPES
             params:
-              RANGES:
-                list_join:
-                - "','"
-                - {get_param: NeutronVniRanges}
+              TYPES: {get_param: NeutronTunnelTypes}
         neutron_network_vlan_ranges:
           str_replace:
-            template: "['RANGES']"
+            template: RANGES
             params:
-              RANGES:
-                list_join:
-                - "','"
-                - {get_param: NeutronNetworkVLANRanges}
-        neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
+              RANGES: {get_param: NeutronNetworkVLANRanges}
+        neutron_bridge_mappings:
+          str_replace:
+            template: MAPPINGS
+            params:
+              MAPPINGS: {get_param: NeutronBridgeMappings}
         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
         neutron_enable_l2pop: {get_param: NeutronEnableL2Pop}
         neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
@@ -513,33 +592,45 @@ resources:
         neutron_core_plugin: {get_param: NeutronCorePlugin}
         neutron_service_plugins:
           str_replace:
-            template: "['PLUGINS']"
+            template: PLUGINS
             params:
-              PLUGINS:
-                list_join:
-                - "','"
-                - {get_param: NeutronServicePlugins}
+              PLUGINS: {get_param: NeutronServicePlugins}
         neutron_type_drivers:
           str_replace:
-            template: "['DRIVERS']"
+            template: DRIVERS
+            params:
+              DRIVERS: {get_param: NeutronTypeDrivers}
+        neutron_mechanism_drivers:
+          str_replace:
+            template: MECHANISMS
             params:
-              DRIVERS:
-                list_join:
-                - "','"
-                - {get_param: NeutronTypeDrivers}
-        neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
+              MECHANISMS: {get_param: NeutronMechanismDrivers}
+        neutron_agent_extensions:
+          str_replace:
+            template: AGENT_EXTENSIONS
+            params:
+              AGENT_EXTENSIONS: {get_param: NeutronAgentExtensions}
         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
         neutron_internal_url: {get_param: [EndpointMap, NeutronInternal, uri]}
         neutron_admin_auth_url: {get_param: [EndpointMap, KeystoneAdmin, uri]}
+        keystone_vip: {get_param: KeystonePublicApiVirtualIP}
         admin_password: {get_param: AdminPassword}
         rabbit_username: {get_param: RabbitUserName}
         rabbit_password: {get_param: RabbitPassword}
         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
         rabbit_client_port: {get_param: RabbitClientPort}
         ntp_servers: {get_param: NtpServer}
+        timezone: {get_param: TimeZone}
         enable_package_install: {get_param: EnablePackageInstall}
         enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
 
+  # Resource for site-specific injection of root certificate
+  NodeTLSCAData:
+    depends_on: NovaComputeDeployment
+    type: OS::TripleO::NodeTLSCAData
+    properties:
+      server: {get_resource: NovaCompute}
+
   # Hook for site-specific additional pre-deployment config, e.g extra hieradata
   ComputeExtraConfigPre:
     depends_on: NovaComputeDeployment
@@ -550,7 +641,7 @@ resources:
   # Hook for site-specific additional pre-deployment config,
   # applying to all nodes, e.g node registration/unregistration
   NodeExtraConfig:
-    depends_on: ComputeExtraConfigPre
+    depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
     type: OS::TripleO::NodeExtraConfig
     properties:
         server: {get_resource: NovaCompute}
@@ -561,6 +652,7 @@ resources:
   UpdateDeployment:
     type: OS::Heat::SoftwareDeployment
     properties:
+      name: UpdateDeployment
       config: {get_resource: UpdateConfig}
       server: {get_resource: NovaCompute}
       input_values:
@@ -571,15 +663,24 @@ outputs:
   ip_address:
     description: IP address of the server in the ctlplane network
     value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+  external_ip_address:
+    description: IP address of the server in the external network
+    value: {get_attr: [ExternalPort, ip_address]}
   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]}
+  storage_mgmt_ip_address:
+    description: IP address of the server in the storage_mgmt network
+    value: {get_attr: [StorageMgmtPort, ip_address]}
   tenant_ip_address:
     description: IP address of the server in the tenant network
     value: {get_attr: [TenantPort, ip_address]}
+  management_ip_address:
+    description: IP address of the server in the management network
+    value: {get_attr: [ManagementPort, ip_address]}
   hostname:
     description: Hostname of the server
     value: {get_attr: [NovaCompute, name]}
@@ -588,9 +689,10 @@ outputs:
       Server's IP address and hostname in the /etc/hosts format
     value:
       str_replace:
-        template: "IP HOST.localdomain HOST"
+        template: "IP HOST.DOMAIN HOST"
         params:
           IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
+          DOMAIN: {get_param: CloudDomain}
           HOST: {get_attr: [NovaCompute, name]}
   nova_server_resource:
     description: Heat resource handle for the Nova compute server
@@ -602,5 +704,6 @@ outputs:
       list_join:
       - ','
       - - {get_attr: [NovaComputeDeployment, deploy_stdout]}
+        - {get_attr: [NodeTLSCAData, deploy_stdout]}
         - {get_attr: [ComputeExtraConfigPre, deploy_stdout]}
         - {get_param: UpdateIdentifier}