Change the CinderISCSIHelper to lioadm
[apex-tripleo-heat-templates.git] / puppet / controller.yaml
index bb04530..f17385f 100644 (file)
@@ -57,7 +57,7 @@ parameters:
     description: Whether to enable or not the Rbd backend for Cinder
     type: boolean
   CinderISCSIHelper:
-    default: tgtadm
+    default: lioadm
     description: The iSCSI helper to use with cinder.
     type: string
   CinderLVMLoopDeviceSize:
@@ -107,6 +107,10 @@ parameters:
     default: 'br-ex'
     description: Interface where virtual ip will be assigned.
     type: string
+  CorosyncIPv6:
+    default: false
+    description: Enable IPv6 in Corosync
+    type: boolean
   Debug:
     default: ''
     description: Set to True to enable debugging on all services.
@@ -245,6 +249,11 @@ parameters:
     default: 0
     description: Number of workers for Heat service.
     type: number
+  HeatEnableDBPurge:
+    type: boolean
+    default: true
+    description: |
+        Whether to create cron job for purging soft deleted rows in the Heat database.
   HorizonSecret:
     description: Secret key for Django
     type: string
@@ -540,6 +549,10 @@ parameters:
     description: |
         Whether to create cron job for purging soft deleted rows in Nova database.
     type: boolean
+  NovaIPv6:
+    default: false
+    description: Enable IPv6 features in Nova
+    type: boolean
   NovaPassword:
     description: The password for the nova service and db account, used by nova-api.
     type: string
@@ -552,6 +565,10 @@ parameters:
     default: false
     description: Should MongoDb journaling be disabled
     type: boolean
+  MongoDbIPv6:
+    default: false
+    description: Enable IPv6 if Mongo DB VIP is IPv6
+    type: boolean
   NtpServer:
     default: ''
     description: Comma-separated list of ntp servers
@@ -599,6 +616,10 @@ parameters:
   RedisVirtualIP:
     type: string
     default: ''  # Has to be here because of the ignored empty value bug
+  RedisVirtualIPUri:
+    type: string
+    default: ''  # Has to be here because of the ignored empty value bug
+    description: An IP address which is wrapped in brackets in case of IPv6
   SnmpdReadonlyUserName:
     default: ro_snmp_user
     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
@@ -654,6 +675,9 @@ parameters:
   HeatApiVirtualIP:
     type: string
     default: ''
+  HeatApiVirtualIPUri:
+    type: string
+    default: ''
   GlanceApiVirtualIP:
     type: string
     default: ''
@@ -663,6 +687,9 @@ parameters:
   MysqlVirtualIP:
     type: string
     default: ''
+  MysqlVirtualIPUri:
+    type: string
+    default: ''
   KeystoneAdminApiVirtualIP:
     type: string
     default: ''
@@ -695,6 +722,10 @@ parameters:
   Hostname:
     type: string
     default: '' # Defaults to Heat created hostname
+  HostnameMap:
+    type: json
+    default: {}
+    description: Optional mapping to override hostnames
   NetworkDeploymentActions:
     type: comma_delimited_list
     description: >
@@ -740,7 +771,10 @@ resources:
         - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
       user_data: {get_resource: UserData}
-      name: {get_param: Hostname}
+      name:
+        str_replace:
+            template: {get_param: Hostname}
+            params: {get_param: HostnameMap}
       software_config_transport: {get_param: SoftwareConfigTransport}
       metadata: {get_param: ServerMetadata}
       scheduler_hints: {get_param: SchedulerHints}
@@ -803,6 +837,8 @@ resources:
   ManagementPort:
     type: OS::TripleO::Controller::Ports::ManagementPort
     properties:
+      IPPool: {get_param: ControllerIPs}
+      NodeIndex: {get_param: NodeIndex}
       ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
 
   NetIpMap:
@@ -810,11 +846,17 @@ resources:
     properties:
       ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
       ExternalIp: {get_attr: [ExternalPort, ip_address]}
+      ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
       InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
+      InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
       StorageIp: {get_attr: [StoragePort, ip_address]}
+      StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
       StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
+      StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
       TenantIp: {get_attr: [TenantPort, ip_address]}
+      TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
       ManagementIp: {get_attr: [ManagementPort, ip_address]}
+      ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
 
   NetIpSubnetMap:
     type: OS::TripleO::Network::Ports::NetIpSubnetMap
@@ -890,21 +932,22 @@ resources:
           list_join:
             - ''
             - - 'http://'
-              - {get_param: HeatApiVirtualIP}
+              - {get_param: HeatApiVirtualIPUri}
               - ':8003'
         heat.metadata_server_url:
           list_join:
             - ''
             - - 'http://'
-              - {get_param: HeatApiVirtualIP}
+              - {get_param: HeatApiVirtualIPUri}
               - ':8000'
         heat.waitcondition_server_url:
           list_join:
             - ''
             - - 'http://'
-              - {get_param: HeatApiVirtualIP}
+              - {get_param: HeatApiVirtualIPUri}
               - ':8000/v1/waitcondition'
         heat_auth_encryption_key: {get_param: HeatAuthEncryptionKey}
+        heat_enable_db_purge: {get_param: HeatEnableDBPurge}
         horizon_allowed_hosts: {get_param: HorizonAllowedHosts}
         horizon_secret: {get_param: HorizonSecret}
         admin_email: {get_param: AdminEmail}
@@ -932,7 +975,7 @@ resources:
             - - 'mysql+pymysql://cinder:'
               - {get_param: CinderPassword}
               - '@'
-              - {get_param: MysqlVirtualIP}
+              - {get_param: MysqlVirtualIPUri}
               - '/cinder'
         glance_port: {get_param: [EndpointMap, GlanceInternal, port]}
         glance_password: {get_param: GlancePassword}
@@ -949,7 +992,7 @@ resources:
             - - 'mysql+pymysql://glance:'
               - {get_param: GlancePassword}
               - '@'
-              - {get_param: MysqlVirtualIP}
+              - {get_param: MysqlVirtualIPUri}
               - '/glance'
         heat_password: {get_param: HeatPassword}
         heat_stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
@@ -959,7 +1002,7 @@ resources:
             - - 'mysql+pymysql://heat:'
               - {get_param: HeatPassword}
               - '@'
-              - {get_param: MysqlVirtualIP}
+              - {get_param: MysqlVirtualIPUri}
               - '/heat'
         keystone_ca_certificate: {get_param: KeystoneCACertificate}
         keystone_signing_key: {get_param: KeystoneSigningKey}
@@ -975,7 +1018,7 @@ resources:
             - - 'mysql+pymysql://keystone:'
               - {get_param: AdminToken}
               - '@'
-              - {get_param: MysqlVirtualIP}
+              - {get_param: MysqlVirtualIPUri}
               - '/keystone'
         keystone_identity_uri: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix] }
         keystone_auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
@@ -1082,12 +1125,12 @@ resources:
             - - 'mysql+pymysql://neutron:'
               - {get_param: NeutronPassword}
               - '@'
-              - {get_param: MysqlVirtualIP}
+              - {get_param: MysqlVirtualIPUri}
               - '/ovs_neutron?charset=utf8'
         neutron_internal_url: { get_param: [ EndpointMap, NeutronInternal, uri ] }
         neutron_public_url: { get_param: [ EndpointMap, NeutronPublic, uri ] }
         neutron_admin_url: { get_param: [ EndpointMap, NeutronAdmin, uri ] }
-        neutron_admin_auth_url: { get_param: [ EndpointMap, KeystoneAdmin, uri_no_suffix ] }
+        neutron_auth_url: { get_param: [ EndpointMap, KeystoneV3Admin, uri ] }
         nova_internal_url: { get_param: [ EndpointMap, NovaInternal, uri ] }
         ceilometer_backend: {get_param: CeilometerBackend}
         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
@@ -1096,7 +1139,7 @@ resources:
           list_join:
             - ''
             - - 'redis://'
-              - {get_param: RedisVirtualIP}
+              - {get_param: RedisVirtualIPUri}
               - ':6379'
         ceilometer_dsn:
           list_join:
@@ -1104,11 +1147,13 @@ resources:
             - - 'mysql+pymysql://ceilometer:'
               - {get_param: CeilometerPassword}
               - '@'
-              - {get_param: MysqlVirtualIP}
+              - {get_param: MysqlVirtualIPUri}
               - '/ceilometer'
         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
         nova_enable_db_purge: {get_param: NovaEnableDBPurge}
+        nova_ipv6: {get_param: NovaIPv6}
+        corosync_ipv6: {get_param: CorosyncIPv6}
         nova_password: {get_param: NovaPassword}
         nova_dsn:
           list_join:
@@ -1116,7 +1161,7 @@ resources:
             - - 'mysql+pymysql://nova:'
               - {get_param: NovaPassword}
               - '@'
-              - {get_param: MysqlVirtualIP}
+              - {get_param: MysqlVirtualIPUri}
               - '/nova'
         nova_api_dsn:
           list_join:
@@ -1124,7 +1169,7 @@ resources:
             - - 'mysql+pymysql://nova_api:'
               - {get_param: NovaPassword}
               - '@'
-              - {get_param: MysqlVirtualIP}
+              - {get_param: MysqlVirtualIPUri}
               - '/nova_api'
         upgrade_level_nova_compute: {get_param: UpgradeLevelNovaCompute}
         instance_name_template: {get_param: InstanceNameTemplate}
@@ -1136,6 +1181,7 @@ resources:
         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
         rabbit_client_port: {get_param: RabbitClientPort}
         mongodb_no_journal: {get_param: MongoDbNoJournal}
+        mongodb_ipv6: {get_param: MongoDbIPv6}
         # We need to force this into quotes or hiera will return integer causing
         # the puppet module validation regexp to fail.
         # Remove when: https://github.com/puppetlabs/puppetlabs-rabbitmq/pull/401
@@ -1163,7 +1209,7 @@ resources:
             - - 'mysql://sahara:'
               - {get_param: SaharaPassword}
               - '@'
-              - {get_param: MysqlVirtualIP}
+              - {get_param: MysqlVirtualIPUri}
               - '/sahara'
         swift_proxy_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
         swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
@@ -1226,6 +1272,7 @@ resources:
             - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
             - neutron_nuage_data # Optionally provided by ControllerExtraConfigPre
             - midonet_data #Optionally provided by AllNodesExtraConfig
+            - neutron_opencontrail_data # Optionally provided by ControllerExtraConfigPre
           datafiles:
             controller_extraconfig:
               mapped_data: {get_param: ControllerExtraConfig}
@@ -1252,6 +1299,7 @@ resources:
                 enable_fencing: {get_input: enable_fencing}
                 enable_load_balancer: {get_input: enable_load_balancer}
                 hacluster_pwd: {get_input: pcsd_password}
+                corosync_ipv6: {get_input: corosync_ipv6}
                 tripleo::fencing::config: {get_input: fencing_config}
 
                 # Swift
@@ -1324,6 +1372,9 @@ resources:
                 glance_file_pcmk_fstype: {get_input: glance_file_pcmk_fstype}
                 glance_file_pcmk_manage: {get_input: glance_file_pcmk_manage}
                 glance_file_pcmk_options: {get_input: glance_file_pcmk_options}
+                glance::notify::rabbitmq::rabbit_userid: {get_input: rabbit_username}
+                glance::notify::rabbitmq::rabbit_password: {get_input: rabbit_password}
+                glance::notify::rabbitmq::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
 
                 # Heat
                 heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
@@ -1348,6 +1399,7 @@ resources:
                 heat::database_connection: {get_input: heat_dsn}
                 heat::debug: {get_input: debug}
                 heat::db::mysql::password: {get_input: heat_password}
+                heat_enable_db_purge: {get_input: heat_enable_db_purge}
 
                 # Keystone
                 keystone::admin_token: {get_input: admin_token}
@@ -1382,6 +1434,7 @@ resources:
                 # MongoDB
                 mongodb::server::bind_ip: {get_input: mongo_db_network}
                 mongodb::server::nojournal: {get_input: mongodb_no_journal}
+                mongodb::server::ipv6: {get_input: mongodb_ipv6}
                 # MySQL
                 admin_password: {get_input: admin_password}
                 enable_galera: {get_input: enable_galera}
@@ -1452,7 +1505,7 @@ resources:
                 neutron::keystone::auth::password: {get_input: neutron_password }
                 neutron::keystone::auth::region: {get_input: keystone_region}
                 neutron::server::notifications::nova_url: {get_input: nova_internal_url}
-                neutron::server::notifications::auth_url: {get_input: neutron_admin_auth_url}
+                neutron::server::notifications::auth_url: {get_input: neutron_auth_url}
                 neutron::server::notifications::tenant_name: 'service'
                 neutron::server::notifications::project_name: 'service'
                 neutron::server::notifications::password: {get_input: nova_password}
@@ -1484,6 +1537,7 @@ resources:
                 nova::rabbit_port: {get_input: rabbit_client_port}
                 nova::upgrade_level_compute: {get_input: upgrade_level_nova_compute}
                 nova::debug: {get_input: debug}
+                nova::use_ipv6: {get_input: nova_ipv6}
                 nova::api::auth_uri: {get_input: keystone_auth_uri}
                 nova::api::identity_uri: {get_input: keystone_identity_uri}
                 nova::api::api_bind_address: {get_input: nova_api_network}
@@ -1498,9 +1552,9 @@ resources:
                 nova::glance_api_servers: {get_input: glance_api_servers}
                 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
                 nova::api::instance_name_template: {get_input: instance_name_template}
-                nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
+                nova::network::neutron::neutron_password: {get_input: neutron_password}
                 nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
-                nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
+                nova::network::neutron::neutron_auth_url: {get_input: neutron_auth_url}
                 nova::vncproxy::host: {get_input: nova_api_network}
                 nova::db::mysql::password: {get_input: nova_password}
                 nova::db::mysql_api::password: {get_input: nova_password}
@@ -1628,11 +1682,54 @@ outputs:
       Server's IP address and hostname in the /etc/hosts format
     value:
       str_replace:
-        template: IP HOST.DOMAIN HOST
+        template: |
+          PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
+          EXTERNALIP EXTERNALHOST
+          INTERNAL_APIIP INTERNAL_APIHOST
+          STORAGEIP STORAGEHOST
+          STORAGE_MGMTIP STORAGE_MGMTHOST
+          TENANTIP TENANTHOST
+          MANAGEMENTIP MANAGEMENTHOST
         params:
-          IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
+          PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
           DOMAIN: {get_param: CloudDomain}
-          HOST: {get_attr: [Controller, name]}
+          PRIMARYHOST: {get_attr: [Controller, name]}
+          EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
+          EXTERNALHOST:
+            list_join:
+            - '-'
+            - - {get_attr: [Controller, name]}
+              - external
+          INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
+          INTERNAL_APIHOST:
+            list_join:
+            - '-'
+            - - {get_attr: [Controller, name]}
+              - internalapi
+          STORAGEIP: {get_attr: [StoragePort, ip_address]}
+          STORAGEHOST:
+            list_join:
+            - '-'
+            - - {get_attr: [Controller, name]}
+              - storage
+          STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
+          STORAGE_MGMTHOST:
+            list_join:
+            - '-'
+            - - {get_attr: [Controller, name]}
+              - storagemgmt
+          TENANTIP: {get_attr: [TenantPort, ip_address]}
+          TENANTHOST:
+            list_join:
+            - '-'
+            - - {get_attr: [Controller, name]}
+              - tenant
+          MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
+          MANAGEMENTHOST:
+            list_join:
+            - '-'
+            - - {get_attr: [Controller, name]}
+              - management
   nova_server_resource:
     description: Heat resource handle for the Nova compute server
     value:
@@ -1643,14 +1740,14 @@ outputs:
       str_replace:
         template: 'r1z1-IP:%PORT%/d1'
         params:
-          IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
+          IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
   swift_proxy_memcache:
     description: Swift proxy-memcache value
     value:
       str_replace:
         template: "IP:11211"
         params:
-          IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
+          IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
   config_identifier:
     description: identifier which changes if the controller configuration may need re-applying
     value: