Ensure compute nodes use internalURL as catalog_info
[apex-tripleo-heat-templates.git] / controller.yaml
index d5d63cd..5983a41 100644 (file)
@@ -11,7 +11,7 @@ parameters:
     hidden: true
   AdminToken:
     default: unset
-    description: The keystone auth secret.
+    description: The keystone auth secret and db password.
     type: string
     hidden: true
   CeilometerBackend:
@@ -25,7 +25,7 @@ parameters:
     hidden: true
   CeilometerPassword:
     default: unset
-    description: The password for the ceilometer service account.
+    description: The password for the ceilometer service and db account.
     type: string
     hidden: true
   CinderEnableIscsiBackend:
@@ -46,7 +46,7 @@ parameters:
     type: number
   CinderPassword:
     default: unset
-    description: The password for the cinder service account, used by cinder-api.
+    description: The password for the cinder service and db account, used by cinder-api.
     type: string
     hidden: true
   CloudName:
@@ -67,15 +67,14 @@ parameters:
     default: ''
     description: Set to True to enable debugging on all services.
     type: string
+  EnableFencing:
+    default: false
+    description: Whether to enable fencing in Pacemaker or not.
+    type: boolean
   EnableGalera:
     default: true
     description: Whether to use Galera instead of regular MariaDB.
     type: boolean
-  EnablePacemaker:
-    default: false
-    description: If enabled services will be monitored by Pacemaker; it
-      will manage VIPs as well, in place of Keepalived.
-    type: boolean
   EnableCephStorage:
     default: false
     description: Whether to deploy Ceph Storage (OSD) on the Controller
@@ -122,6 +121,38 @@ parameters:
           }
         }
     type: json
+  FencingConfig:
+    default: {}
+    description: |
+      Pacemaker fencing configuration. The JSON should have
+      the following structure:
+        {
+          "devices": [
+            {
+              "agent": "AGENT_NAME",
+              "host_mac": "HOST_MAC_ADDRESS",
+              "params": {"PARAM_NAME": "PARAM_VALUE"}
+            }
+          ]
+        }
+      For instance:
+        {
+          "devices": [
+            {
+              "agent": "fence_xvm",
+              "host_mac": "52:54:00:aa:bb:cc",
+              "params": {
+                "multicast_address": "225.0.0.12",
+                "port": "baremetal_0",
+                "manage_fw": true,
+                "manage_key_file": true,
+                "key_file": "/etc/fence_xvm.key",
+                "key_file_password": "abcdef"
+              }
+            }
+          ]
+        }
+    type: json
   Flavor:
     description: Flavor for control nodes to request when deploying.
     type: string
@@ -137,7 +168,7 @@ parameters:
     default: ''
   GlancePassword:
     default: unset
-    description: The password for the glance service account, used by the glance services.
+    description: The password for the glance service and db account, used by the glance services.
     type: string
     hidden: true
   GlancePort:
@@ -157,7 +188,7 @@ parameters:
     - allowed_values: ['swift', 'file', 'rbd']
   HeatPassword:
     default: unset
-    description: The password for the Heat service account, used by the Heat services.
+    description: The password for the Heat service and db account, used by the Heat services.
     type: string
     hidden: true
   HeatStackDomainAdminPassword:
@@ -222,10 +253,18 @@ parameters:
         lower level default.
     type: number
     default: 0
+  MysqlMaxConnections:
+    description: Configures MySQL max_connections config setting
+    type: number
+    default: 1024
   MysqlRootPassword:
     type: string
     hidden: true
     default: ''  # Has to be here because of the ignored empty value bug
+  NeutronExternalNetworkBridge:
+    description: Name of bridge used for external network traffic.
+    type: string
+    default: 'br-ex'
   NeutronBridgeMappings:
     description: >
       The OVS logical->physical bridge mappings to use. See the Neutron
@@ -266,6 +305,10 @@ parameters:
     default: 'False'
     description: Whether to enable l3-agent HA
     type: string
+  NeutronDhcpAgentsPerNetwork:
+    type: number
+    default: 3
+    description: The number of neutron dhcp agents to schedule per network
   NeutronEnableTunnelling:
     type: string
     default: "True"
@@ -283,10 +326,10 @@ parameters:
       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: string
+    type: comma_delimited_list
   NeutronPassword:
     default: unset
-    description: The password for the neutron service account, used by neutron agents.
+    description: The password for the neutron service and db account, used by neutron agents.
     type: string
     hidden: true
   NeutronPublicInterface:
@@ -321,11 +364,27 @@ parameters:
         The tunnel types for the Neutron tenant network. To specify multiple
         values, use a comma separated string, like so: 'gre,vxlan'
     type: string
+  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
   NovaPassword:
     default: unset
-    description: The password for the nova service account, used by nova-api.
+    description: The password for the nova service and db account, used by nova-api.
     type: string
     hidden: true
+  MongoDbNoJournal:
+    default: false
+    description: Should MongoDb journaling be disabled
+    type: boolean
   NtpServer:
     type: string
     default: ''
@@ -364,6 +423,9 @@ parameters:
     default: 5672
     description: Set rabbit subscriber port, change this if using SSL
     type: number
+  RedisVirtualIP:
+    type: string
+    default: ''  # Has to be here because of the ignored empty value bug
   SnmpdReadonlyUserName:
     default: ro_snmp_user
     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
@@ -418,7 +480,35 @@ parameters:
   VirtualIP:
     type: string
     default: ''  # Has to be here because of the ignored empty value bug
-
+  HeatApiVirtualIP:
+    type: string
+    default: ''
+  GlanceApiVirtualIP:
+    type: string
+    default: ''
+  MysqlVirtualIP:
+    type: string
+    default: ''
+  KeystonePublicApiVirtualIP:
+    type: string
+    default: ''
+  NeutronApiVirtualIP:
+    type: string
+    default: ''
+  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:
 
@@ -433,18 +523,50 @@ resources:
         - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
       user_data: {get_resource: NodeUserData}
+      name: {get_param: Hostname}
 
   NodeUserData:
     type: OS::TripleO::NodeUserData
 
+  ExternalPort:
+    type: OS::TripleO::Controller::Ports::ExternalPort
+    properties:
+      ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
+
+  InternalApiPort:
+    type: OS::TripleO::Controller::Ports::InternalApiPort
+    properties:
+      ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
+
+  StoragePort:
+    type: OS::TripleO::Controller::Ports::StoragePort
+    properties:
+      ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
+
+  StorageMgmtPort:
+    type: OS::TripleO::Controller::Ports::StorageMgmtPort
+    properties:
+      ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
+
+  TenantPort:
+    type: OS::TripleO::Controller::Ports::TenantPort
+    properties:
+      ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
+
   NetworkConfig:
     type: OS::TripleO::Controller::Net::SoftwareConfig
+    properties:
+      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]}
 
   NetworkDeployment:
     type: OS::TripleO::SoftwareDeployment
     properties:
       signal_transport: NO_SIGNAL
-      config: {get_attr: [NetworkConfig, config_id]}
+      config: {get_resource: NetworkConfig}
       server: {get_resource: Controller}
       input_values:
         bridge_name: br-ex
@@ -538,6 +660,7 @@ resources:
           mechanism_drivers: {get_input: neutron_mechanism_drivers}
           allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
           l3_ha: {get_input: neutron_l3_ha}
+          dhcp_agents_per_network: {get_input: neutron_dhcp_agents_per_network}
           ovs:
             enable_tunneling: {get_input: neutron_enable_tunneling}
             local_ip: {get_input: controller_host}
@@ -550,6 +673,8 @@ resources:
             physical_bridge: br-ex
             tenant_network_type: {get_input: neutron_tenant_network_type}
             tunnel_types: {get_input: neutron_tunnel_types}
+            tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
+            vni_ranges: {get_input: neutron_vni_ranges}
           ovs_db: {get_input: neutron_dsn}
           service-password: {get_input: neutron_password}
           dnsmasq-options: {get_input: neutron_dnsmasq_options}
@@ -570,6 +695,8 @@ resources:
           host: {get_input: controller_virtual_ip}
           metadata-proxy: true
           service-password: {get_input: nova_password}
+        mongodb:
+          nojournal: {get_input: mongodb_no_journal}
         rabbit:
           host: {get_input: controller_virtual_ip}
           username: {get_input: rabbit_username}
@@ -723,7 +850,9 @@ resources:
         cinder_dsn:
           list_join:
             - ''
-            - - 'mysql://cinder:unset@'
+            - - 'mysql://cinder:'
+              - {get_param: CinderPassword}
+              - '@'
               - {get_param: VirtualIP}
               - '/cinder'
         glance_port: {get_param: GlancePort}
@@ -734,7 +863,9 @@ resources:
         glance_dsn:
           list_join:
             - ''
-            - - 'mysql://glance:unset@'
+            - - 'mysql://glance:'
+              - {get_param: GlancePassword}
+              - '@'
               - {get_param: VirtualIP}
               - '/glance'
         heat_password: {get_param: HeatPassword}
@@ -743,7 +874,9 @@ resources:
         heat_dsn:
           list_join:
             - ''
-            - - 'mysql://heat:unset@'
+            - - 'mysql://heat:'
+              - {get_param: HeatPassword}
+              - '@'
               - {get_param: VirtualIP}
               - '/heat'
         keystone_ca_certificate: {get_param: KeystoneCACertificate}
@@ -754,9 +887,12 @@ resources:
         keystone_dsn:
           list_join:
             - ''
-            - - 'mysql://keystone:unset@'
+            - - 'mysql://keystone:'
+              - {get_param: AdminToken}
+              - '@'
               - {get_param: VirtualIP}
               - '/keystone'
+        mongodb_no_journal: {get_param: MongoDbNoJournal}
         mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
         mysql_root_password: {get_param: MysqlRootPassword}
         mysql_cluster_name:
@@ -771,6 +907,7 @@ resources:
         neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
         neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
         neutron_l3_ha: {get_param: NeutronL3HA}
+        neutron_dhcp_agents_per_network: {get_param: NeutronDhcpAgentsPerNetwork}
         neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
         neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
         neutron_public_interface: {get_param: NeutronPublicInterface}
@@ -779,12 +916,30 @@ resources:
         neutron_public_interface_tag: {get_param: NeutronPublicInterfaceTag}
         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_password: {get_param: NeutronPassword}
         neutron_dnsmasq_options: {get_param: NeutronDnsmasqOptions}
         neutron_dsn:
           list_join:
             - ''
-            - - 'mysql://neutron:unset@'
+            - - 'mysql://neutron:'
+              - {get_param: NeutronPassword}
+              - '@'
               - {get_param: VirtualIP}
               - '/ovs_neutron?charset=utf8'
         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
@@ -792,7 +947,9 @@ resources:
         ceilometer_dsn:
           list_join:
             - ''
-            - - 'mysql://ceilometer:unset@'
+            - - 'mysql://ceilometer:'
+              - {get_param: CeilometerPassword}
+              - '@'
               - {get_param: VirtualIP}
               - '/ceilometer'
         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
@@ -801,7 +958,9 @@ resources:
         nova_dsn:
           list_join:
             - ''
-            - - 'mysql://nova:unset@'
+            - - 'mysql://nova:'
+              - {get_param: NovaPassword}
+              - '@'
               - {get_param: VirtualIP}
               - '/nova'
         rabbit_username: {get_param: RabbitUserName}
@@ -921,6 +1080,21 @@ outputs:
   ip_address:
     description: IP address of the server in the ctlplane network
     value: {get_attr: [Controller, 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]}
   hostname:
     description: Hostname of the server
     value: {get_attr: [Controller, name]}
@@ -959,3 +1133,6 @@ outputs:
         template: "IP:11211"
         params:
           IP: {get_attr: [Controller, networks, ctlplane, 0]}
+  config_identifier:
+    description: identifier which changes if the node configuration may need re-applying
+    value: "None - NO_SIGNAL"