summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ceph-storage.yaml12
-rw-r--r--cinder-storage.yaml5
-rw-r--r--compute.yaml34
-rw-r--r--controller.yaml67
-rw-r--r--environments/cinder-netapp-config.yaml51
-rw-r--r--environments/mongodb-nojournal.yaml5
-rw-r--r--environments/net-bond-with-vlans.yaml10
-rw-r--r--environments/net-single-nic-with-vlans.yaml10
-rw-r--r--extraconfig/controller/cinder-netapp.yaml38
-rw-r--r--extraconfig/controller/noop.yaml3
-rw-r--r--extraconfig/post_deploy/README2
-rw-r--r--network/ports/ctlplane_vip.yaml12
-rw-r--r--network/ports/external.yaml14
-rw-r--r--network/ports/noop.yaml4
-rw-r--r--network/ports/vip.yaml11
-rw-r--r--overcloud-resource-registry-puppet.yaml11
-rw-r--r--overcloud-without-mergepy.yaml211
-rw-r--r--puppet/ceph-storage-puppet.yaml29
-rw-r--r--puppet/cinder-storage-puppet.yaml51
-rw-r--r--puppet/compute-puppet.yaml83
-rw-r--r--puppet/controller-puppet.yaml153
-rw-r--r--puppet/extraconfig/pre_deploy/README12
-rw-r--r--puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml145
-rw-r--r--puppet/extraconfig/pre_deploy/controller/multiple.yaml18
-rw-r--r--puppet/extraconfig/pre_deploy/default.yaml8
-rw-r--r--puppet/hieradata/ceph.yaml2
-rw-r--r--puppet/hieradata/common.yaml7
-rw-r--r--puppet/hieradata/compute.yaml8
-rw-r--r--puppet/hieradata/controller.yaml9
-rw-r--r--puppet/hieradata/object.yaml2
-rw-r--r--puppet/hieradata/volume.yaml8
-rw-r--r--puppet/manifests/overcloud_cephstorage.pp15
-rw-r--r--puppet/manifests/overcloud_compute.pp25
-rw-r--r--puppet/manifests/overcloud_controller.pp65
-rw-r--r--puppet/manifests/overcloud_controller_pacemaker.pp123
-rw-r--r--puppet/manifests/overcloud_object.pp13
-rw-r--r--puppet/manifests/overcloud_volume.pp14
-rw-r--r--puppet/manifests/ringbuilder.pp11
-rw-r--r--puppet/swift-storage-puppet.yaml23
-rw-r--r--swift-storage.yaml5
40 files changed, 956 insertions, 373 deletions
diff --git a/ceph-storage.yaml b/ceph-storage.yaml
index 15092bae..5f9f5373 100644
--- a/ceph-storage.yaml
+++ b/ceph-storage.yaml
@@ -42,6 +42,18 @@ parameters:
Hostname:
type: string
default: '' # Defaults to Heat created hostname
+ ExtraConfig:
+ default: {}
+ description: |
+ Additional configuration to inject into the cluster. Note
+ that CephStorageExtraConfig takes precedence over ExtraConfig.
+ type: json
+ CephStorageExtraConfig:
+ default: {}
+ description: |
+ Role specific additional configuration to inject into the cluster.
+ type: json
+
resources:
CephStorage:
diff --git a/cinder-storage.yaml b/cinder-storage.yaml
index be088d66..f65d9289 100644
--- a/cinder-storage.yaml
+++ b/cinder-storage.yaml
@@ -62,6 +62,11 @@ parameters:
}
}
type: json
+ BlockStorageExtraConfig:
+ default: {}
+ description: |
+ Role specific additional configuration to inject into the cluster.
+ type: json
Flavor:
description: Flavor for block storage nodes to request when deploying.
type: string
diff --git a/compute.yaml b/compute.yaml
index 4a9a92b9..933639ce 100644
--- a/compute.yaml
+++ b/compute.yaml
@@ -25,6 +25,10 @@ parameters:
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
Debug:
default: ''
description: Set to True to enable debugging on all services.
@@ -152,6 +156,18 @@ parameters:
The tunnel types for the Neutron tenant network. To specify multiple
values, use a comma separated string, like so: 'gre,vxlan'
default: 'gre'
+ 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
@@ -355,6 +371,8 @@ resources:
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}
@@ -397,6 +415,22 @@ resources:
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}
diff --git a/controller.yaml b/controller.yaml
index 5596591f..7ee837f5 100644
--- a/controller.yaml
+++ b/controller.yaml
@@ -28,6 +28,10 @@ parameters:
description: The password for the ceilometer service and db account.
type: string
hidden: true
+ CinderEnableNfsBackend:
+ default: false
+ description: Whether to enable or not the NFS backend for Cinder
+ type: boolean
CinderEnableIscsiBackend:
default: true
description: Whether to enable or not the Iscsi backend for Cinder
@@ -44,6 +48,18 @@ parameters:
default: 5000
description: The size of the loopback file used by the cinder LVM driver.
type: number
+ CinderNfsMountOptions:
+ default: ''
+ description: >
+ Mount options for NFS mounts used by Cinder NFS backend. Effective
+ when CinderEnableNfsBackend is true.
+ type: string
+ CinderNfsServers:
+ default: ''
+ description: >
+ NFS servers used by Cinder NFS backend. Effective when
+ CinderEnableNfsBackend is true.
+ type: comma_delimited_list
CinderPassword:
default: unset
description: The password for the cinder service and db account, used by cinder-api.
@@ -253,10 +269,18 @@ parameters:
lower level default.
type: number
default: 0
+ MysqlMaxConnections:
+ description: Configures MySQL max_connections config setting
+ type: number
+ default: 4096
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
@@ -297,6 +321,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"
@@ -352,11 +380,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 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: ''
@@ -632,6 +676,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}
@@ -644,6 +689,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}
@@ -664,6 +711,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}
@@ -859,6 +908,7 @@ resources:
- '@'
- {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:
@@ -873,6 +923,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}
@@ -881,6 +932,22 @@ 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:
diff --git a/environments/cinder-netapp-config.yaml b/environments/cinder-netapp-config.yaml
index 4dd9eed7..0437cc67 100644
--- a/environments/cinder-netapp-config.yaml
+++ b/environments/cinder-netapp-config.yaml
@@ -1,30 +1,29 @@
# A Heat environment file which can be used to enable a
-# a Cinder NetApp backend.
+# a Cinder NetApp backend, configured via puppet
resource_registry:
- OS::TripleO::Controller::CinderBackend: extraconfig/controller/cinder-netapp.yaml
+ OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
parameter_defaults:
- CinderBackendConfig:
- CinderEnableNetappBackend: false
- CinderNetappBackendName: 'tripleo_netapp'
- CinderNetappLogin: ''
- CinderNetappPassword: ''
- CinderNetappServerHostname: ''
- CinderNetappServerPort: '80'
- CinderNetappSizeMultiplier: '1.2'
- CinderNetappStorageFamily: 'ontap_cluster'
- CinderNetappStorageProtocol: 'nfs'
- CinderNetappTransportType: 'http'
- CinderNetappVfiler: ''
- CinderNetappVolumeList: ''
- CinderNetappVserver: ''
- CinderNetappPartnerBackendName: ''
- CinderNetappNfsShares: ''
- CinderNetappNfsSharesConfig: '/etc/cinder/shares.conf'
- CinderNetappNfsMountOptions: ''
- CinderNetappCopyOffloadToolPath: ''
- CinderNetappControllerIps: ''
- CinderNetappSaPassword: ''
- CinderNetappStoragePools: ''
- CinderNetappEseriesHostType: 'linux_dm_mp'
- CinderNetappWebservicePath: '/devmgr/v2'
+ CinderEnableNetappBackend: true
+ CinderNetappBackendName: 'tripleo_netapp'
+ CinderNetappLogin: ''
+ CinderNetappPassword: ''
+ CinderNetappServerHostname: ''
+ CinderNetappServerPort: '80'
+ CinderNetappSizeMultiplier: '1.2'
+ CinderNetappStorageFamily: 'ontap_cluster'
+ CinderNetappStorageProtocol: 'nfs'
+ CinderNetappTransportType: 'http'
+ CinderNetappVfiler: ''
+ CinderNetappVolumeList: ''
+ CinderNetappVserver: ''
+ CinderNetappPartnerBackendName: ''
+ CinderNetappNfsShares: ''
+ CinderNetappNfsSharesConfig: '/etc/cinder/shares.conf'
+ CinderNetappNfsMountOptions: ''
+ CinderNetappCopyOffloadToolPath: ''
+ CinderNetappControllerIps: ''
+ CinderNetappSaPassword: ''
+ CinderNetappStoragePools: ''
+ CinderNetappEseriesHostType: 'linux_dm_mp'
+ CinderNetappWebservicePath: '/devmgr/v2'
diff --git a/environments/mongodb-nojournal.yaml b/environments/mongodb-nojournal.yaml
new file mode 100644
index 00000000..1e13e452
--- /dev/null
+++ b/environments/mongodb-nojournal.yaml
@@ -0,0 +1,5 @@
+# A Heat environment file which can be used to disable journal in MongoDb.
+# Since, when journaling is enabled, MongoDb will create big journal file
+# it can take time. In a CI environment for example journaling is not necessary.
+parameters:
+ MongoDbNoJournal: true
diff --git a/environments/net-bond-with-vlans.yaml b/environments/net-bond-with-vlans.yaml
index 38c31cac..9600fc7e 100644
--- a/environments/net-bond-with-vlans.yaml
+++ b/environments/net-bond-with-vlans.yaml
@@ -11,3 +11,13 @@ resource_registry:
OS::TripleO::Controller::Net::SoftwareConfig: ../network/config/bond-with-vlans/controller.yaml
OS::TripleO::ObjectStorage::Net::SoftwareConfig: ../network/config/bond-with-vlans/swift-storage.yaml
OS::TripleO::CephStorage::Net::SoftwareConfig: ../network/config/bond-with-vlans/ceph-storage.yaml
+
+# We use parameter_defaults instead of parameters here because Tuskar munges
+# the names of top level and role level parameters with the role name and a
+# version. Using parameter_defaults makes it such that if the parameter name is
+# not defined in the template, we don't get an error.
+parameter_defaults:
+ # This sets 'external_network_bridge' in l3_agent.ini to an empty string
+ # so that external networks act like provider bridge networks (they
+ # will plug into br-int instead of br-ex)
+ NeutronExternalNetworkBridge: "''"
diff --git a/environments/net-single-nic-with-vlans.yaml b/environments/net-single-nic-with-vlans.yaml
index b087b3e4..bdfeadd3 100644
--- a/environments/net-single-nic-with-vlans.yaml
+++ b/environments/net-single-nic-with-vlans.yaml
@@ -11,3 +11,13 @@ resource_registry:
OS::TripleO::Controller::Net::SoftwareConfig: ../network/config/single-nic-vlans/controller.yaml
OS::TripleO::ObjectStorage::Net::SoftwareConfig: ../network/config/single-nic-vlans/swift-storage.yaml
OS::TripleO::CephStorage::Net::SoftwareConfig: ../network/config/single-nic-vlans/ceph-storage.yaml
+
+# We use parameter_defaults instead of parameters here because Tuskar munges
+# the names of top level and role level parameters with the role name and a
+# version. Using parameter_defaults makes it such that if the parameter name is
+# not defined in the template, we don't get an error.
+parameter_defaults:
+ # This sets 'external_network_bridge' in l3_agent.ini to an empty string
+ # so that external networks act like provider bridge networks (they
+ # will plug into br-int instead of br-ex)
+ NeutronExternalNetworkBridge: "''"
diff --git a/extraconfig/controller/cinder-netapp.yaml b/extraconfig/controller/cinder-netapp.yaml
deleted file mode 100644
index 223ceacd..00000000
--- a/extraconfig/controller/cinder-netapp.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-heat_template_version: 2015-04-30
-
-description: >
- Configure hieradata for Cinder Netapp configuration
-
-resources:
- CinderNetappConfig:
- type: OS::Heat::StructuredConfig
- properties:
- group: os-apply-config
- config:
- hiera:
- datafiles:
- cinder_netapp_data:
- mapped_data:
- cinder_enable_netapp_backend: {get_param: CinderEnableNetappBackend}
- cinder::backend::netapp::title: {get_param: CinderNetappBackendName}
- cinder::backend::netapp::netapp_login: {get_param: CinderNetappLogin}
- cinder::backend::netapp::netapp_password: {get_param: CinderNetappPassword}
- cinder::backend::netapp::netapp_hostname: {get_param: CinderNetappServerHostname}
- cinder::backend::netapp::netapp_server_port: {get_param: CinderNetappServerPort}
- cinder::backend::netapp::netapp_size_multiplier: {get_param: CinderNetappSizeMultiplier}
- cinder::backend::netapp::netapp_storage_family: {get_param: CinderNetappStorageFamily}
- cinder::backend::netapp::netapp_storage_protocol: {get_param: CinderNetappStorageProtocol}
- cinder::backend::netapp::netapp_transport_type: {get_param: CinderNetappTransportType}
- cinder::backend::netapp::netapp_vfiler: {get_param: CinderNetappVfiler}
- cinder::backend::netapp::netapp_volume_list: {get_param: CinderNetappVolumeList}
- cinder::backend::netapp::netapp_vserver: {get_param: CinderNetappVserver}
- cinder::backend::netapp::netapp_partner_backend_name: {get_param: CinderNetappPartnerBackendName}
- cinder::backend::netapp::nfs_shares: {get_param: CinderNetappNfsShares}
- cinder::backend::netapp::nfs_shares_config: {get_param: CinderNetappNfsSharesConfig}
- cinder::backend::netapp::nfs_mount_options: {get_param: CinderNetappNfsMountOptions}
- cinder::backend::netapp::netapp_copyoffload_tool_path: {get_param: CinderNetappCopyOffloadToolPath}
- cinder::backend::netapp::netapp_controller_ips: {get_param: CinderNetappControllerIps}
- cinder::backend::netapp::netapp_sa_password: {get_param: CinderNetappSaPassword}
- cinder::backend::netapp::netapp_storage_pools: {get_param: CinderNetappStoragePools}
- cinder::backend::netapp::netapp_eseries_host_type: {get_param: CinderNetappEseriesHostType}
- cinder::backend::netapp::netapp_webservice_path: {get_param: CinderNetappWebservicePath}
diff --git a/extraconfig/controller/noop.yaml b/extraconfig/controller/noop.yaml
deleted file mode 100644
index 2eb35763..00000000
--- a/extraconfig/controller/noop.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-heat_template_version: 2015-04-30
-
-description: A stack which doesn't configure anything.
diff --git a/extraconfig/post_deploy/README b/extraconfig/post_deploy/README
new file mode 100644
index 00000000..3c53fa2c
--- /dev/null
+++ b/extraconfig/post_deploy/README
@@ -0,0 +1,2 @@
+This tree contains additional configuration which happens "post deployment",
+e.g after the OpenStack service configuration has been completed.
diff --git a/network/ports/ctlplane_vip.yaml b/network/ports/ctlplane_vip.yaml
index d5001e43..0d2945bc 100644
--- a/network/ports/ctlplane_vip.yaml
+++ b/network/ports/ctlplane_vip.yaml
@@ -2,6 +2,7 @@ heat_template_version: 2015-04-30
description: >
Creates a port for a VIP on the undercloud ctlplane network.
+ The IP address will be chosen automatically if FixedIPs is empty.
parameters:
NetworkName:
@@ -19,15 +20,20 @@ parameters:
description: The name of the undercloud Neutron control plane
default: ctlplane
type: string
-
+ FixedIPs:
+ description: >
+ Control the IP allocation for the VIP port. E.g.
+ [{'ip_address':'1.2.3.4'}]
+ default: []
+ type: json
resources:
-
VipPort:
type: OS::Neutron::Port
properties:
network: {get_param: ControlPlaneNetwork}
name: {get_param: PortName}
+ fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
@@ -36,7 +42,7 @@ outputs:
value: {get_attr: [VipPort, fixed_ips, 0, ip_address]}
ip_subnet:
# FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
- description: IP/Subnet CIDR for the internal API network IP
+ description: IP/Subnet CIDR for the ctlplane network.
value:
list_join:
- ''
diff --git a/network/ports/external.yaml b/network/ports/external.yaml
index b5c1e5c9..63e3eeb3 100644
--- a/network/ports/external.yaml
+++ b/network/ports/external.yaml
@@ -1,7 +1,8 @@
heat_template_version: 2015-04-30
description: >
- Creates a port on the external network.
+ Creates a port on the external network. The IP address will be chosen
+ automatically if FixedIPs is empty.
parameters:
ExternalNetName:
@@ -15,6 +16,16 @@ parameters:
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
type: string
+ ControlPlaneNetwork: # Here for compatibility with ctlplane_vip.yaml
+ description: The name of the undercloud Neutron control plane
+ default: ctlplane
+ type: string
+ FixedIPs:
+ description: >
+ Control the IP allocation for the VIP port. E.g.
+ [{'ip_address':'1.2.3.4'}]
+ default: []
+ type: json
resources:
@@ -23,6 +34,7 @@ resources:
properties:
network: {get_param: ExternalNetName}
name: {get_param: PortName}
+ fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
diff --git a/network/ports/noop.yaml b/network/ports/noop.yaml
index 9e1a1276..31ee6f3c 100644
--- a/network/ports/noop.yaml
+++ b/network/ports/noop.yaml
@@ -19,6 +19,10 @@ parameters:
description: # Here for compatability with vip.yaml
default: ''
type: string
+ FixedIPs:
+ description: # Here for compatibility with vip.yaml
+ default: []
+ type: json
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
diff --git a/network/ports/vip.yaml b/network/ports/vip.yaml
index ab72083d..299579dc 100644
--- a/network/ports/vip.yaml
+++ b/network/ports/vip.yaml
@@ -2,6 +2,7 @@ heat_template_version: 2015-04-30
description: >
Creates a port for a VIP on the isolated network NetworkName.
+ The IP address will be chosen automatically if FixedIPs is empty.
parameters:
NetworkName:
@@ -19,14 +20,20 @@ parameters:
description: The name of the undercloud Neutron control plane
default: ctlplane
type: string
+ FixedIPs:
+ description: >
+ Control the IP allocation for the VIP port. E.g.
+ [{'ip_address':'1.2.3.4'}]
+ default: []
+ type: json
resources:
-
VipPort:
type: OS::Neutron::Port
properties:
network: {get_param: NetworkName}
name: {get_param: PortName}
+ fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
@@ -35,7 +42,7 @@ outputs:
value: {get_attr: [VipPort, fixed_ips, 0, ip_address]}
ip_subnet:
# FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
- description: IP/Subnet CIDR for the internal API network IP
+ description: IP/Subnet CIDR for the network associated with this IP
value:
list_join:
- ''
diff --git a/overcloud-resource-registry-puppet.yaml b/overcloud-resource-registry-puppet.yaml
index c9041c6b..17c1470f 100644
--- a/overcloud-resource-registry-puppet.yaml
+++ b/overcloud-resource-registry-puppet.yaml
@@ -21,9 +21,15 @@ resource_registry:
OS::TripleO::CephClusterConfig::SoftwareConfig: puppet/ceph-cluster-config.yaml
OS::TripleO::AllNodes::SoftwareConfig: puppet/all-nodes-config.yaml
OS::TripleO::BootstrapNode::SoftwareConfig: puppet/bootstrap-config.yaml
+ OS::TripleO::Tasks::PackageUpdate: extraconfig/tasks/yum_update.yaml
+
+ # Hooks for operator extra config
+ # NodeUserData == Cloud-init additional user-data, e.g cloud-config
+ # ControllerExtraConfigPre == Controller configuration pre service deployment
+ # NodeExtraConfigPost == All nodes configuration post service deployment
OS::TripleO::NodeUserData: firstboot/userdata_default.yaml
+ OS::TripleO::ControllerExtraConfigPre: puppet/extraconfig/pre_deploy/default.yaml
OS::TripleO::NodeExtraConfigPost: extraconfig/post_deploy/default.yaml
- OS::TripleO::Tasks::PackageUpdate: extraconfig/tasks/yum_update.yaml
# TripleO overcloud networks
OS::TripleO::Network: network/networks.yaml
@@ -65,9 +71,6 @@ resource_registry:
OS::TripleO::BlockStorage::Ports::StoragePort: network/ports/noop.yaml
OS::TripleO::BlockStorage::Ports::StorageMgmtPort: network/ports/noop.yaml
- # Cinder backend config for the controller role
- OS::TripleO::Controller::CinderBackend: extraconfig/controller/noop.yaml
-
# Port assignments for service virtual IPs for the controller role
OS::TripleO::Controller::Ports::RedisVipPort: network/ports/ctlplane_vip.yaml
diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml
index 14e2ac24..fd31c54d 100644
--- a/overcloud-without-mergepy.yaml
+++ b/overcloud-without-mergepy.yaml
@@ -42,6 +42,10 @@ parameters:
default: ''
description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
type: string
+ CinderEnableNfsBackend:
+ default: false
+ description: Whether to enable or not the NFS backend for Cinder
+ type: boolean
CinderEnableIscsiBackend:
default: true
description: Whether to enable or not the Iscsi backend for Cinder
@@ -76,6 +80,10 @@ parameters:
type: string
constraints:
- custom_constraint: nova.keypair
+ 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
@@ -144,6 +152,18 @@ 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
NeutronMechanismDrivers:
default: 'openvswitch'
description: |
@@ -158,6 +178,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
NovaPassword:
default: unset
description: The password for the nova service account, used by nova-api.
@@ -166,17 +190,16 @@ parameters:
NtpServer:
type: string
default: ''
+ MongoDbNoJournal:
+ default: false
+ description: Should MongoDb journaling be disabled
+ type: boolean
PublicVirtualFixedIPs:
default: []
description: >
Control the IP allocation for the PublicVirtualInterface port. E.g.
[{'ip_address':'1.2.3.4'}]
type: json
- PublicVirtualNetwork:
- default: 'ctlplane'
- type: string
- description: >
- Neutron network to allocate public virtual IP port on.
RabbitCookieSalt:
type: string
default: unset
@@ -225,6 +248,18 @@ parameters:
default: 5000
description: The size of the loopback file used by the cinder LVM driver.
type: number
+ CinderNfsMountOptions:
+ default: ''
+ description: >
+ Mount options for NFS mounts used by Cinder NFS backend. Effective
+ when CinderEnableNfsBackend is true.
+ type: string
+ CinderNfsServers:
+ default: ''
+ description: >
+ NFS servers used by Cinder NFS backend. Effective when
+ CinderEnableNfsBackend is true.
+ type: comma_delimited_list
CinderPassword:
default: unset
description: The password for the cinder service account, used by cinder-api.
@@ -276,40 +311,9 @@ parameters:
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"
- }
- ]
- }
- ]
- }
- }
+ Additional configuration to inject into the cluster. The format required
+ may be implementation specific, e.g puppet hieradata. Any role specific
+ ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
type: json
FencingConfig:
default: {}
@@ -402,6 +406,10 @@ parameters:
lower level default.
type: number
default: 0
+ MysqlMaxConnections:
+ description: Configures MySQL max_connections config setting
+ type: number
+ default: 4096
NeutronDnsmasqOptions:
default: 'dhcp-option-force=26,1400'
description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
@@ -544,6 +552,11 @@ parameters:
MysqlNetwork: internal_api
CephClusterNetwork: storage_mgmt
CephPublicNetwork: storage
+ ControllerHostnameResolveNetwork: internal_api
+ ComputeHostnameResolveNetwork: internal_api
+ BlockStorageHostnameResolveNetwork: internal_api
+ ObjectStorageHostnameResolveNetwork: internal_api
+ CephStorageHostnameResolveNetwork: storage
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry.
type: json
@@ -560,6 +573,12 @@ parameters:
type: string
constraints:
- custom_constraint: nova.flavor
+ BlockStorageExtraConfig:
+ default: {}
+ description: |
+ BlockStorage specific configuration to inject into the cluster. Same
+ structure as ExtraConfig.
+ type: json
# Object storage specific parameters
ObjectStorageCount:
@@ -573,6 +592,13 @@ parameters:
SwiftStorageImage:
default: overcloud-swift-storage
type: string
+ ObjectStorageExtraConfig:
+ default: {}
+ description: |
+ ObjectStorage specific configuration to inject into the cluster. Same
+ structure as ExtraConfig.
+ type: json
+
# Ceph storage specific parameters
CephStorageCount:
@@ -587,6 +613,12 @@ parameters:
type: string
constraints:
- custom_constraint: nova.flavor
+ CephStorageExtraConfig:
+ default: {}
+ description: |
+ CephStorage specific configuration to inject into the cluster. Same
+ structure as ExtraConfig.
+ type: json
# Hostname format for each role
# Note %index% is translated into the index of the node, e.g 0/1/2 etc
@@ -621,6 +653,39 @@ parameters:
Setting to a previously unused value during stack-update will trigger
package update on all nodes
+ # If you want to remove a specific node from a resource group, you can pass
+ # the node name or id as a <Group>RemovalPolicies parameter, for example:
+ # ComputeRemovalPolicies: [{'resource_list': ['0']}]
+ ControllerRemovalPolicies:
+ default: []
+ type: json
+ description: >
+ List of resources to be removed from ControllerResourceGroup when
+ doing an update which requires removal of specific resources.
+ ComputeRemovalPolicies:
+ default: []
+ type: json
+ description: >
+ List of resources to be removed from ComputeResourceGroup when
+ doing an update which requires removal of specific resources.
+ BlockStorageRemovalPolicies:
+ default: []
+ type: json
+ description: >
+ List of resources to be removed from BlockStorageResourceGroup when
+ doing an update which requires removal of specific resources.
+ ObjectStorageRemovalPolicies:
+ default: []
+ type: json
+ description: >
+ List of resources to be removed from ObjectStorageResourceGroup when
+ doing an update which requires removal of specific resources.
+ CephStorageRemovalPolicies:
+ default: []
+ type: json
+ description: >
+ List of resources to be removed from CephStorageResourceGroup when
+ doing an update which requires removal of specific resources.
resources:
@@ -643,6 +708,7 @@ resources:
depends_on: Networks
properties:
count: {get_param: ControllerCount}
+ removal_policies: {get_param: ControllerRemovalPolicies}
resource_def:
type: OS::TripleO::Controller
properties:
@@ -652,8 +718,11 @@ resources:
CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
CeilometerPassword: {get_param: CeilometerPassword}
CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
+ CinderNfsMountOptions: {get_param: CinderNfsMountOptions}
+ CinderNfsServers: {get_param: CinderNfsServers}
CinderPassword: {get_param: CinderPassword}
CinderISCSIHelper: {get_param: CinderISCSIHelper}
+ CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
CloudName: {get_param: CloudName}
@@ -687,10 +756,12 @@ resources:
KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
+ MysqlMaxConnections: {get_param: MysqlMaxConnections}
MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
+ NeutronExternalNetworkBridge: {get_param: NeutronExternalNetworkBridge}
NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
NeutronPublicInterface: {get_param: NeutronPublicInterface}
@@ -704,10 +775,12 @@ resources:
NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
NeutronL3HA: {get_param: NeutronL3HA}
+ NeutronDhcpAgentsPerNetwork: {get_param: NeutronDhcpAgentsPerNetwork}
NeutronNetworkType: {get_param: NeutronNetworkType}
NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
NovaPassword: {get_param: NovaPassword}
NtpServer: {get_param: NtpServer}
+ MongoDbNoJournal: {get_param: MongoDbNoJournal}
PcsdPassword: {get_resource: PcsdPassword}
PublicVirtualInterface: {get_param: PublicVirtualInterface}
RabbitPassword: {get_param: RabbitPassword}
@@ -728,7 +801,7 @@ resources:
SwiftPassword: {get_param: SwiftPassword}
SwiftReplicas: { get_param: SwiftReplicas}
VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
- PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
+ PublicVirtualIP: {get_attr: [PublicVirtualIP, ip_address]}
ServiceNetMap: {get_param: ServiceNetMap}
HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
@@ -747,6 +820,7 @@ resources:
depends_on: Networks
properties:
count: {get_param: ComputeCount}
+ removal_policies: {get_param: ComputeRemovalPolicies}
resource_def:
type: OS::TripleO::Compute
properties:
@@ -754,6 +828,7 @@ resources:
CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
CeilometerPassword: {get_param: CeilometerPassword}
+ CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
Debug: {get_param: Debug}
ExtraConfig: {get_param: ExtraConfig}
Flavor: {get_param: OvercloudComputeFlavor}
@@ -787,7 +862,7 @@ resources:
NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
- NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
+ NovaPublicIP: {get_attr: [PublicVirtualIP, ip_address]}
NovaPassword: {get_param: NovaPassword}
NtpServer: {get_param: NtpServer}
RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
@@ -810,6 +885,7 @@ resources:
depends_on: Networks
properties:
count: {get_param: BlockStorageCount}
+ removal_policies: {get_param: BlockStorageRemovalPolicies}
resource_def:
type: OS::TripleO::BlockStorage
properties:
@@ -839,12 +915,15 @@ resources:
'%stackname%': {get_param: 'OS::stack_name'}
ServiceNetMap: {get_param: ServiceNetMap}
MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
+ ExtraConfig: {get_param: ExtraConfig}
+ BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
ObjectStorage:
type: OS::Heat::ResourceGroup
depends_on: Networks
properties:
count: {get_param: ObjectStorageCount}
+ removal_policies: {get_param: ObjectStorageRemovalPolicies}
resource_def:
type: OS::TripleO::ObjectStorage
properties:
@@ -864,12 +943,15 @@ resources:
template: {get_param: ObjectStorageHostnameFormat}
params:
'%stackname%': {get_param: 'OS::stack_name'}
+ ExtraConfig: {get_param: ExtraConfig}
+ ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
CephStorage:
type: OS::Heat::ResourceGroup
depends_on: Networks
properties:
count: {get_param: CephStorageCount}
+ removal_policies: {get_param: CephStorageRemovalPolicies}
resource_def:
type: OS::TripleO::CephStorage
properties:
@@ -884,6 +966,8 @@ resources:
template: {get_param: CephStorageHostnameFormat}
params:
'%stackname%': {get_param: 'OS::stack_name'}
+ ExtraConfig: {get_param: ExtraConfig}
+ CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
ControllerIpListMap:
type: OS::TripleO::Network::Ports::NetIpListMap
@@ -960,15 +1044,15 @@ resources:
PortName: redis_virtual_ip
NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
- # same as external
+ # The public VIP is on the External net, falls back to ctlplane
PublicVirtualIP:
- type: OS::Neutron::Port
depends_on: Networks
+ type: OS::TripleO::Controller::Ports::ExternalPort
properties:
- name: public_virtual_ip
- network: {get_param: PublicVirtualNetwork}
- fixed_ips: {get_param: PublicVirtualFixedIPs}
- replacement_policy: AUTO
+ ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+ ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
+ PortName: public_virtual_ip
+ FixedIPs: {get_param: PublicVirtualFixedIPs}
InternalApiVirtualIP:
depends_on: Networks
@@ -994,7 +1078,7 @@ resources:
VipMap:
type: OS::TripleO::Network::Ports::NetIpMap
properties:
- ExternalIp: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
+ ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
@@ -1027,7 +1111,7 @@ resources:
rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
# direct configuration of Virtual IPs for each network
control_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
- public_virtual_ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
+ public_virtual_ip: {get_attr: [PublicVirtualIP, ip_address]}
internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
@@ -1186,5 +1270,32 @@ outputs:
list_join:
- ''
- - http://
- - {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
+ - {get_attr: [PublicVirtualIP, ip_address]}
- :5000/v2.0/
+ PublicVip:
+ description: Controller VIP for public API endpoints
+ value: {get_attr: [PublicVirtualIP, ip_address]}
+ CeilometerInternalVip:
+ description: VIP for Ceilometer API internal endpoint
+ value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
+ CinderInternalVip:
+ description: VIP for Cinder API internal endpoint
+ value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
+ GlanceInternalVip:
+ description: VIP for Glance API internal endpoint
+ value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
+ HeatInternalVip:
+ description: VIP for Heat API internal endpoint
+ value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
+ KeystoneInternalVip:
+ description: VIP for Keystone API internal endpoint
+ value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
+ NeutronInternalVip:
+ description: VIP for Neutron API internal endpoint
+ value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
+ NovaInternalVip:
+ description: VIP for Nova API internal endpoint
+ value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
+ SwiftInternalVip:
+ description: VIP for Swift Proxy internal endpoint
+ value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
diff --git a/puppet/ceph-storage-puppet.yaml b/puppet/ceph-storage-puppet.yaml
index 245d8ebb..fcf4259f 100644
--- a/puppet/ceph-storage-puppet.yaml
+++ b/puppet/ceph-storage-puppet.yaml
@@ -42,6 +42,18 @@ parameters:
Hostname:
type: string
default: '' # Defaults to Heat created hostname
+ ExtraConfig:
+ default: {}
+ description: |
+ Additional hiera configuration to inject into the cluster. Note
+ that CephStorageExtraConfig takes precedence over ExtraConfig.
+ type: json
+ CephStorageExtraConfig:
+ default: {}
+ description: |
+ Role specific additional hiera configuration to inject into the cluster.
+ type: json
+
resources:
CephStorage:
@@ -76,6 +88,12 @@ resources:
StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
+ NetIpMap:
+ type: OS::TripleO::Network::Ports::NetIpMap
+ properties:
+ StorageIp: {get_attr: [StoragePort, ip_address]}
+ StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
+
NetIpSubnetMap:
type: OS::TripleO::Network::Ports::NetIpMap
properties:
@@ -112,6 +130,8 @@ resources:
hiera:
hierarchy:
- heat_config_%{::deploy_config_name}
+ - ceph_extraconfig
+ - extraconfig
- ceph_cluster # provided by CephClusterConfig
- ceph
- '"%{::osfamily}"'
@@ -119,11 +139,15 @@ resources:
datafiles:
common:
raw_data: {get_file: hieradata/common.yaml}
+ ceph_extraconfig:
+ mapped_data: {get_param: CephStorageExtraConfig}
+ extraconfig:
+ mapped_data: {get_param: ExtraConfig}
ceph:
raw_data: {get_file: hieradata/ceph.yaml}
mapped_data:
ntp::servers: {get_input: ntp_servers}
- enable_package_install: {get_input: enable_package_install}
+ tripleo::packages::enable_install: {get_input: enable_package_install}
ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
ceph::profile::params::public_network: {get_input: ceph_public_network}
@@ -145,7 +169,7 @@ outputs:
str_replace:
template: "IP HOST.localdomain HOST"
params:
- IP: {get_attr: [CephStorage, networks, ctlplane, 0]}
+ IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
HOST: {get_attr: [CephStorage, name]}
nova_server_resource:
description: Heat resource handle for the ceph storage server
@@ -160,4 +184,3 @@ outputs:
config_identifier:
description: identifier which changes if the node configuration may need re-applying
value: {get_attr: [CephStorageDeployment, deploy_stdout]}
-
diff --git a/puppet/cinder-storage-puppet.yaml b/puppet/cinder-storage-puppet.yaml
index cc8d17c4..091d1f1b 100644
--- a/puppet/cinder-storage-puppet.yaml
+++ b/puppet/cinder-storage-puppet.yaml
@@ -31,40 +31,13 @@ parameters:
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"
- }
- ]
- }
- ]
- }
- }
+ Additional hiera configuration to inject into the cluster. Note
+ that BlockStorageExtraConfig takes precedence over ExtraConfig.
+ type: json
+ BlockStorageExtraConfig:
+ default: {}
+ description: |
+ Role specific additional hiera configuration to inject into the cluster.
type: json
Flavor:
description: Flavor for block storage nodes to request when deploying.
@@ -235,6 +208,8 @@ resources:
hiera:
hierarchy:
- heat_config_%{::deploy_config_name}
+ - volume_extraconfig
+ - extraconfig
- volume
- all_nodes # provided by allNodesConfig
- '"%{::osfamily}"'
@@ -242,6 +217,10 @@ resources:
datafiles:
common:
raw_data: {get_file: hieradata/common.yaml}
+ volume_extraconfig:
+ mapped_data: {get_param: BlockStorageExtraConfig}
+ extraconfig:
+ mapped_data: {get_param: ExtraConfig}
volume:
raw_data: {get_file: hieradata/volume.yaml}
mapped_data:
@@ -258,7 +237,7 @@ resources:
cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
cinder::glance::glance_api_servers: {get_input: glance_api_servers}
ntp::servers: {get_input: ntp_servers}
- enable_package_install: {get_input: enable_package_install}
+ tripleo::packages::enable_install: {get_input: enable_package_install}
snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
@@ -280,7 +259,7 @@ outputs:
str_replace:
template: "IP HOST.localdomain HOST"
params:
- IP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
+ IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
HOST: {get_attr: [BlockStorage, name]}
nova_server_resource:
description: Heat resource handle for the block storage server
diff --git a/puppet/compute-puppet.yaml b/puppet/compute-puppet.yaml
index afe85d18..e85a96aa 100644
--- a/puppet/compute-puppet.yaml
+++ b/puppet/compute-puppet.yaml
@@ -25,6 +25,10 @@ parameters:
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
Debug:
default: ''
description: Set to True to enable debugging on all services.
@@ -32,40 +36,8 @@ parameters:
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"
- }
- ]
- }
- ]
- }
- }
+ Additional hiera configuration to inject into the cluster. Note
+ that NovaComputeExtraConfig takes precedence over ExtraConfig.
type: json
Flavor:
description: Flavor for the nova compute node
@@ -152,6 +124,18 @@ parameters:
The tunnel types for the Neutron tenant network. To specify multiple
values, use a comma separated string, like so: 'gre,vxlan'
default: 'gre'
+ 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
@@ -328,6 +312,8 @@ resources:
hiera:
hierarchy:
- heat_config_%{::deploy_config_name}
+ - compute_extraconfig
+ - extraconfig
- compute
- ceph_cluster # provided by CephClusterConfig
- ceph
@@ -335,6 +321,10 @@ resources:
- '"%{::osfamily}"'
- common
datafiles:
+ compute_extraconfig:
+ mapped_data: {get_param: NovaComputeExtraConfig}
+ extraconfig:
+ mapped_data: {get_param: ExtraConfig}
common:
raw_data: {get_file: hieradata/common.yaml}
ceph:
@@ -342,6 +332,7 @@ resources:
compute:
raw_data: {get_file: hieradata/compute.yaml}
mapped_data:
+ cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
nova::debug: {get_input: debug}
nova::rabbit_userid: {get_input: rabbit_username}
nova::rabbit_password: {get_input: rabbit_password}
@@ -378,6 +369,8 @@ resources:
neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
neutron_tunnel_types: {get_input: neutron_tunnel_types}
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::enable_tunneling: {get_input: neutron_enable_tunneling}
neutron_physical_bridge: {get_input: neutron_physical_bridge}
@@ -392,7 +385,7 @@ resources:
neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
admin_password: {get_input: admin_password}
ntp::servers: {get_input: ntp_servers}
- enable_package_install: {get_input: enable_package_install}
+ tripleo::packages::enable_install: {get_input: enable_package_install}
NovaComputeDeployment:
type: OS::TripleO::SoftwareDeployment
@@ -401,6 +394,7 @@ resources:
config: {get_resource: NovaComputeConfig}
server: {get_resource: NovaCompute}
input_values:
+ cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
debug: {get_param: Debug}
nova_compute_driver: {get_param: NovaComputeDriver}
nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
@@ -433,6 +427,22 @@ resources:
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']"
+ 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:
str_replace:
template: "['RANGES']"
@@ -510,7 +520,7 @@ outputs:
str_replace:
template: "IP HOST.localdomain HOST"
params:
- IP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+ IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
HOST: {get_attr: [NovaCompute, name]}
nova_server_resource:
description: Heat resource handle for the Nova compute server
@@ -519,4 +529,3 @@ outputs:
config_identifier:
description: identifier which changes if the node configuration may need re-applying
value: {get_attr: [NovaComputeDeployment, deploy_stdout]}
-
diff --git a/puppet/controller-puppet.yaml b/puppet/controller-puppet.yaml
index 3aeb40ec..89b35c31 100644
--- a/puppet/controller-puppet.yaml
+++ b/puppet/controller-puppet.yaml
@@ -28,6 +28,10 @@ parameters:
description: The password for the ceilometer service and db account.
type: string
hidden: true
+ CinderEnableNfsBackend:
+ default: false
+ description: Whether to enable or not the NFS backend for Cinder
+ type: boolean
CinderEnableIscsiBackend:
default: true
description: Whether to enable or not the Iscsi backend for Cinder
@@ -44,6 +48,18 @@ parameters:
default: 5000
description: The size of the loopback file used by the cinder LVM driver.
type: number
+ CinderNfsMountOptions:
+ default: ''
+ description: >
+ Mount options for NFS mounts used by Cinder NFS backend. Effective
+ when CinderEnableNfsBackend is true.
+ type: string
+ CinderNfsServers:
+ default: ''
+ description: >
+ NFS servers used by Cinder NFS backend. Effective when
+ CinderEnableNfsBackend is true.
+ type: comma_delimited_list
CinderPassword:
default: unset
description: The password for the cinder service and db account, used by cinder-api.
@@ -61,8 +77,7 @@ parameters:
ControllerExtraConfig:
default: {}
description: |
- Controller specific configuration to inject into the cluster. Same
- structure as ExtraConfig.
+ Controller specific hiera configuration data to inject into the cluster.
type: json
ControlVirtualInterface:
default: 'br-ex'
@@ -91,40 +106,8 @@ parameters:
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": "compute_manager",
- "value": "ironic.nova.compute.manager.ClusterComputeManager"
- }
- ]
- },
- {"section": "cells",
- "values":
- [{"option": "driver",
- "value": "nova.cells.rpc_driver.CellsRPCDriver"
- }
- ]
- }
- ]
- }
- }
+ Additional hieradata to inject into the cluster, note that
+ ControllerExtraConfig takes precedence over ExtraConfig.
type: json
FencingConfig:
default: {}
@@ -258,10 +241,18 @@ parameters:
lower level default.
type: number
default: 0
+ MysqlMaxConnections:
+ description: Configures MySQL max_connections config setting
+ type: number
+ default: 4096
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
@@ -284,6 +275,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
NeutronDVR:
default: 'False'
description: Whether to configure Neutron Distributed Virtual Routers
@@ -361,11 +356,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 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: ''
@@ -607,7 +618,17 @@ resources:
admin_token: {get_param: AdminToken}
neutron_public_interface_ip: {get_param: NeutronPublicInterfaceIP}
debug: {get_param: Debug}
+ cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
+ cinder_nfs_mount_options: {get_param: CinderNfsMountOptions}
+ cinder_nfs_servers:
+ str_replace:
+ template: "['SERVERS']"
+ params:
+ SERVERS:
+ list_join:
+ - "','"
+ - {get_param: CinderNfsServers}
cinder_lvm_loop_device_size: {get_param: CinderLVMLoopDeviceSize}
cinder_password: {get_param: CinderPassword}
cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
@@ -670,11 +691,18 @@ resources:
- - 'http://'
- {get_param: KeystonePublicApiVirtualIP}
- ':5000/v2.0/'
+ keystone_ec2_uri:
+ list_join:
+ - ''
+ - - 'http://'
+ - {get_param: KeystonePublicApiVirtualIP}
+ - ':5000/v2.0/ec2tokens'
enable_fencing: {get_param: EnableFencing}
enable_galera: {get_param: EnableGalera}
enable_ceph_storage: {get_param: EnableCephStorage}
enable_swift_storage: {get_param: EnableSwiftStorage}
mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
+ mysql_max_connections: {get_param: MysqlMaxConnections}
mysql_root_password: {get_param: MysqlRootPassword}
mysql_cluster_name:
str_replace:
@@ -688,6 +716,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:
str_replace:
template: "['RANGES']"
@@ -697,12 +726,29 @@ resources:
- "','"
- {get_param: NeutronNetworkVLANRanges}
neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
+ neutron_external_network_bridge: {get_param: NeutronExternalNetworkBridge}
neutron_public_interface: {get_param: NeutronPublicInterface}
neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
neutron_public_interface_default_route: {get_param: NeutronPublicInterfaceDefaultRoute}
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:
@@ -758,6 +804,7 @@ resources:
rabbit_cookie: {get_param: RabbitCookie}
rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
rabbit_client_port: {get_param: RabbitClientPort}
+ mongodb_no_journal: {get_param: MongoDbNoJournal}
ntp_servers:
str_replace:
template: '["server"]'
@@ -814,6 +861,8 @@ resources:
hiera:
hierarchy:
- heat_config_%{::deploy_config_name}
+ - controller_extraconfig
+ - extraconfig
- controller
- object
- swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
@@ -824,7 +873,12 @@ resources:
- vip_data # provided by vip-config
- '"%{::osfamily}"'
- common
+ - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
datafiles:
+ controller_extraconfig:
+ mapped_data: {get_param: ControllerExtraConfig}
+ extraconfig:
+ mapped_data: {get_param: ExtraConfig}
common:
raw_data: {get_file: hieradata/common.yaml}
ceph:
@@ -862,7 +916,10 @@ resources:
tripleo::ringbuilder::build_ring: True
# Cinder
+ cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
cinder_enable_rbd_backend: {get_input: cinder_enable_rbd_backend}
+ cinder_nfs_mount_options: {get_input: cinder_nfs_mount_options}
+ cinder_nfs_servers: {get_input: cinder_nfs_servers}
cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
cinder_iscsi_ip_address: {get_input: cinder_iscsi_network}
@@ -914,6 +971,7 @@ resources:
heat::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
heat::rabbit_port: {get_input: rabbit_client_port}
heat::auth_uri: {get_input: keystone_auth_uri}
+ heat::keystone_ec2_uri: {get_input: keystone_ec2_uri}
heat::identity_uri: {get_input: keystone_identity_uri}
heat::keystone_password: {get_input: heat_password}
heat::api::bind_host: {get_input: heat_api_network}
@@ -935,12 +993,14 @@ resources:
keystone::debug: {get_input: debug}
# MongoDB
mongodb::server::bind_ip: {get_input: mongo_db_network}
+ mongodb::server::nojournal: {get_input: mongodb_no_journal}
# MySQL
admin_password: {get_input: admin_password}
enable_galera: {get_input: enable_galera}
enable_ceph_storage: {get_input: enable_ceph_storage}
enable_swift_storage: {get_input: enable_swift_storage}
mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
+ mysql_max_connections: {get_input: mysql_max_connections}
mysql::server::root_password: {get_input: mysql_root_password}
mysql_cluster_name: {get_input: mysql_cluster_name}
mysql_bind_host: {get_input: mysql_network}
@@ -955,6 +1015,7 @@ resources:
neutron::server::auth_uri: {get_input: keystone_auth_uri}
neutron::server::identity_uri: {get_input: keystone_identity_uri}
neutron::server::database_connection: {get_input: neutron_dsn}
+ neutron::agents::l3::external_network_bridge: {get_input: neutron_external_network_bridge}
neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
neutron_flat_networks: {get_input: neutron_flat_networks}
@@ -965,7 +1026,10 @@ resources:
neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
neutron::server::allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
neutron::server::l3_ha: {get_input: neutron_l3_ha}
+ neutron::dhcp_agents_per_network: {get_input: neutron_dhcp_agents_per_network}
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_public_interface: {get_input: neutron_public_interface}
neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
@@ -1038,7 +1102,14 @@ resources:
public_virtual_interface: {get_input: public_virtual_interface}
tripleo::loadbalancer::control_virtual_interface: {get_input: control_virtual_interface}
tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
- enable_package_install: {get_input: enable_package_install}
+ tripleo::packages::enable_install: {get_input: enable_package_install}
+
+ # Hook for site-specific additional pre-deployment config, e.g extra hieradata
+ ControllerExtraConfigPre:
+ depends_on: ControllerDeployment
+ type: OS::TripleO::ControllerExtraConfigPre
+ properties:
+ server: {get_resource: Controller}
UpdateConfig:
type: OS::TripleO::Tasks::PackageUpdate
@@ -1088,7 +1159,7 @@ outputs:
str_replace:
template: IP HOST.localdomain HOST CLOUDNAME
params:
- IP: {get_attr: [Controller, networks, ctlplane, 0]}
+ IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
HOST: {get_attr: [Controller, name]}
CLOUDNAME: {get_param: CloudName}
nova_server_resource:
@@ -1111,4 +1182,8 @@ outputs:
IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
config_identifier:
description: identifier which changes if the controller configuration may need re-applying
- value: {get_attr: [ControllerDeployment, deploy_stdout]}
+ value:
+ list_join:
+ - ','
+ - - {get_attr: [ControllerDeployment, deploy_stdout]}
+ - {get_attr: [ControllerExtraConfigPre, deploy_stdout]}
diff --git a/puppet/extraconfig/pre_deploy/README b/puppet/extraconfig/pre_deploy/README
new file mode 100644
index 00000000..51fc3406
--- /dev/null
+++ b/puppet/extraconfig/pre_deploy/README
@@ -0,0 +1,12 @@
+This tree contains additional configuration which happens "pre deployment",
+e.g before the OpenStack services themselves are configured but after the
+nodes themselves have been provisioned and initially configured.
+
+Typically for puppet deployments these additional configs will put in place
+hieradata which is then consumed by the subsequent puppet configuration
+which occurs during the post-deployment phase.
+
+If you need to specify multiple configs, you can chain them together in a
+template, see the multiple.yaml example:
+
+ OS::TripleO::ControllerExtraConfigPre: puppet/extraconfig/pre_deploy/controller/multiple.yaml
diff --git a/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml b/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
new file mode 100644
index 00000000..18295a2f
--- /dev/null
+++ b/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
@@ -0,0 +1,145 @@
+heat_template_version: 2015-04-30
+
+description: Configure hieradata for Cinder Netapp configuration
+
+parameters:
+ server:
+ description: ID of the controller node to apply this config to
+ type: string
+
+ # Config specific parameters, to be provided via parameter_defaults
+ CinderEnableNetappBackend:
+ type: boolean
+ default: true
+ CinderNetappBackendName:
+ type: string
+ default: 'tripleo_netapp'
+ CinderNetappLogin:
+ type: string
+ CinderNetappPassword:
+ type: string
+ CinderNetappServerHostname:
+ type: string
+ CinderNetappServerPort:
+ type: string
+ default: '80'
+ CinderNetappSizeMultiplier:
+ type: string
+ default: '1.2'
+ CinderNetappStorageFamily:
+ type: string
+ default: 'ontap_cluster'
+ CinderNetappStorageProtocol:
+ type: string
+ default: 'nfs'
+ CinderNetappTransportType:
+ type: string
+ default: 'http'
+ CinderNetappVfiler:
+ type: string
+ default: ''
+ CinderNetappVolumeList:
+ type: string
+ default: ''
+ CinderNetappVserver:
+ type: string
+ default: ''
+ CinderNetappPartnerBackendName:
+ type: string
+ default: ''
+ CinderNetappNfsShares:
+ type: string
+ default: ''
+ CinderNetappNfsSharesConfig:
+ type: string
+ default: '/etc/cinder/shares.conf'
+ CinderNetappNfsMountOptions:
+ type: string
+ default: ''
+ CinderNetappCopyOffloadToolPath:
+ type: string
+ default: ''
+ CinderNetappControllerIps:
+ type: string
+ default: ''
+ CinderNetappSaPassword:
+ type: string
+ default: ''
+ CinderNetappStoragePools:
+ type: string
+ default: ''
+ CinderNetappEseriesHostType:
+ type: string
+ default: 'linux_dm_mp'
+ CinderNetappWebservicePath:
+ type: string
+ default: '/devmgr/v2'
+
+resources:
+ CinderNetappConfig:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config:
+ hiera:
+ datafiles:
+ cinder_netapp_data:
+ mapped_data:
+ cinder_enable_netapp_backend: {get_input: EnableNetappBackend}
+ cinder::backend::netapp::title: {get_input: NetappBackendName}
+ cinder::backend::netapp::netapp_login: {get_input: NetappLogin}
+ cinder::backend::netapp::netapp_password: {get_input: NetappPassword}
+ cinder::backend::netapp::netapp_server_hostname: {get_input: NetappServerHostname}
+ cinder::backend::netapp::netapp_server_port: {get_input: NetappServerPort}
+ cinder::backend::netapp::netapp_size_multiplier: {get_input: NetappSizeMultiplier}
+ cinder::backend::netapp::netapp_storage_family: {get_input: NetappStorageFamily}
+ cinder::backend::netapp::netapp_storage_protocol: {get_input: NetappStorageProtocol}
+ cinder::backend::netapp::netapp_transport_type: {get_input: NetappTransportType}
+ cinder::backend::netapp::netapp_vfiler: {get_input: NetappVfiler}
+ cinder::backend::netapp::netapp_volume_list: {get_input: NetappVolumeList}
+ cinder::backend::netapp::netapp_vserver: {get_input: NetappVserver}
+ cinder::backend::netapp::netapp_partner_backend_name: {get_input: NetappPartnerBackendName}
+ cinder::backend::netapp::nfs_shares: {get_input: NetappNfsShares}
+ cinder::backend::netapp::nfs_shares_config: {get_input: NetappNfsSharesConfig}
+ cinder::backend::netapp::nfs_mount_options: {get_input: NetappNfsMountOptions}
+ cinder::backend::netapp::netapp_copyoffload_tool_path: {get_input: NetappCopyOffloadToolPath}
+ cinder::backend::netapp::netapp_controller_ips: {get_input: NetappControllerIps}
+ cinder::backend::netapp::netapp_sa_password: {get_input: NetappSaPassword}
+ cinder::backend::netapp::netapp_storage_pools: {get_input: NetappStoragePools}
+ cinder::backend::netapp::netapp_eseries_host_type: {get_input: NetappEseriesHostType}
+ cinder::backend::netapp::netapp_webservice_path: {get_input: NetappWebservicePath}
+
+ CinderNetappDeployment:
+ type: OS::Heat::StructuredDeployment
+ properties:
+ config: {get_resource: CinderNetappConfig}
+ server: {get_param: server}
+ input_values:
+ EnableNetappBackend: {get_param: CinderEnableNetappBackend}
+ NetappBackendName: {get_param: CinderNetappBackendName}
+ NetappLogin: {get_param: CinderNetappLogin}
+ NetappPassword: {get_param: CinderNetappPassword}
+ NetappServerHostname: {get_param: CinderNetappServerHostname}
+ NetappServerPort: {get_param: CinderNetappServerPort}
+ NetappSizeMultiplier: {get_param: CinderNetappSizeMultiplier}
+ NetappStorageFamily: {get_param: CinderNetappStorageFamily}
+ NetappStorageProtocol: {get_param: CinderNetappStorageProtocol}
+ NetappTransportType: {get_param: CinderNetappTransportType}
+ NetappVfiler: {get_param: CinderNetappVfiler}
+ NetappVolumeList: {get_param: CinderNetappVolumeList}
+ NetappVserver: {get_param: CinderNetappVserver}
+ NetappPartnerBackendName: {get_param: CinderNetappPartnerBackendName}
+ NetappNfsShares: {get_param: CinderNetappNfsShares}
+ NetappNfsSharesConfig: {get_param: CinderNetappNfsSharesConfig}
+ NetappNfsMountOptions: {get_param: CinderNetappNfsMountOptions}
+ NetappCopyOffloadToolPath: {get_param: CinderNetappCopyOffloadToolPath}
+ NetappControllerIps: {get_param: CinderNetappControllerIps}
+ NetappSaPassword: {get_param: CinderNetappSaPassword}
+ NetappStoragePools: {get_param: CinderNetappStoragePools}
+ NetappEseriesHostType: {get_param: CinderNetappEseriesHostType}
+ NetappWebservicePath: {get_param: CinderNetappWebservicePath}
+
+outputs:
+ deploy_stdout:
+ description: Deployment reference, used to trigger puppet apply on changes
+ value: {get_attr: [CinderNetappDeployment, deploy_stdout]}
diff --git a/puppet/extraconfig/pre_deploy/controller/multiple.yaml b/puppet/extraconfig/pre_deploy/controller/multiple.yaml
new file mode 100644
index 00000000..f949a397
--- /dev/null
+++ b/puppet/extraconfig/pre_deploy/controller/multiple.yaml
@@ -0,0 +1,18 @@
+heat_template_version: 2014-10-16
+description: 'Extra Pre-Deployment Config, multiple'
+parameters:
+ server:
+ type: string
+
+resources:
+
+ CinderNetappConfig:
+ type: cinder-netapp.yaml
+ properties:
+ server: {get_param: server}
+
+ # Note depends_on may be used for serialization if ordering is important
+ OtherConfig:
+ type: other.yaml
+ properties:
+ server: {get_param: server}
diff --git a/puppet/extraconfig/pre_deploy/default.yaml b/puppet/extraconfig/pre_deploy/default.yaml
new file mode 100644
index 00000000..dcbc6811
--- /dev/null
+++ b/puppet/extraconfig/pre_deploy/default.yaml
@@ -0,0 +1,8 @@
+heat_template_version: 2014-10-16
+description: 'Noop Extra Pre-Deployment Config'
+parameters:
+ server:
+ type: string
+outputs:
+ deploy_stdout:
+ value: "None"
diff --git a/puppet/hieradata/ceph.yaml b/puppet/hieradata/ceph.yaml
index 280457df..6eb0e671 100644
--- a/puppet/hieradata/ceph.yaml
+++ b/puppet/hieradata/ceph.yaml
@@ -11,3 +11,5 @@ ceph_pools:
- volumes
- vms
- images
+
+ceph_classes: [] \ No newline at end of file
diff --git a/puppet/hieradata/common.yaml b/puppet/hieradata/common.yaml
index 40c44aef..272a6688 100644
--- a/puppet/hieradata/common.yaml
+++ b/puppet/hieradata/common.yaml
@@ -13,10 +13,7 @@ nova::network::neutron::vif_plugging_is_fatal: false
nova::network::neutron::vif_plugging_timeout: 30
nova::network::neutron::dhcp_domain: ''
-neutron::plugins::ml2::tunnel_id_ranges:
- - '1:1000'
-neutron::plugins::ml2::vni_ranges:
- - '1:1000'
+neutron::allow_overlapping_ips: true
neutron::plugins::ml2::type_drivers:
- flat
- gre
@@ -29,4 +26,4 @@ sysctl_settings:
net.ipv4.tcp_keepalive_probes:
value: 5
net.ipv4.tcp_keepalive_time:
- value: 5 \ No newline at end of file
+ value: 5
diff --git a/puppet/hieradata/compute.yaml b/puppet/hieradata/compute.yaml
index 4915d3c8..bb49bb90 100644
--- a/puppet/hieradata/compute.yaml
+++ b/puppet/hieradata/compute.yaml
@@ -15,4 +15,12 @@ nova::compute::rbd::rbd_keyring: 'client.openstack'
nova::compute::rbd::libvirt_images_rbd_pool: 'vms'
nova::compute::rbd::libvirt_rbd_secret_uuid: "%{hiera('ceph::profile::params::fsid')}"
+nova::config::nova_config:
+ cinder/catalog_info:
+ value: 'volumev2:cinderv2:internalURL'
+ DEFAULT/default_floating_pool:
+ value: 'public'
+
ceilometer::agent::auth::auth_tenant_name: 'service'
+
+compute_classes: [] \ No newline at end of file
diff --git a/puppet/hieradata/controller.yaml b/puppet/hieradata/controller.yaml
index 77c0e7ec..25719709 100644
--- a/puppet/hieradata/controller.yaml
+++ b/puppet/hieradata/controller.yaml
@@ -22,6 +22,7 @@ rabbitmq_config_variables:
cluster_partition_handling: 'pause_minority'
mongodb::server::replset: tripleo
+mongodb::server::journal: false
redis::port: 6379
redis::sentinel::master_name: "%{hiera('bootstrap_nodeid')}"
@@ -65,7 +66,6 @@ glance::backend::rbd::rbd_store_user: 'openstack'
neutron::core_plugin: 'ml2'
neutron::service_plugins:
- 'neutron.services.l3_router.l3_router_plugin.L3RouterPlugin'
-neutron::dhcp_agents_per_network: 2
neutron::server::sync_db: true
neutron::agents::dhcp::dnsmasq_config_file: /etc/neutron/dnsmasq-neutron.conf
@@ -73,11 +73,14 @@ neutron::agents::dhcp::dnsmasq_config_file: /etc/neutron/dnsmasq-neutron.conf
nova::notify_on_state_change: 'vm_and_task_state'
nova::api::osapi_v3: true
+nova::config::nova_config:
+ DEFAULT/default_floating_pool:
+ value: 'public'
+
# cinder
cinder::scheduler::scheduler_driver: cinder.scheduler.filter_scheduler.FilterScheduler
# heat
-heat::engine::heat_stack_user_role: ''
heat::engine::configure_delegated_roles: false
heat::engine::trusts_delegated_roles: []
heat::instance_user: ''
@@ -112,3 +115,5 @@ tripleo::loadbalancer::heat_api: true
tripleo::loadbalancer::heat_cloudwatch: true
tripleo::loadbalancer::heat_cfn: true
tripleo::loadbalancer::horizon: true
+
+controller_classes: []
diff --git a/puppet/hieradata/object.yaml b/puppet/hieradata/object.yaml
index 59a8b1cf..3a379035 100644
--- a/puppet/hieradata/object.yaml
+++ b/puppet/hieradata/object.yaml
@@ -14,3 +14,5 @@ swift::proxy::keystone::operator_roles:
- admin
- swiftoperator
- ResellerAdmin
+
+object_classes: [] \ No newline at end of file
diff --git a/puppet/hieradata/volume.yaml b/puppet/hieradata/volume.yaml
index ad9e2c2a..f4cd78a9 100644
--- a/puppet/hieradata/volume.yaml
+++ b/puppet/hieradata/volume.yaml
@@ -2,3 +2,11 @@
# cinder
cinder::scheduler::scheduler_driver: cinder.scheduler.filter_scheduler.FilterScheduler
+
+cinder::config::cinder_config:
+ DEFAULT/nova_catalog_info:
+ value: 'compute:Compute Service:internalURL'
+ DEFAULT/swift_catalog_info:
+ value: 'object-store:swift:internalURL'
+
+volume_classes: [] \ No newline at end of file
diff --git a/puppet/manifests/overcloud_cephstorage.pp b/puppet/manifests/overcloud_cephstorage.pp
index b645f9fe..cf2626ac 100644
--- a/puppet/manifests/overcloud_cephstorage.pp
+++ b/puppet/manifests/overcloud_cephstorage.pp
@@ -13,16 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-if !str2bool(hiera('enable_package_install', 'false')) {
- case $::osfamily {
- 'RedHat': {
- Package { provider => 'norpm' } # provided by tripleo-puppet
- }
- default: {
- warning('enable_package_install option not supported.')
- }
- }
-}
+include tripleo::packages
create_resources(sysctl::value, hiera('sysctl_settings'), {})
@@ -31,4 +22,6 @@ if count(hiera('ntp::servers')) > 0 {
}
include ::ceph::profile::client
-include ::ceph::profile::osd \ No newline at end of file
+include ::ceph::profile::osd
+
+hiera_include('ceph_classes') \ No newline at end of file
diff --git a/puppet/manifests/overcloud_compute.pp b/puppet/manifests/overcloud_compute.pp
index cc26f851..e6fa9471 100644
--- a/puppet/manifests/overcloud_compute.pp
+++ b/puppet/manifests/overcloud_compute.pp
@@ -13,16 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-if !str2bool(hiera('enable_package_install', 'false')) {
- case $::osfamily {
- 'RedHat': {
- Package { provider => 'norpm' } # provided by tripleo-puppet
- }
- default: {
- warning('enable_package_install option not supported.')
- }
- }
-}
+include tripleo::packages
create_resources(sysctl::value, hiera('sysctl_settings'), {})
@@ -44,6 +35,7 @@ exec { 'libvirt-default-net-destroy':
}
include ::nova
+include ::nova::config
include ::nova::compute
nova_config {
@@ -61,6 +53,17 @@ if $nova_enable_rbd_backend {
}
}
+if hiera('cinder_enable_nfs_backend', false) {
+ if ($::selinux != "false") {
+ selboolean { 'virt_use_nfs':
+ value => on,
+ persistent => true,
+ } -> Package['nfs-utils']
+ }
+
+ package {'nfs-utils': } -> Service['nova-compute']
+}
+
include ::nova::compute::libvirt
include ::nova::network::neutron
include ::neutron
@@ -88,3 +91,5 @@ class { 'snmp':
agentaddress => ['udp:161','udp6:[::1]:161'],
snmpd_config => [ join(['rouser ', hiera('snmpd_readonly_user_name')]), 'proc cron', 'includeAllDisks 10%', 'master agentx', 'trapsink localhost public', 'iquerySecName internalUser', 'rouser internalUser', 'defaultMonitors yes', 'linkUpDownNotifications yes' ],
}
+
+hiera_include('compute_classes')
diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp
index 896545c3..27b7328d 100644
--- a/puppet/manifests/overcloud_controller.pp
+++ b/puppet/manifests/overcloud_controller.pp
@@ -13,16 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-if !str2bool(hiera('enable_package_install', 'false')) {
- case $::osfamily {
- 'RedHat': {
- Package { provider => 'norpm' } # provided by tripleo-puppet
- }
- default: {
- warning('enable_package_install option not supported.')
- }
- }
-}
+include tripleo::packages
if hiera('step') >= 1 {
@@ -90,7 +81,7 @@ if hiera('step') >= 2 {
override_options => {
'mysqld' => {
'bind-address' => hiera('mysql_bind_host'),
- 'max_connections' => '1024',
+ 'max_connections' => hiera('mysql_max_connections'),
'open_files_limit' => '-1',
},
}
@@ -253,7 +244,10 @@ if hiera('step') >= 3 {
include ::glance::registry
include join(['::glance::backend::', $glance_backend])
- include ::nova
+ class { '::nova' :
+ memcached_servers => suffix(hiera('memcache_node_ips'), ':11211'),
+ }
+ include ::nova::config
include ::nova::api
include ::nova::cert
include ::nova::conductor
@@ -343,16 +337,53 @@ if hiera('step') >= 3 {
"${cinder_netapp_backend}/host": value => 'hostgroup';
}
- if hiera('cinder_netapp_nfs_shares', undef) {
- $cinder_netapp_nfs_shares = split(hiera('cinder_netapp_nfs_shares', undef), ',')
+ if hiera('cinder::backend::netapp::nfs_shares', undef) {
+ $cinder_netapp_nfs_shares = split(hiera('cinder::backend::netapp::nfs_shares', undef), ',')
}
cinder::backend::netapp { $cinder_netapp_backend :
- nfs_shares => $cinder_netapp_nfs_shares,
+ netapp_login => hiera('cinder::backend::netapp::netapp_login', undef),
+ netapp_password => hiera('cinder::backend::netapp::netapp_password', undef),
+ netapp_server_hostname => hiera('cinder::backend::netapp::netapp_server_hostname', undef),
+ netapp_server_port => hiera('cinder::backend::netapp::netapp_server_port', undef),
+ netapp_size_multiplier => hiera('cinder::backend::netapp::netapp_size_multiplier', undef),
+ netapp_storage_family => hiera('cinder::backend::netapp::netapp_storage_family', undef),
+ netapp_storage_protocol => hiera('cinder::backend::netapp::netapp_storage_protocol', undef),
+ netapp_transport_type => hiera('cinder::backend::netapp::netapp_transport_type', undef),
+ netapp_vfiler => hiera('cinder::backend::netapp::netapp_vfiler', undef),
+ netapp_volume_list => hiera('cinder::backend::netapp::netapp_volume_list', undef),
+ netapp_vserver => hiera('cinder::backend::netapp::netapp_vserver', undef),
+ netapp_partner_backend_name => hiera('cinder::backend::netapp::netapp_partner_backend_name', undef),
+ nfs_shares => $cinder_netapp_nfs_shares,
+ nfs_shares_config => hiera('cinder::backend::netapp::nfs_shares_config', undef),
+ netapp_copyoffload_tool_path => hiera('cinder::backend::netapp::netapp_copyoffload_tool_path', undef),
+ netapp_controller_ips => hiera('cinder::backend::netapp::netapp_controller_ips', undef),
+ netapp_sa_password => hiera('cinder::backend::netapp::netapp_sa_password', undef),
+ netapp_storage_pools => hiera('cinder::backend::netapp::netapp_storage_pools', undef),
+ netapp_eseries_host_type => hiera('cinder::backend::netapp::netapp_eseries_host_type', undef),
+ netapp_webservice_path => hiera('cinder::backend::netapp::netapp_webservice_path', undef),
+ }
+ }
+
+ if hiera('cinder_enable_nfs_backend', false) {
+ $cinder_nfs_backend = 'tripleo_nfs'
+
+ if ($::selinux != "false") {
+ selboolean { 'virt_use_nfs':
+ value => on,
+ persistent => true,
+ } -> Package['nfs-utils']
+ }
+
+ package {'nfs-utils': } ->
+ cinder::backend::nfs { $cinder_nfs_backend :
+ nfs_servers => hiera('cinder_nfs_servers'),
+ nfs_mount_options => hiera('cinder_nfs_mount_options'),
+ nfs_shares_config => '/etc/cinder/shares-nfs.conf',
}
}
- $cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend, $cinder_netapp_backend])
+ $cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend, $cinder_netapp_backend, $cinder_nfs_backend])
class { '::cinder::backends' :
enabled_backends => $cinder_enabled_backends,
}
@@ -438,4 +469,6 @@ if hiera('step') >= 3 {
snmpd_config => [ join(['rouser ', hiera('snmpd_readonly_user_name')]), 'proc cron', 'includeAllDisks 10%', 'master agentx', 'trapsink localhost public', 'iquerySecName internalUser', 'rouser internalUser', 'defaultMonitors yes', 'linkUpDownNotifications yes' ],
}
+ hiera_include('controller_classes')
+
} #END STEP 3
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
index 3b5b8fe4..5f5b06dd 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -18,16 +18,7 @@ Pcmk_resource <| |> {
try_sleep => 3,
}
-if !str2bool(hiera('enable_package_install', 'false')) {
- case $::osfamily {
- 'RedHat': {
- Package { provider => 'norpm' } # provided by tripleo-puppet
- }
- default: {
- warning('enable_package_install option not supported.')
- }
- }
-}
+include tripleo::packages
if $::hostname == downcase(hiera('bootstrap_nodeid')) {
$pacemaker_master = true
@@ -83,6 +74,13 @@ if hiera('step') >= 1 {
Class['tripleo::fencing'] -> Class['pacemaker::stonith']
}
+ # FIXME(gfidente): sets 90secs as default start timeout op
+ # param; until we can use pcmk global defaults we'll still
+ # need to add it to every resource which redefines op params
+ Pacemaker::Resource::Service {
+ op_params => 'start timeout=90s',
+ }
+
# Only configure RabbitMQ in this step, don't start it yet to
# avoid races where non-master nodes attempt to start without
# config (eg. binding on 0.0.0.0)
@@ -140,7 +138,7 @@ if hiera('step') >= 1 {
'query_cache_size' => '0',
'query_cache_type' => '0',
'bind-address' => hiera('mysql_bind_host'),
- 'max_connections' => '1024',
+ 'max_connections' => hiera('mysql_max_connections'),
'open_files_limit' => '-1',
'wsrep_provider' => '/usr/lib64/galera/libgalera_smm.so',
'wsrep_cluster_name' => 'galera_cluster',
@@ -565,7 +563,11 @@ if hiera('step') >= 3 {
}
include join(['::glance::backend::', $glance_backend])
- include ::nova
+ class { '::nova' :
+ memcached_servers => suffix(hiera('memcache_node_ips'), ':11211'),
+ }
+
+ include ::nova::config
class { '::nova::api' :
sync_db => $sync_db,
@@ -625,7 +627,7 @@ if hiera('step') >= 3 {
tenant_network_types => [hiera('neutron_tenant_network_type')],
}
class { 'neutron::agents::ml2::ovs':
- # manage_service => false # not implemented
+ manage_service => false,
enabled => false,
bridge_mappings => split(hiera('neutron_bridge_mappings'), ','),
tunnel_types => split(hiera('neutron_tunnel_types'), ','),
@@ -694,16 +696,53 @@ if hiera('step') >= 3 {
"${cinder_netapp_backend}/host": value => 'hostgroup';
}
- if hiera('cinder_netapp_nfs_shares', undef) {
- $cinder_netapp_nfs_shares = split(hiera('cinder_netapp_nfs_shares', undef), ',')
+ if hiera('cinder::backend::netapp::nfs_shares', undef) {
+ $cinder_netapp_nfs_shares = split(hiera('cinder::backend::netapp::nfs_shares', undef), ',')
}
cinder::backend::netapp { $cinder_netapp_backend :
- nfs_shares => $cinder_netapp_nfs_shares,
- }
- }
-
- $cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend, $cinder_netapp_backend])
+ netapp_login => hiera('cinder::backend::netapp::netapp_login', undef),
+ netapp_password => hiera('cinder::backend::netapp::netapp_password', undef),
+ netapp_server_hostname => hiera('cinder::backend::netapp::netapp_server_hostname', undef),
+ netapp_server_port => hiera('cinder::backend::netapp::netapp_server_port', undef),
+ netapp_size_multiplier => hiera('cinder::backend::netapp::netapp_size_multiplier', undef),
+ netapp_storage_family => hiera('cinder::backend::netapp::netapp_storage_family', undef),
+ netapp_storage_protocol => hiera('cinder::backend::netapp::netapp_storage_protocol', undef),
+ netapp_transport_type => hiera('cinder::backend::netapp::netapp_transport_type', undef),
+ netapp_vfiler => hiera('cinder::backend::netapp::netapp_vfiler', undef),
+ netapp_volume_list => hiera('cinder::backend::netapp::netapp_volume_list', undef),
+ netapp_vserver => hiera('cinder::backend::netapp::netapp_vserver', undef),
+ netapp_partner_backend_name => hiera('cinder::backend::netapp::netapp_partner_backend_name', undef),
+ nfs_shares => $cinder_netapp_nfs_shares,
+ nfs_shares_config => hiera('cinder::backend::netapp::nfs_shares_config', undef),
+ netapp_copyoffload_tool_path => hiera('cinder::backend::netapp::netapp_copyoffload_tool_path', undef),
+ netapp_controller_ips => hiera('cinder::backend::netapp::netapp_controller_ips', undef),
+ netapp_sa_password => hiera('cinder::backend::netapp::netapp_sa_password', undef),
+ netapp_storage_pools => hiera('cinder::backend::netapp::netapp_storage_pools', undef),
+ netapp_eseries_host_type => hiera('cinder::backend::netapp::netapp_eseries_host_type', undef),
+ netapp_webservice_path => hiera('cinder::backend::netapp::netapp_webservice_path', undef),
+ }
+ }
+
+ if hiera('cinder_enable_nfs_backend', false) {
+ $cinder_nfs_backend = 'tripleo_nfs'
+
+ if ($::selinux != "false") {
+ selboolean { 'virt_use_nfs':
+ value => on,
+ persistent => true,
+ } -> Package['nfs-utils']
+ }
+
+ package {'nfs-utils': } ->
+ cinder::backend::nfs { $cinder_nfs_backend:
+ nfs_servers => hiera('cinder_nfs_servers'),
+ nfs_mount_options => hiera('cinder_nfs_mount_options'),
+ nfs_shares_config => '/etc/cinder/shares-nfs.conf',
+ }
+ }
+
+ $cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend, $cinder_netapp_backend, $cinder_nfs_backend])
class { '::cinder::backends' :
enabled_backends => $cinder_enabled_backends,
}
@@ -719,7 +758,6 @@ if hiera('step') >= 3 {
include ::swift::proxy::keystone
include ::swift::proxy::authtoken
include ::swift::proxy::staticweb
- include ::swift::proxy::ceilometer
include ::swift::proxy::ratelimit
include ::swift::proxy::catch_errors
include ::swift::proxy::tempurl
@@ -845,6 +883,8 @@ if hiera('step') >= 3 {
snmpd_config => [ join(['rouser ', hiera('snmpd_readonly_user_name')]), 'proc cron', 'includeAllDisks 10%', 'master agentx', 'trapsink localhost public', 'iquerySecName internalUser', 'rouser internalUser', 'defaultMonitors yes', 'linkUpDownNotifications yes' ],
}
+ hiera_include('controller_classes')
+
} #END STEP 3
if hiera('step') >= 4 {
@@ -947,12 +987,7 @@ if hiera('step') >= 4 {
# as soon as neutron-server is started; to avoid races we want to make this
# happen only on one node, before normal Pacemaker initialization
# https://bugzilla.redhat.com/show_bug.cgi?id=1233061
- exec { 'neutron-server-start-wait-stop' :
- command => "systemctl start neutron-server && \
- sleep 5s && \
- systemctl stop neutron-server",
- path => ["/usr/bin", "/usr/sbin"],
- } ->
+ exec { '/usr/bin/systemctl start neutron-server && /usr/bin/sleep 5' : } ->
pacemaker::resource::service { $::neutron::params::server_service:
op_params => "start timeout=90",
clone_params => "interleave=true",
@@ -978,10 +1013,6 @@ if hiera('step') >= 4 {
ocf_agent_name => "neutron:NetnsCleanup",
clone_params => "interleave=true",
}
- pacemaker::resource::ocf { 'neutron-scale':
- ocf_agent_name => "neutron:NeutronScale",
- clone_params => "globally-unique=true clone-max=3 interleave=true",
- }
pacemaker::constraint::base { 'keystone-to-neutron-server-constraint':
constraint_type => "order",
first_resource => "${::keystone::params::service_name}-clone",
@@ -991,29 +1022,13 @@ if hiera('step') >= 4 {
require => [Pacemaker::Resource::Service[$::keystone::params::service_name],
Pacemaker::Resource::Service[$::neutron::params::server_service]],
}
- pacemaker::constraint::base { 'neutron-server-to-neutron-scale-constraint':
+ pacemaker::constraint::base { 'neutron-server-to-neutron-ovs-cleanup-constraint':
constraint_type => "order",
first_resource => "${::neutron::params::server_service}-clone",
- second_resource => "neutron-scale-clone",
- first_action => "start",
- second_action => "start",
- require => [Pacemaker::Resource::Service[$::neutron::params::server_service],
- Pacemaker::Resource::Ocf['neutron-scale']],
- }
- pacemaker::constraint::base { 'neutron-scale-to-ovs-cleanup-constraint':
- constraint_type => "order",
- first_resource => "neutron-scale-clone",
second_resource => "${::neutron::params::ovs_cleanup_service}-clone",
first_action => "start",
second_action => "start",
- require => [Pacemaker::Resource::Ocf['neutron-scale'],
- Pacemaker::Resource::Ocf["${::neutron::params::ovs_cleanup_service}"]],
- }
- pacemaker::constraint::colocation { 'neutron-scale-to-ovs-cleanup-colocation':
- source => "${::neutron::params::ovs_cleanup_service}-clone",
- target => "neutron-scale-clone",
- score => "INFINITY",
- require => [Pacemaker::Resource::Ocf['neutron-scale'],
+ require => [Pacemaker::Resource::Service[$::neutron::params::server_service],
Pacemaker::Resource::Ocf["${::neutron::params::ovs_cleanup_service}"]],
}
pacemaker::constraint::base { 'neutron-ovs-cleanup-to-netns-cleanup-constraint':
@@ -1101,24 +1116,24 @@ if hiera('step') >= 4 {
# Nova
pacemaker::resource::service { $::nova::params::api_service_name :
clone_params => "interleave=true",
- op_params => "monitor start-delay=10s",
+ op_params => "start timeout=90s monitor start-delay=10s",
}
pacemaker::resource::service { $::nova::params::conductor_service_name :
clone_params => "interleave=true",
- op_params => "monitor start-delay=10s",
+ op_params => "start timeout=90s monitor start-delay=10s",
}
pacemaker::resource::service { $::nova::params::consoleauth_service_name :
clone_params => "interleave=true",
- op_params => "monitor start-delay=10s",
+ op_params => "start timeout=90s monitor start-delay=10s",
require => Pacemaker::Resource::Service[$::keystone::params::service_name],
}
pacemaker::resource::service { $::nova::params::vncproxy_service_name :
clone_params => "interleave=true",
- op_params => "monitor start-delay=10s",
+ op_params => "start timeout=90s monitor start-delay=10s",
}
pacemaker::resource::service { $::nova::params::scheduler_service_name :
clone_params => "interleave=true",
- op_params => "monitor start-delay=10s",
+ op_params => "start timeout=90s monitor start-delay=10s",
}
pacemaker::constraint::base { 'keystone-then-nova-consoleauth-constraint':
diff --git a/puppet/manifests/overcloud_object.pp b/puppet/manifests/overcloud_object.pp
index 24799c8c..59db696e 100644
--- a/puppet/manifests/overcloud_object.pp
+++ b/puppet/manifests/overcloud_object.pp
@@ -13,16 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-if !str2bool(hiera('enable_package_install', 'false')) {
- case $::osfamily {
- 'RedHat': {
- Package { provider => 'norpm' } # provided by tripleo-puppet
- }
- default: {
- warning('enable_package_install option not supported.')
- }
- }
-}
+include tripleo::packages
create_resources(sysctl::value, hiera('sysctl_settings'), {})
@@ -56,3 +47,5 @@ class { 'snmp':
agentaddress => ['udp:161','udp6:[::1]:161'],
snmpd_config => [ join(['rouser ', hiera('snmpd_readonly_user_name')]), 'proc cron', 'includeAllDisks 10%', 'master agentx', 'trapsink localhost public', 'iquerySecName internalUser', 'rouser internalUser', 'defaultMonitors yes', 'linkUpDownNotifications yes' ],
}
+
+hiera_include('object_classes') \ No newline at end of file
diff --git a/puppet/manifests/overcloud_volume.pp b/puppet/manifests/overcloud_volume.pp
index edfeaeca..d1f6d6a5 100644
--- a/puppet/manifests/overcloud_volume.pp
+++ b/puppet/manifests/overcloud_volume.pp
@@ -13,16 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-if str2bool(hiera('disable_package_install', 'false')) {
- case $::osfamily {
- 'RedHat': {
- Package { provider => 'norpm' } # provided by tripleo-puppet
- }
- default: {
- warning('disable_package_install option not supported.')
- }
- }
-}
+include tripleo::packages
create_resources(sysctl::value, hiera('sysctl_settings'), {})
@@ -31,6 +22,7 @@ if count(hiera('ntp::servers')) > 0 {
}
include ::cinder
+include ::cinder::config
include ::cinder::glance
include ::cinder::volume
include ::cinder::setup_test_volume
@@ -59,3 +51,5 @@ class { 'snmp':
agentaddress => ['udp:161','udp6:[::1]:161'],
snmpd_config => [ join(['rouser ', hiera('snmpd_readonly_user_name')]), 'proc cron', 'includeAllDisks 10%', 'master agentx', 'trapsink localhost public', 'iquerySecName internalUser', 'rouser internalUser', 'defaultMonitors yes', 'linkUpDownNotifications yes' ],
}
+
+hiera_include('volume_classes') \ No newline at end of file
diff --git a/puppet/manifests/ringbuilder.pp b/puppet/manifests/ringbuilder.pp
index 531706d2..14fbafdd 100644
--- a/puppet/manifests/ringbuilder.pp
+++ b/puppet/manifests/ringbuilder.pp
@@ -13,16 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-if str2bool(hiera('disable_package_install', 'false')) {
- case $::osfamily {
- 'RedHat': {
- Package { provider => 'norpm' } # provided by tripleo-puppet
- }
- default: {
- warning('disable_package_install option not supported.')
- }
- }
-}
+include tripleo::packages
define add_devices(
$swift_zones = '1'
diff --git a/puppet/swift-storage-puppet.yaml b/puppet/swift-storage-puppet.yaml
index 82922a87..b3579429 100644
--- a/puppet/swift-storage-puppet.yaml
+++ b/puppet/swift-storage-puppet.yaml
@@ -65,6 +65,18 @@ parameters:
Hostname:
type: string
default: '' # Defaults to Heat created hostname
+ ExtraConfig:
+ default: {}
+ description: |
+ Additional hiera configuration to inject into the cluster. Note
+ that ObjectStorageExtraConfig takes precedence over ExtraConfig.
+ type: json
+ ObjectStorageExtraConfig:
+ default: {}
+ description: |
+ Role specific additional hiera configuration to inject into the cluster.
+ type: json
+
resources:
@@ -126,6 +138,8 @@ resources:
hiera:
hierarchy:
- heat_config_%{::deploy_config_name}
+ - object_extraconfig
+ - extraconfig
- object
- swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
- all_nodes # provided by allNodesConfig
@@ -134,6 +148,10 @@ resources:
datafiles:
common:
raw_data: {get_file: hieradata/common.yaml}
+ object_extraconfig:
+ mapped_data: {get_param: ObjectStorageExtraConfig}
+ extraconfig:
+ mapped_data: {get_param: ExtraConfig}
object:
raw_data: {get_file: hieradata/object.yaml}
mapped_data: # data supplied directly to this deployment configuration, etc
@@ -150,7 +168,7 @@ resources:
tripleo::ringbuilder::build_ring: True
snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
- enable_package_install: {get_input: enable_package_install}
+ tripleo::packages::enable_install: {get_input: enable_package_install}
SwiftStorageHieraDeploy:
@@ -194,7 +212,7 @@ outputs:
str_replace:
template: "IP HOST.localdomain HOST"
params:
- IP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
+ IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
HOST: {get_attr: [SwiftStorage, name]}
nova_server_resource:
description: Heat resource handle for the swift storage server
@@ -219,4 +237,3 @@ outputs:
config_identifier:
description: identifier which changes if the node configuration may need re-applying
value: {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
-
diff --git a/swift-storage.yaml b/swift-storage.yaml
index e4cacf3c..1a2967fa 100644
--- a/swift-storage.yaml
+++ b/swift-storage.yaml
@@ -39,6 +39,11 @@ parameters:
}
}
type: json
+ ObjectStorageExtraConfig:
+ default: {}
+ description: |
+ Role specific additional configuration to inject into the cluster.
+ type: json
Flavor:
description: Flavor for Swift storage nodes to request when deploying.
type: string