Merge "DB connection: prevent src address from binding to a VIP"
[apex-tripleo-heat-templates.git] / puppet / services / nova-base.yaml
index 9b1b076..bf8e46b 100644 (file)
@@ -1,9 +1,18 @@
-heat_template_version: 2016-04-08
+heat_template_version: ocata
 
 description: >
   OpenStack Nova base service. Shared for all Nova services.
 
 parameters:
+  ServiceNetMap:
+    default: {}
+    description: Mapping of service_name -> network name. Typically set
+                 via parameter_defaults in the resource registry.  This
+                 mapping overrides those in ServiceNetMapDefaults.
+    type: json
+  DefaultPasswords:
+    default: {}
+    type: json
   EndpointMap:
     default: {}
     description: Mapping of service endpoint -> protocol. Typically set
@@ -57,6 +66,9 @@ parameters:
     type: string
     description: Nova Compute upgrade level
     default: ''
+conditions:
+
+  compute_upgrade_level_empty: {equals : [{get_param: UpgradeLevelNovaCompute}, '']}
 
 outputs:
   role_data:
@@ -64,71 +76,64 @@ outputs:
     value:
       service_name: nova_base
       config_settings:
-        nova::rabbit_password: {get_param: RabbitPassword}
-        nova::rabbit_userid: {get_param: RabbitUserName}
-        nova::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
-        nova::rabbit_port: {get_param: RabbitClientPort}
-        nova::database_connection:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://nova:'
-              - {get_param: NovaPassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/nova'
-        nova::api_database_connection:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://nova_api:'
-              - {get_param: NovaPassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/nova_api'
-        nova::db::mysql::password: {get_input: nova_password}
-        nova::db::mysql::user: nova
-        nova::db::mysql::host: {get_param: [EndpointMap, MysqlInternal, host_nobrackets]}
-        nova::db::mysql::dbname: nova
-        nova::db::mysql::allowed_hosts:
-          - '%'
-          - "%{hiera('mysql_bind_host')}"
-        nova::db::mysql_api::password: {get_input: nova_password}
-        nova::db::mysql_api::user: nova_api
-        nova::db::mysql_api::host: {get_param: [EndpointMap, MysqlInternal, host_nobrackets]}
-        nova::db::mysql_api::dbname: nova_api
-        nova::db::mysql_api::allowed_hosts:
-          - '%'
-          - "%{hiera('mysql_bind_host')}"
-        nova::debug: {get_param: Debug}
-        nova::purge_config: {get_param: EnableConfigPurge}
-        nova::network::neutron::neutron_project_name: 'service'
-        nova::network::neutron::neutron_username: 'neutron'
-        nova::network::neutron::dhcp_domain: ''
-        nova::network::neutron::neutron_password: {get_param: NeutronPassword}
-        nova::network::neutron::neutron_url: {get_param: [EndpointMap, NeutronInternal, uri]}
-        nova::network::neutron::neutron_auth_url: {get_param: [EndpointMap, KeystoneV3Admin, uri]}
-        nova::rabbit_heartbeat_timeout_threshold: 60
-        nova::cinder_catalog_info: 'volumev2:cinderv2:internalURL'
-        nova::host: '"%{::fqdn}"'    # NOTE: extra quoting is needed.
-        nova::notify_on_state_change: 'vm_and_task_state'
-        nova::notification_driver: messagingv2
-        nova::network::neutron::neutron_auth_type: 'v3password'
-        nova::db::mysql::user: nova
-        nova::db::mysql::host: {get_param: [EndpointMap, MysqlInternal, host_nobrackets]}
-        nova::db::mysql::dbname: nova
-        nova::db::mysql::allowed_hosts:
-          - '%'
-          - "%{hiera('mysql_bind_host')}"
-        nova::db::mysql_api::user: nova_api
-        nova::db::mysql_api::host: {get_param: [EndpointMap, MysqlInternal, host_nobrackets]}
-        nova::db::mysql_api::dbname: nova_api
-        nova::db::mysql_api::allowed_hosts:
-          - '%'
-          - "%{hiera('mysql_bind_host')}"
-        nova::db::database_db_max_retries: -1
-        nova::db::database_max_retries: -1
-        nova::glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
-        nova::use_ipv6: {get_param: NovaIPv6}
-        nova::upgrade_level_compute: {get_param: UpgradeLevelNovaCompute}
-        nova::network::neutron::neutron_ovs_bridge: {get_param: NovaOVSBridge}
+        map_merge:
+        - nova::rabbit_password: {get_param: RabbitPassword}
+          nova::rabbit_userid: {get_param: RabbitUserName}
+          nova::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
+          nova::rabbit_port: {get_param: RabbitClientPort}
+          nova::database_connection:
+            list_join:
+              - ''
+              - - {get_param: [EndpointMap, MysqlInternal, protocol]}
+                - '://nova:'
+                - {get_param: NovaPassword}
+                - '@'
+                - {get_param: [EndpointMap, MysqlInternal, host]}
+                - '/nova'
+                - '?bind_address='
+                - "%{hiera('tripleo::profile::base::database::mysql::client_bind_address')}"
+          nova::api_database_connection:
+            list_join:
+              - ''
+              - - {get_param: [EndpointMap, MysqlInternal, protocol]}
+                - '://nova_api:'
+                - {get_param: NovaPassword}
+                - '@'
+                - {get_param: [EndpointMap, MysqlInternal, host]}
+                - '/nova_api'
+                - '?bind_address='
+                - "%{hiera('tripleo::profile::base::database::mysql::client_bind_address')}"
+          nova::debug: {get_param: Debug}
+          nova::purge_config: {get_param: EnableConfigPurge}
+          nova::network::neutron::neutron_project_name: 'service'
+          nova::network::neutron::neutron_username: 'neutron'
+          nova::network::neutron::dhcp_domain: ''
+          nova::network::neutron::neutron_password: {get_param: NeutronPassword}
+          nova::network::neutron::neutron_url: {get_param: [EndpointMap, NeutronInternal, uri]}
+          nova::network::neutron::neutron_auth_url: {get_param: [EndpointMap, KeystoneV3Admin, uri]}
+          nova::rabbit_heartbeat_timeout_threshold: 60
+          nova::cinder_catalog_info: 'volumev2:cinderv2:internalURL'
+          nova::host: '%{::fqdn}'
+          nova::notify_on_state_change: 'vm_and_task_state'
+          nova::notification_driver: messagingv2
+          nova::network::neutron::neutron_auth_type: 'v3password'
+          nova::db::database_db_max_retries: -1
+          nova::db::database_max_retries: -1
+          nova::glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
+          nova::use_ipv6: {get_param: NovaIPv6}
+          nova::network::neutron::neutron_ovs_bridge: {get_param: NovaOVSBridge}
+        - 
+          if:
+          - compute_upgrade_level_empty
+          - {}
+          - nova::upgrade_level_compute: {get_param: UpgradeLevelNovaCompute}
+      service_config_settings:
+        mysql:
+          # NOTE(aschultz): this should be configurable if/when we support more
+          # complex cell v2 configurations. For now, this is the default cell
+          # created for the cell v2 configuration
+          nova::db::mysql_api::setup_cell0: true
+          nova::rabbit_password: {get_param: RabbitPassword}
+          nova::rabbit_userid: {get_param: RabbitUserName}
+          nova::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
+          nova::rabbit_port: {get_param: RabbitClientPort}