diff options
36 files changed, 487 insertions, 109 deletions
diff --git a/bootstrap-config.yaml b/bootstrap-config.yaml index 6082dbce..c87670e3 100644 --- a/bootstrap-config.yaml +++ b/bootstrap-config.yaml @@ -12,6 +12,7 @@ resources: BootstrapNodeConfigImpl: type: OS::Heat::StructuredConfig properties: + group: os-apply-config config: bootstrap_host: bootstrap_nodeid: {get_param: bootstrap_nodeid} diff --git a/ceph-storage.yaml b/ceph-storage.yaml index 2df3d70d..15092bae 100644 --- a/ceph-storage.yaml +++ b/ceph-storage.yaml @@ -39,6 +39,9 @@ parameters: description: > Setting to a previously unused value during stack-update will trigger package update on all nodes + Hostname: + type: string + default: '' # Defaults to Heat created hostname resources: CephStorage: @@ -52,6 +55,7 @@ resources: - network: ctlplane user_data_format: SOFTWARE_CONFIG user_data: {get_resource: NodeUserData} + name: {get_param: Hostname} NodeUserData: type: OS::TripleO::NodeUserData diff --git a/cinder-storage.yaml b/cinder-storage.yaml index c2824400..be088d66 100644 --- a/cinder-storage.yaml +++ b/cinder-storage.yaml @@ -71,6 +71,10 @@ parameters: default: "9292" description: Glance port. type: string + GlanceProtocol: + default: http + description: Protocol to use when connecting to glance, set to https for SSL. + type: string KeyName: default: default description: Name of an existing EC2 KeyPair to enable SSH access to the instances @@ -106,6 +110,20 @@ parameters: description: > Setting to a previously unused value during stack-update will trigger package update on all nodes + Hostname: + type: string + default: '' # Defaults to Heat created hostname + ServiceNetMap: + default: {} + description: Mapping of service_name -> network name. Typically set + via parameter_defaults in the resource registry. + type: json + GlanceApiVirtualIP: + type: string + default: '' + MysqlVirtualIP: + type: string + default: '' resources: BlockStorage: @@ -119,6 +137,7 @@ resources: - network: ctlplane user_data_format: SOFTWARE_CONFIG user_data: {get_resource: NodeUserData} + name: {get_param: Hostname} NodeUserData: type: OS::TripleO::NodeUserData diff --git a/compute.yaml b/compute.yaml index 7fcdf421..4a9a92b9 100644 --- a/compute.yaml +++ b/compute.yaml @@ -254,6 +254,9 @@ parameters: description: > Setting to a previously unused value during stack-update will trigger package update on all nodes + Hostname: + type: string + default: '' # Defaults to Heat created hostname resources: @@ -270,6 +273,7 @@ resources: - network: ctlplane user_data_format: SOFTWARE_CONFIG user_data: {get_resource: NodeUserData} + name: {get_param: Hostname} NodeUserData: type: OS::TripleO::NodeUserData diff --git a/controller.yaml b/controller.yaml index 366e60d3..01c69f02 100644 --- a/controller.yaml +++ b/controller.yaml @@ -71,11 +71,6 @@ parameters: default: true description: Whether to use Galera instead of regular MariaDB. type: boolean - EnablePacemaker: - default: false - description: If enabled services will be monitored by Pacemaker; it - will manage VIPs as well, in place of Keepalived. - type: boolean EnableCephStorage: default: false description: Whether to deploy Ceph Storage (OSD) on the Controller @@ -447,6 +442,9 @@ parameters: description: > Setting to a previously unused value during stack-update will trigger package update on all nodes + Hostname: + type: string + default: '' # Defaults to Heat created hostname resources: @@ -461,6 +459,7 @@ resources: - network: ctlplane user_data_format: SOFTWARE_CONFIG user_data: {get_resource: NodeUserData} + name: {get_param: Hostname} NodeUserData: type: OS::TripleO::NodeUserData diff --git a/environments/puppet-pacemaker.yaml b/environments/puppet-pacemaker.yaml index 70e1b3ed..f235cf8f 100644 --- a/environments/puppet-pacemaker.yaml +++ b/environments/puppet-pacemaker.yaml @@ -2,6 +2,3 @@ # Overcloud controller with Pacemaker. resource_registry: OS::TripleO::ControllerConfig: ../puppet/controller-config-pacemaker.yaml - -parameter_defaults: - RedisVirtualIP: 192.0.2.142 diff --git a/extraconfig/post_deploy/example.yaml b/extraconfig/post_deploy/example.yaml index 6b816d40..1d3dca25 100644 --- a/extraconfig/post_deploy/example.yaml +++ b/extraconfig/post_deploy/example.yaml @@ -20,7 +20,7 @@ resources: echo "extra" > /root/extra ExtraDeployments: - type: OS::Heat::StructuredDeployments + type: OS::Heat::SoftwareDeployments properties: servers: {get_param: servers} config: {get_resource: ExtraConfig} diff --git a/extraconfig/post_deploy/rhel-registration/rhel-registration.yaml b/extraconfig/post_deploy/rhel-registration/rhel-registration.yaml index cbf8f8b5..bf6c88cd 100644 --- a/extraconfig/post_deploy/rhel-registration/rhel-registration.yaml +++ b/extraconfig/post_deploy/rhel-registration/rhel-registration.yaml @@ -71,7 +71,7 @@ resources: config: {get_file: scripts/rhel-registration} RHELRegistrationDeployment: - type: OS::Heat::StructuredDeployments + type: OS::Heat::SoftwareDeployments properties: servers: {get_param: servers} config: {get_resource: RHELRegistration} @@ -104,7 +104,7 @@ resources: - name: REG_METHOD RHELUnregistrationDeployment: - type: OS::Heat::StructuredDeployments + type: OS::Heat::SoftwareDeployments properties: servers: {get_param: servers} config: {get_resource: RHELUnregistration} diff --git a/network/config/bond-with-vlans/ceph-storage.yaml b/network/config/bond-with-vlans/ceph-storage.yaml index 69e85b93..ed9fff7a 100644 --- a/network/config/bond-with-vlans/ceph-storage.yaml +++ b/network/config/bond-with-vlans/ceph-storage.yaml @@ -2,7 +2,7 @@ heat_template_version: 2015-04-30 description: > Software Config to drive os-net-config with 2 bonded nics on a bridge - with a VLANs attached for the ceph storage role. + with VLANs attached for the ceph storage role. parameters: ExternalIpSubnet: @@ -30,6 +30,15 @@ parameters: description: The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option. type: string + StorageNetworkVlanID: + default: 30 + description: Vlan ID for the storage network traffic. + type: number + StorageMgmtNetworkVlanID: + default: 40 + description: Vlan ID for the storage mgmt network traffic. + type: number + resources: OsNetConfigImpl: @@ -68,14 +77,14 @@ resources: - type: vlan device: bond1 - vlan_id: 30 + vlan_id: {get_param: StorageNetworkVlanID} addresses: - ip_netmask: {get_param: StorageIpSubnet} - type: vlan device: bond1 - vlan_id: 40 + vlan_id: {get_param: StorageMgmtNetworkVlanID} addresses: - ip_netmask: {get_param: StorageMgmtIpSubnet} diff --git a/network/config/bond-with-vlans/cinder-storage.yaml b/network/config/bond-with-vlans/cinder-storage.yaml index 0441565d..95733fca 100644 --- a/network/config/bond-with-vlans/cinder-storage.yaml +++ b/network/config/bond-with-vlans/cinder-storage.yaml @@ -2,7 +2,7 @@ heat_template_version: 2015-04-30 description: > Software Config to drive os-net-config with 2 bonded nics on a bridge - with a VLANs attached for the cinder storage role. + with VLANs attached for the cinder storage role. parameters: ExternalIpSubnet: @@ -30,6 +30,18 @@ parameters: description: The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option. type: string + InternalApiNetworkVlanID: + default: 20 + description: Vlan ID for the internal_api network traffic. + type: number + StorageNetworkVlanID: + default: 30 + description: Vlan ID for the storage network traffic. + type: number + StorageMgmtNetworkVlanID: + default: 40 + description: Vlan ID for the storage mgmt network traffic. + type: number resources: OsNetConfigImpl: @@ -68,21 +80,21 @@ resources: - type: vlan device: bond1 - vlan_id: 20 + vlan_id: {get_param: InternalApiNetworkVlanID} addresses: - ip_netmask: {get_param: InternalApiIpSubnet} - type: vlan device: bond1 - vlan_id: 30 + vlan_id: {get_param: StorageNetworkVlanID} addresses: - ip_netmask: {get_param: StorageIpSubnet} - type: vlan device: bond1 - vlan_id: 40 + vlan_id: {get_param: StorageMgmtNetworkVlanID} addresses: - ip_netmask: {get_param: StorageMgmtIpSubnet} diff --git a/network/config/bond-with-vlans/compute.yaml b/network/config/bond-with-vlans/compute.yaml index d9d15ad1..709b3b5b 100644 --- a/network/config/bond-with-vlans/compute.yaml +++ b/network/config/bond-with-vlans/compute.yaml @@ -2,7 +2,7 @@ heat_template_version: 2015-04-30 description: > Software Config to drive os-net-config with 2 bonded nics on a bridge - with a VLANs attached for the compute role. + with VLANs attached for the compute role. parameters: ExternalIpSubnet: @@ -30,6 +30,18 @@ parameters: description: The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option. type: string + InternalApiNetworkVlanID: + default: 20 + description: Vlan ID for the internal_api network traffic. + type: number + StorageNetworkVlanID: + default: 30 + description: Vlan ID for the storage network traffic. + type: number + TenantNetworkVlanID: + default: 50 + description: Vlan ID for the tenant network traffic. + type: number resources: OsNetConfigImpl: @@ -68,21 +80,21 @@ resources: - type: vlan device: bond1 - vlan_id: 20 + vlan_id: {get_param: InternalApiNetworkVlanID} addresses: - ip_netmask: {get_param: InternalApiIpSubnet} - type: vlan device: bond1 - vlan_id: 30 + vlan_id: {get_param: StorageNetworkVlanID} addresses: - ip_netmask: {get_param: StorageIpSubnet} - type: vlan device: bond1 - vlan_id: 50 + vlan_id: {get_param: TenantNetworkVlanID} addresses: - ip_netmask: {get_param: TenantIpSubnet} diff --git a/network/config/bond-with-vlans/controller.yaml b/network/config/bond-with-vlans/controller.yaml index 3fc314da..16a0dec2 100644 --- a/network/config/bond-with-vlans/controller.yaml +++ b/network/config/bond-with-vlans/controller.yaml @@ -2,7 +2,7 @@ heat_template_version: 2015-04-30 description: > Software Config to drive os-net-config with 2 bonded nics on a bridge - with a VLANs attached for the controller role. + with VLANs attached for the controller role. parameters: ExternalIpSubnet: @@ -30,6 +30,26 @@ parameters: description: The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option. type: string + ExternalNetworkVlanID: + default: 10 + description: Vlan ID for the external network traffic. + type: number + InternalApiNetworkVlanID: + default: 20 + description: Vlan ID for the internal_api network traffic. + type: number + StorageNetworkVlanID: + default: 30 + description: Vlan ID for the storage network traffic. + type: number + StorageMgmtNetworkVlanID: + default: 40 + description: Vlan ID for the storage mgmt network traffic. + type: number + TenantNetworkVlanID: + default: 50 + description: Vlan ID for the tenant network traffic. + type: number resources: OsNetConfigImpl: @@ -68,35 +88,35 @@ resources: - type: vlan device: bond1 - vlan_id: 10 + vlan_id: {get_param: ExternalNetworkVlanID} addresses: - ip_netmask: {get_param: ExternalIpSubnet} - type: vlan device: bond1 - vlan_id: 20 + vlan_id: {get_param: InternalApiNetworkVlanID} addresses: - ip_netmask: {get_param: InternalApiIpSubnet} - type: vlan device: bond1 - vlan_id: 30 + vlan_id: {get_param: StorageNetworkVlanID} addresses: - ip_netmask: {get_param: StorageIpSubnet} - type: vlan device: bond1 - vlan_id: 40 + vlan_id: {get_param: StorageMgmtNetworkVlanID} addresses: - ip_netmask: {get_param: StorageMgmtIpSubnet} - type: vlan device: bond1 - vlan_id: 50 + vlan_id: {get_param: TenantNetworkVlanID} addresses: - ip_netmask: {get_param: TenantIpSubnet} diff --git a/network/config/bond-with-vlans/swift-storage.yaml b/network/config/bond-with-vlans/swift-storage.yaml index 4dfa58fc..6549ce7a 100644 --- a/network/config/bond-with-vlans/swift-storage.yaml +++ b/network/config/bond-with-vlans/swift-storage.yaml @@ -2,7 +2,7 @@ heat_template_version: 2015-04-30 description: > Software Config to drive os-net-config with 2 bonded nics on a bridge - with a VLANs attached for the swift storage role. + with VLANs attached for the swift storage role. parameters: ExternalIpSubnet: @@ -30,6 +30,18 @@ parameters: description: The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option. type: string + InternalApiNetworkVlanID: + default: 20 + description: Vlan ID for the internal_api network traffic. + type: number + StorageNetworkVlanID: + default: 30 + description: Vlan ID for the storage network traffic. + type: number + StorageMgmtNetworkVlanID: + default: 40 + description: Vlan ID for the storage mgmt network traffic. + type: number resources: OsNetConfigImpl: @@ -68,21 +80,21 @@ resources: - type: vlan device: bond1 - vlan_id: 20 + vlan_id: {get_param: InternalApiNetworkVlanID} addresses: - ip_netmask: {get_param: InternalApiIpSubnet} - type: vlan device: bond1 - vlan_id: 30 + vlan_id: {get_param: StorageNetworkVlanID} addresses: - ip_netmask: {get_param: StorageIpSubnet} - type: vlan device: bond1 - vlan_id: 40 + vlan_id: {get_param: StorageMgmtNetworkVlanID} addresses: - ip_netmask: {get_param: StorageMgmtIpSubnet} diff --git a/network/config/single-nic-vlans/ceph-storage.yaml b/network/config/single-nic-vlans/ceph-storage.yaml index 6bffb07e..4a25f763 100644 --- a/network/config/single-nic-vlans/ceph-storage.yaml +++ b/network/config/single-nic-vlans/ceph-storage.yaml @@ -25,6 +25,14 @@ parameters: default: '' description: IP address/subnet on the tenant network type: string + StorageNetworkVlanID: + default: 30 + description: Vlan ID for the storage network traffic. + type: number + StorageMgmtNetworkVlanID: + default: 40 + description: Vlan ID for the storage mgmt network traffic. + type: number resources: OsNetConfigImpl: @@ -46,13 +54,13 @@ resources: primary: true - type: vlan - vlan_id: 30 + vlan_id: {get_param: StorageNetworkVlanID} addresses: - ip_netmask: {get_param: StorageIpSubnet} - type: vlan - vlan_id: 40 + vlan_id: {get_param: StorageMgmtNetworkVlanID} addresses: - ip_netmask: {get_param: StorageMgmtIpSubnet} diff --git a/network/config/single-nic-vlans/cinder-storage.yaml b/network/config/single-nic-vlans/cinder-storage.yaml index e9f6c770..397b1ecd 100644 --- a/network/config/single-nic-vlans/cinder-storage.yaml +++ b/network/config/single-nic-vlans/cinder-storage.yaml @@ -25,6 +25,18 @@ parameters: default: '' description: IP address/subnet on the tenant network type: string + InternalApiNetworkVlanID: + default: 20 + description: Vlan ID for the internal_api network traffic. + type: number + StorageNetworkVlanID: + default: 30 + description: Vlan ID for the storage network traffic. + type: number + StorageMgmtNetworkVlanID: + default: 40 + description: Vlan ID for the storage mgmt network traffic. + type: number resources: OsNetConfigImpl: @@ -46,19 +58,19 @@ resources: primary: true - type: vlan - vlan_id: 20 + vlan_id: {get_param: InternalApiNetworkVlanID} addresses: - ip_netmask: {get_param: InternalApiIpSubnet} - type: vlan - vlan_id: 30 + vlan_id: {get_param: StorageNetworkVlanID} addresses: - ip_netmask: {get_param: StorageIpSubnet} - type: vlan - vlan_id: 40 + vlan_id: {get_param: StorageMgmtNetworkVlanID} addresses: - ip_netmask: {get_param: StorageMgmtIpSubnet} diff --git a/network/config/single-nic-vlans/compute.yaml b/network/config/single-nic-vlans/compute.yaml index 89a83b25..c73aed5e 100644 --- a/network/config/single-nic-vlans/compute.yaml +++ b/network/config/single-nic-vlans/compute.yaml @@ -25,6 +25,18 @@ parameters: default: '' description: IP address/subnet on the tenant network type: string + InternalApiNetworkVlanID: + default: 20 + description: Vlan ID for the internal_api network traffic. + type: number + StorageNetworkVlanID: + default: 30 + description: Vlan ID for the storage network traffic. + type: number + TenantNetworkVlanID: + default: 50 + description: Vlan ID for the tenant network traffic. + type: number resources: OsNetConfigImpl: @@ -46,19 +58,19 @@ resources: primary: true - type: vlan - vlan_id: 20 + vlan_id: {get_param: InternalApiNetworkVlanID} addresses: - ip_netmask: {get_param: InternalApiIpSubnet} - type: vlan - vlan_id: 30 + vlan_id: {get_param: StorageNetworkVlanID} addresses: - ip_netmask: {get_param: StorageIpSubnet} - type: vlan - vlan_id: 50 + vlan_id: {get_param: TenantNetworkVlanID} addresses: - ip_netmask: {get_param: TenantIpSubnet} diff --git a/network/config/single-nic-vlans/controller.yaml b/network/config/single-nic-vlans/controller.yaml index aab722c0..ca0cbcad 100644 --- a/network/config/single-nic-vlans/controller.yaml +++ b/network/config/single-nic-vlans/controller.yaml @@ -25,6 +25,26 @@ parameters: default: '' description: IP address/subnet on the tenant network type: string + ExternalNetworkVlanID: + default: 10 + description: Vlan ID for the external network traffic. + type: number + InternalApiNetworkVlanID: + default: 20 + description: Vlan ID for the internal_api network traffic. + type: number + StorageNetworkVlanID: + default: 30 + description: Vlan ID for the storage network traffic. + type: number + StorageMgmtNetworkVlanID: + default: 40 + description: Vlan ID for the storage mgmt network traffic. + type: number + TenantNetworkVlanID: + default: 50 + description: Vlan ID for the tenant network traffic. + type: number resources: OsNetConfigImpl: @@ -46,31 +66,31 @@ resources: primary: true - type: vlan - vlan_id: 10 + vlan_id: {get_param: ExternalNetworkVlanID} addresses: - ip_netmask: {get_param: ExternalIpSubnet} - type: vlan - vlan_id: 20 + vlan_id: {get_param: InternalApiNetworkVlanID} addresses: - ip_netmask: {get_param: InternalApiIpSubnet} - type: vlan - vlan_id: 30 + vlan_id: {get_param: StorageNetworkVlanID} addresses: - ip_netmask: {get_param: StorageIpSubnet} - type: vlan - vlan_id: 40 + vlan_id: {get_param: StorageMgmtNetworkVlanID} addresses: - ip_netmask: {get_param: StorageMgmtIpSubnet} - type: vlan - vlan_id: 50 + vlan_id: {get_param: TenantNetworkVlanID} addresses: - ip_netmask: {get_param: TenantIpSubnet} diff --git a/network/config/single-nic-vlans/swift-storage.yaml b/network/config/single-nic-vlans/swift-storage.yaml index 93a91688..f033ced7 100644 --- a/network/config/single-nic-vlans/swift-storage.yaml +++ b/network/config/single-nic-vlans/swift-storage.yaml @@ -25,6 +25,18 @@ parameters: default: '' description: IP address/subnet on the tenant network type: string + InternalApiNetworkVlanID: + default: 20 + description: Vlan ID for the internal_api network traffic. + type: number + StorageNetworkVlanID: + default: 30 + description: Vlan ID for the storage network traffic. + type: number + StorageMgmtNetworkVlanID: + default: 40 + description: Vlan ID for the storage mgmt network traffic. + type: number resources: OsNetConfigImpl: @@ -46,19 +58,19 @@ resources: primary: true - type: vlan - vlan_id: 20 + vlan_id: {get_param: InternalApiNetworkVlanID} addresses: - ip_netmask: {get_param: InternalApiIpSubnet} - type: vlan - vlan_id: 30 + vlan_id: {get_param: StorageNetworkVlanID} addresses: - ip_netmask: {get_param: StorageIpSubnet} - type: vlan - vlan_id: 40 + vlan_id: {get_param: StorageMgmtNetworkVlanID} addresses: - ip_netmask: {get_param: StorageMgmtIpSubnet} diff --git a/network/external.yaml b/network/external.yaml index e015dd88..bf4bdfe7 100644 --- a/network/external.yaml +++ b/network/external.yaml @@ -54,7 +54,7 @@ resources: enable_dhcp: {get_param: ExternalNetEnableDHCP} name: {get_param: ExternalSubnetName} network: {get_resource: ExternalNetwork} - allocation_pools: {get_resource: ExternalAllocationPools} + allocation_pools: {get_param: ExternalAllocationPools} outputs: OS::stack_id: diff --git a/network/ports/ctlplane_vip.yaml b/network/ports/ctlplane_vip.yaml new file mode 100644 index 00000000..d5001e43 --- /dev/null +++ b/network/ports/ctlplane_vip.yaml @@ -0,0 +1,46 @@ +heat_template_version: 2015-04-30 + +description: > + Creates a port for a VIP on the undercloud ctlplane network. + +parameters: + NetworkName: + description: # Here for compatibility with isolated networks + default: ctlplane + type: string + PortName: + description: Name of the port + default: '' + type: string + ControlPlaneIP: # Here for compatability with noop.yaml + description: IP address on the control plane + type: string + ControlPlaneNetwork: + description: The name of the undercloud Neutron control plane + default: ctlplane + type: string + + +resources: + + VipPort: + type: OS::Neutron::Port + properties: + network: {get_param: ControlPlaneNetwork} + name: {get_param: PortName} + replacement_policy: AUTO + +outputs: + ip_address: + description: Virtual IP network IP + 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 + value: + list_join: + - '' + - - {get_attr: [VipPort, fixed_ips, 0, ip_address]} + - '/' + - {get_attr: [VipPort, subnets, 0, cidr, -2]} + - {get_attr: [VipPort, subnets, 0, cidr, -1]} diff --git a/network/ports/noop.yaml b/network/ports/noop.yaml index 80eccf6e..9e1a1276 100644 --- a/network/ports/noop.yaml +++ b/network/ports/noop.yaml @@ -7,10 +7,18 @@ parameters: ControlPlaneIP: description: IP address on the control plane type: string + ControlPlaneNetwork: + description: Name of the control plane network + default: ctlplane + type: string PortName: description: Name of the port default: '' type: string + NetworkName: + description: # Here for compatability with vip.yaml + default: '' + type: string 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 new file mode 100644 index 00000000..b957e132 --- /dev/null +++ b/network/ports/vip.yaml @@ -0,0 +1,41 @@ +heat_template_version: 2015-04-30 + +description: > + Creates a port for a VIP on the isolated network NetworkName. + +parameters: + NetworkName: + description: Name of the network where the VIP will be created + default: internal_api + type: string + PortName: + description: Name of the port + default: '' + type: string + ControlPlaneIP: # Here for compatability with noop.yaml + description: IP address on the control plane + type: string + +resources: + + VipPort: + type: OS::Neutron::Port + properties: + network: {get_param: NetworkName} + name: {get_param: PortName} + replacement_policy: AUTO + +outputs: + ip_address: + description: Virtual IP network IP + 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 + value: + list_join: + - '' + - - {get_attr: [VipPort, fixed_ips, 0, ip_address]} + - '/' + - {get_attr: [VipPort, subnets, 0, cidr, -2]} + - {get_attr: [VipPort, subnets, 0, cidr, -1]} diff --git a/overcloud-resource-registry-puppet.yaml b/overcloud-resource-registry-puppet.yaml index a0773d6d..c9041c6b 100644 --- a/overcloud-resource-registry-puppet.yaml +++ b/overcloud-resource-registry-puppet.yaml @@ -68,5 +68,8 @@ resource_registry: # 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 + parameter_defaults: EnablePackageInstall: false diff --git a/overcloud-resource-registry.yaml b/overcloud-resource-registry.yaml index 7be199da..78607b51 100644 --- a/overcloud-resource-registry.yaml +++ b/overcloud-resource-registry.yaml @@ -61,3 +61,6 @@ resource_registry: OS::TripleO::BlockStorage::Ports::InternalApiPort: network/ports/noop.yaml OS::TripleO::BlockStorage::Ports::StoragePort: network/ports/noop.yaml OS::TripleO::BlockStorage::Ports::StorageMgmtPort: network/ports/noop.yaml + + # Port assignments for service virtual IPs for the controller role + OS::TripleO::Controller::Ports::RedisVipPort: network/ports/noop.yaml diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml index 5184c7cf..5d175468 100644 --- a/overcloud-without-mergepy.yaml +++ b/overcloud-without-mergepy.yaml @@ -58,12 +58,6 @@ parameters: default: '' description: Set to True to enable debugging on all services. type: string - DefaultSignalTransport: - default: CFN_SIGNAL - description: Transport to use for software-config signals. - type: string - constraints: - - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ] GlancePort: default: "9292" description: Glance port. @@ -267,11 +261,6 @@ parameters: default: true description: Whether to use Galera instead of regular MariaDB. type: boolean - EnablePacemaker: - default: false - description: If enabled services will be monitored by Pacemaker; it - will manage VIPs as well, in place of Keepalived. - type: boolean ControllerEnableCephStorage: default: false description: Whether to deploy Ceph Storage (OSD) on the Controller @@ -399,9 +388,6 @@ parameters: Specifies the interface where the public-facing virtual ip will be assigned. This should be int_public when a VLAN is being used. type: string - RedisVirtualIP: - type: string - default: '' # Has to be here because of the ignored empty value bug SSLCertificate: default: '' description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints. @@ -499,7 +485,7 @@ parameters: - custom_constraint: nova.flavor ServiceNetMap: default: - NeutronLocalIp: tenant + NeutronTenantNetwork: tenant CeilometerApiNetwork: internal_api MongoDbNetwork: internal_api CinderApiNetwork: internal_api @@ -566,7 +552,32 @@ parameters: constraints: - custom_constraint: nova.flavor -# Identifiers to trigger tasks on nodes + # Hostname format for each role + # Note %index% is translated into the index of the node, e.g 0/1/2 etc + # and %stackname% is replaced with OS::stack_name in the template below. + # If you want to use the heat generated names, pass '' (empty string). + ControllerHostnameFormat: + type: string + description: Format for Controller node hostnames + default: '%stackname%-controller-%index%' + ComputeHostnameFormat: + type: string + description: Format for Compute node hostnames + default: '%stackname%-novacompute-%index%' + BlockStorageHostnameFormat: + type: string + description: Format for BlockStorage node hostnames + default: '%stackname%-blockstorage-%index%' + ObjectStorageHostnameFormat: + type: string + description: Format for SwiftStorage node hostnames + default: '%stackname%-objectstorage-%index%' + CephStorageHostnameFormat: + type: string + description: Format for CephStorage node hostnames + default: '%stackname%-cephstorage-%index%' + + # Identifiers to trigger tasks on nodes UpdateIdentifier: default: '' type: string @@ -574,6 +585,8 @@ parameters: Setting to a previously unused value during stack-update will trigger package update on all nodes + + resources: HeatAuthEncryptionKey: @@ -612,7 +625,6 @@ resources: ControllerExtraConfig: {get_param: controllerExtraConfig} Debug: {get_param: Debug} EnableGalera: {get_param: EnableGalera} - EnablePacemaker: {get_param: EnablePacemaker} EnableCephStorage: {get_param: ControllerEnableCephStorage} EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage} ExtraConfig: {get_param: ExtraConfig} @@ -667,7 +679,7 @@ resources: RabbitClientPort: {get_param: RabbitClientPort} SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName} SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword} - RedisVirtualIP: {get_param: RedisVirtualIP} + RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]} SSLCertificate: {get_param: SSLCertificate} SSLKey: {get_param: SSLKey} SSLCACertificate: {get_param: SSLCACertificate} @@ -686,6 +698,11 @@ resources: KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]} NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]} UpdateIdentifier: {get_param: UpdateIdentifier} + Hostname: + str_replace: + template: {get_param: ControllerHostnameFormat} + params: + '%stackname%': {get_param: 'OS::stack_name'} Compute: type: OS::Heat::ResourceGroup @@ -744,6 +761,11 @@ resources: SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword} ServiceNetMap: {get_param: ServiceNetMap} UpdateIdentifier: {get_param: UpdateIdentifier} + Hostname: + str_replace: + template: {get_param: ComputeHostnameFormat} + params: + '%stackname%': {get_param: 'OS::stack_name'} BlockStorage: type: OS::Heat::ResourceGroup @@ -760,15 +782,25 @@ resources: # Purpose of the dedicated BlockStorage nodes should be to use their local LVM CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend} CinderPassword: {get_param: CinderPassword} - VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} KeyName: {get_param: KeyName} Flavor: {get_param: OvercloudBlockStorageFlavor} + VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} + GlancePort: {get_param: GlancePort} + GlanceProtocol: {get_param: GlanceProtocol} + GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]} RabbitPassword: {get_param: RabbitPassword} RabbitUserName: {get_param: RabbitUserName} RabbitClientUseSSL: {get_param: RabbitClientUseSSL} RabbitClientPort: {get_param: RabbitClientPort} NtpServer: {get_param: NtpServer} UpdateIdentifier: {get_param: UpdateIdentifier} + Hostname: + str_replace: + template: {get_param: BlockStorageHostnameFormat} + params: + '%stackname%': {get_param: 'OS::stack_name'} + ServiceNetMap: {get_param: ServiceNetMap} + MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]} ObjectStorage: type: OS::Heat::ResourceGroup @@ -789,6 +821,11 @@ resources: NtpServer: {get_param: NtpServer} UpdateIdentifier: {get_param: UpdateIdentifier} ServiceNetMap: {get_param: ServiceNetMap} + Hostname: + str_replace: + template: {get_param: ObjectStorageHostnameFormat} + params: + '%stackname%': {get_param: 'OS::stack_name'} CephStorage: type: OS::Heat::ResourceGroup @@ -804,6 +841,11 @@ resources: NtpServer: {get_param: NtpServer} ServiceNetMap: {get_param: ServiceNetMap} UpdateIdentifier: {get_param: UpdateIdentifier} + Hostname: + str_replace: + template: {get_param: CephStorageHostnameFormat} + params: + '%stackname%': {get_param: 'OS::stack_name'} ControllerIpListMap: type: OS::TripleO::Network::Ports::NetIpListMap @@ -871,6 +913,15 @@ resources: fixed_ips: {get_param: ControlFixedIPs} replacement_policy: AUTO + RedisVirtualIP: + depends_on: Networks + type: OS::TripleO::Controller::Ports::RedisVipPort + properties: + ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} + ControlPlaneNetwork: {get_param: NeutronControlPlaneID} + PortName: redis_virtual_ip + NetworkName: {get_param: [ServiceNetMap, RedisNetwork]} + # same as external PublicVirtualIP: type: OS::Neutron::Port @@ -933,7 +984,7 @@ resources: ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]} heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]} horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]} - redis_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]} + redis_vip: {get_attr: [RedisVirtualIP, ip_address]} mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]} rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]} # direct configuration of Virtual IPs for each network @@ -954,21 +1005,18 @@ resources: properties: config: {get_attr: [ControllerBootstrapNodeConfig, config_id]} servers: {get_attr: [Controller, attributes, nova_server_resource]} - signal_transport: NO_SIGNAL ControllerSwiftDeployment: type: OS::Heat::StructuredDeployments properties: config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]} servers: {get_attr: [Controller, attributes, nova_server_resource]} - signal_transport: NO_SIGNAL ObjectStorageSwiftDeployment: type: OS::Heat::StructuredDeployments properties: config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]} servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]} - signal_transport: NO_SIGNAL SwiftDevicesAndProxyConfig: type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig @@ -1007,6 +1055,7 @@ resources: ControllerClusterConfig: type: OS::Heat::StructuredConfig properties: + group: os-apply-config config: corosync: nodes: {get_attr: [Controller, corosync_node]} @@ -1024,7 +1073,6 @@ resources: properties: config: {get_resource: ControllerClusterConfig} servers: {get_attr: [Controller, attributes, nova_server_resource]} - signal_transport: NO_SIGNAL ControllerAllNodesDeployment: type: OS::Heat::StructuredDeployments diff --git a/puppet/bootstrap-config.yaml b/puppet/bootstrap-config.yaml index c88ed408..d88eebdf 100644 --- a/puppet/bootstrap-config.yaml +++ b/puppet/bootstrap-config.yaml @@ -12,6 +12,7 @@ resources: BootstrapNodeConfigImpl: type: OS::Heat::StructuredConfig properties: + group: os-apply-config config: hiera: datafiles: diff --git a/puppet/ceph-storage-puppet.yaml b/puppet/ceph-storage-puppet.yaml index 2c360868..245d8ebb 100644 --- a/puppet/ceph-storage-puppet.yaml +++ b/puppet/ceph-storage-puppet.yaml @@ -39,6 +39,9 @@ parameters: description: > Setting to a previously unused value during stack-update will trigger package update on all nodes + Hostname: + type: string + default: '' # Defaults to Heat created hostname resources: CephStorage: @@ -52,6 +55,7 @@ resources: - network: ctlplane user_data_format: SOFTWARE_CONFIG user_data: {get_resource: NodeUserData} + name: {get_param: Hostname} NodeUserData: type: OS::TripleO::NodeUserData @@ -86,6 +90,7 @@ resources: CephStorageDeployment: type: OS::Heat::StructuredDeployment + depends_on: NetworkDeployment properties: config: {get_resource: CephStorageConfig} server: {get_resource: CephStorage} @@ -138,7 +143,7 @@ outputs: hosts_entry: value: str_replace: - template: "IP HOST" + template: "IP HOST.localdomain HOST" params: IP: {get_attr: [CephStorage, networks, ctlplane, 0]} HOST: {get_attr: [CephStorage, name]} diff --git a/puppet/cinder-storage-puppet.yaml b/puppet/cinder-storage-puppet.yaml index 89a94bc4..cc8d17c4 100644 --- a/puppet/cinder-storage-puppet.yaml +++ b/puppet/cinder-storage-puppet.yaml @@ -25,7 +25,7 @@ parameters: default: '' description: Set to True to enable debugging on all services. type: string - VirtualIP: + VirtualIP: # deprecated. Use per service VIPs instead. default: '' type: string ExtraConfig: @@ -75,6 +75,10 @@ parameters: default: "9292" description: Glance port. type: string + GlanceProtocol: + default: http + description: Protocol to use when connecting to glance, set to https for SSL. + type: string KeyName: default: default description: Name of an existing EC2 KeyPair to enable SSH access to the instances @@ -117,6 +121,20 @@ parameters: description: > Setting to a previously unused value during stack-update will trigger package update on all nodes + Hostname: + type: string + default: '' # Defaults to Heat created hostname + ServiceNetMap: + default: {} + description: Mapping of service_name -> network name. Typically set + via parameter_defaults in the resource registry. + type: json + GlanceApiVirtualIP: + type: string + default: '' + MysqlVirtualIP: + type: string + default: '' resources: BlockStorage: @@ -130,6 +148,7 @@ resources: - network: ctlplane user_data_format: SOFTWARE_CONFIG user_data: {get_resource: NodeUserData} + name: {get_param: Hostname} NodeUserData: type: OS::TripleO::NodeUserData @@ -156,6 +175,13 @@ resources: StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]} StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]} + NetIpMap: + type: OS::TripleO::Network::Ports::NetIpMap + properties: + InternalApiIp: {get_attr: [InternalApiPort, ip_address]} + StorageIp: {get_attr: [StoragePort, ip_address]} + StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]} + NetworkDeployment: type: OS::TripleO::SoftwareDeployment properties: @@ -164,12 +190,13 @@ resources: BlockStorageDeployment: type: OS::Heat::StructuredDeployment + depends_on: NetworkDeployment properties: server: {get_resource: BlockStorage} config: {get_resource: BlockStorageConfig} input_values: debug: {get_param: Debug} - cinder_dsn: {list_join: ['', ['mysql://cinder:', {get_param: CinderPassword}, '@', {get_param: VirtualIP} , '/cinder']]} + cinder_dsn: {list_join: ['', ['mysql://cinder:', {get_param: CinderPassword}, '@', {get_param: MysqlVirtualIP} , '/cinder']]} snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName} snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword} cinder_lvm_loop_device_size: @@ -179,6 +206,15 @@ resources: size: {get_param: CinderLVMLoopDeviceSize} cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend} cinder_iscsi_helper: {get_param: CinderISCSIHelper} + cinder_iscsi_ip_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]} + glance_api_servers: + list_join: + - '' + - - {get_param: GlanceProtocol} + - '://' + - {get_param: GlanceApiVirtualIP} + - ':' + - {get_param: GlancePort} rabbit_username: {get_param: RabbitUserName} rabbit_password: {get_param: RabbitPassword} rabbit_client_use_ssl: {get_param: RabbitClientUseSSL} @@ -189,7 +225,6 @@ resources: params: server: {get_param: NtpServer} enable_package_install: {get_param: EnablePackageInstall} - signal_transport: NO_SIGNAL # Map heat metadata into hiera datafiles BlockStorageConfig: @@ -209,8 +244,6 @@ resources: raw_data: {get_file: hieradata/common.yaml} volume: raw_data: {get_file: hieradata/volume.yaml} - oac_data: - cinder_iscsi_ip_address: local-ipv4 mapped_data: # Cinder cinder::debug: {get_input: debug} @@ -222,6 +255,8 @@ resources: cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl} cinder::rabbit_port: {get_input: rabbit_client_port} cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend} + 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} snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name} @@ -243,7 +278,7 @@ outputs: hosts_entry: value: str_replace: - template: "IP HOST" + template: "IP HOST.localdomain HOST" params: IP: {get_attr: [BlockStorage, networks, ctlplane, 0]} HOST: {get_attr: [BlockStorage, name]} diff --git a/puppet/compute-puppet.yaml b/puppet/compute-puppet.yaml index 822df811..7e49bc22 100644 --- a/puppet/compute-puppet.yaml +++ b/puppet/compute-puppet.yaml @@ -258,6 +258,9 @@ parameters: description: > Setting to a previously unused value during stack-update will trigger package update on all nodes + Hostname: + type: string + default: '' # Defaults to Heat created hostname resources: @@ -274,6 +277,7 @@ resources: - network: ctlplane user_data_format: SOFTWARE_CONFIG user_data: {get_resource: NodeUserData} + name: {get_param: Hostname} NodeUserData: type: OS::TripleO::NodeUserData @@ -310,7 +314,6 @@ resources: NetworkDeployment: type: OS::TripleO::SoftwareDeployment properties: - signal_transport: NO_SIGNAL config: {get_resource: NetworkConfig} server: {get_resource: NovaCompute} input_values: @@ -393,8 +396,8 @@ resources: NovaComputeDeployment: type: OS::TripleO::SoftwareDeployment + depends_on: NetworkDeployment properties: - signal_transport: NO_SIGNAL config: {get_resource: NovaComputeConfig} server: {get_resource: NovaCompute} input_values: @@ -427,7 +430,7 @@ resources: - {get_param: GlancePort} neutron_flat_networks: {get_param: NeutronFlatNetworks} neutron_host: {get_param: NeutronHost} - neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronLocalIp]}]} + 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_network_vlan_ranges: @@ -505,7 +508,7 @@ outputs: Server's IP address and hostname in the /etc/hosts format value: str_replace: - template: "IP HOST" + template: "IP HOST.localdomain HOST" params: IP: {get_attr: [NovaCompute, networks, ctlplane, 0]} HOST: {get_attr: [NovaCompute, name]} diff --git a/puppet/controller-puppet.yaml b/puppet/controller-puppet.yaml index 68d70a23..1e563331 100644 --- a/puppet/controller-puppet.yaml +++ b/puppet/controller-puppet.yaml @@ -76,11 +76,6 @@ parameters: default: true description: Whether to use Galera instead of regular MariaDB. type: boolean - EnablePacemaker: - default: false - description: If enabled services will be monitored by Pacemaker; it - will manage VIPs as well, in place of Keepalived. - type: boolean EnableCephStorage: default: false description: Whether to deploy Ceph Storage (OSD) on the Controller @@ -460,6 +455,9 @@ parameters: description: > Setting to a previously unused value during stack-update will trigger package update on all nodes + Hostname: + type: string + default: '' # Defaults to Heat created hostname resources: @@ -474,6 +472,7 @@ resources: - network: ctlplane user_data_format: SOFTWARE_CONFIG user_data: {get_resource: NodeUserData} + name: {get_param: Hostname} NodeUserData: type: OS::TripleO::NodeUserData @@ -533,7 +532,6 @@ resources: NetworkDeployment: type: OS::TripleO::SoftwareDeployment properties: - signal_transport: NO_SIGNAL config: {get_resource: NetworkConfig} server: {get_resource: Controller} input_values: @@ -542,8 +540,8 @@ resources: ControllerDeployment: type: OS::TripleO::SoftwareDeployment + depends_on: NetworkDeployment properties: - signal_transport: NO_SIGNAL config: {get_resource: ControllerConfig} server: {get_resource: Controller} input_values: @@ -693,6 +691,12 @@ resources: ceilometer_backend: {get_param: CeilometerBackend} ceilometer_metering_secret: {get_param: CeilometerMeteringSecret} ceilometer_password: {get_param: CeilometerPassword} + ceilometer_coordination_url: + list_join: + - '' + - - 'redis://' + - {get_param: RedisVirtualIP} + - ':6379' ceilometer_dsn: list_join: - '' @@ -749,7 +753,7 @@ resources: keystone_admin_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]} mongo_db_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]} neutron_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]} - neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronLocalIp]}]} + neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]} ceilometer_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]} nova_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]} nova_metadata_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]} @@ -951,6 +955,7 @@ resources: ceilometer::api::keystone_identity_uri: {get_input: keystone_identity_uri} ceilometer::agent::auth::auth_password: {get_input: ceilometer_password} ceilometer::agent::auth::auth_url: {get_input: keystone_auth_address} + ceilometer::agent::central::coordination_url: {get_input: ceilometer_coordination_url} snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name} snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password} @@ -971,8 +976,10 @@ resources: nova::network::neutron::neutron_admin_password: {get_input: neutron_password} nova::network::neutron::neutron_url: {get_input: neutron_url} nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url} + nova::vncproxy::host: {get_input: nova_api_network} # Horizon + apache::ip: {get_input: horizon_network} horizon::django_debug: {get_input: debug} horizon::secret_key: {get_input: horizon_secret} horizon::bind_address: {get_input: horizon_network} @@ -1040,7 +1047,7 @@ outputs: Server's IP address and hostname in the /etc/hosts format value: str_replace: - template: IP HOST CLOUDNAME + template: IP HOST.localdomain HOST CLOUDNAME params: IP: {get_attr: [Controller, networks, ctlplane, 0]} HOST: {get_attr: [Controller, name]} diff --git a/puppet/hieradata/controller.yaml b/puppet/hieradata/controller.yaml index 4a506239..d0cbe890 100644 --- a/puppet/hieradata/controller.yaml +++ b/puppet/hieradata/controller.yaml @@ -88,8 +88,11 @@ pacemaker::corosync::manage_fw: false # horizon horizon::allowed_hosts: '*' +horizon::django_session_engine: 'django.contrib.sessions.backends.cache' + mysql::server::manage_config_file: true +mysql::server::package_name: mariadb-galera-server tripleo::loadbalancer::galera_master_ip: "%{hiera('bootstrap_nodeid_ip')}" @@ -112,3 +115,4 @@ tripleo::loadbalancer::ceilometer: true tripleo::loadbalancer::heat_api: true tripleo::loadbalancer::heat_cloudwatch: true tripleo::loadbalancer::heat_cfn: true +tripleo::loadbalancer::horizon: true diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp index ae5001ad..ed4f3512 100644 --- a/puppet/manifests/overcloud_controller_pacemaker.pp +++ b/puppet/manifests/overcloud_controller_pacemaker.pp @@ -55,7 +55,6 @@ if hiera('step') >= 1 { class { '::tripleo::loadbalancer' : controller_hosts => $controller_node_ips, controller_hosts_names => $controller_node_names, - redis => false, manage_vip => false, haproxy_service_manage => false, } @@ -109,7 +108,6 @@ if hiera('step') >= 1 { # Redis class { '::redis' : - bind => '0.0.0.0', service_manage => false, notify_service => false, } @@ -164,6 +162,11 @@ if hiera('step') >= 1 { if hiera('step') >= 2 { + # NOTE(gfidente): the following vars are needed on all nodes so they + # need to stay out of pacemaker_master conditional + $mongo_node_ips_with_port = suffix(hiera('mongo_node_ips'), ':27017') + $mongodb_replset = hiera('mongodb::server::replset') + if $pacemaker_master { # FIXME: we should not have to access tripleo::loadbalancer class @@ -223,11 +226,6 @@ if hiera('step') >= 2 { } # NOTE (spredzy) : The replset can only be run # once all the nodes have joined the cluster. - $mongo_node_ips = hiera('mongo_node_ips') - $mongo_node_ips_with_port = suffix($mongo_node_ips, ':27017') - $mongo_node_string = join($mongo_node_ips_with_port, ',') - $mongodb_pacemaker_resource = Pacemaker::Resource::Service[$::mongodb::params::service_name] - $mongodb_replset = hiera('mongodb::server::replset') mongodb_conn_validator { $mongo_node_ips_with_port : require => Pacemaker::Resource::Service[$::mongodb::params::service_name], before => Mongodb_replset[$mongodb_replset], @@ -255,8 +253,10 @@ if hiera('step') >= 2 { require => Class['::redis'], } $redis_vip = hiera('redis_vip') - pacemaker::resource::ip { 'vip-redis': - ip_address => $redis_vip, + if $redis_vip and $redis_vip != $control_vip { + pacemaker::resource::ip { 'vip-redis': + ip_address => $redis_vip, + } } pacemaker::constraint::base { 'redis-master-then-vip-redis': constraint_type => 'order', @@ -658,6 +658,7 @@ if hiera('step') >= 3 { $ceilometer_database_connection = hiera('ceilometer_mysql_conn_string') } default : { + $mongo_node_string = join($mongo_node_ips_with_port, ',') $ceilometer_database_connection = "mongodb://${mongo_node_string}/ceilometer?replicaSet=${mongodb_replset}" } } @@ -673,7 +674,6 @@ if hiera('step') >= 3 { class { '::ceilometer::agent::central' : manage_service => false, enabled => false, - coordination_url => "redis://${redis_vip}:6379", } class { '::ceilometer::alarm::notifier' : manage_service => false, @@ -717,11 +717,18 @@ if hiera('step') >= 3 { enabled => false, } - # Horizon - $vhost_params = { add_listen => false } + # httpd/apache and horizon + # NOTE(gfidente): server-status can be consumed by the pacemaker resource agent + include ::apache + include ::apache::mod::status + $vhost_params = { + add_listen => false, + priority => 10, + } class { 'horizon': cache_server_ip => hiera('memcache_node_ips', '127.0.0.1'), vhost_extra_params => $vhost_params, + server_aliases => $::hostname, } $snmpd_user = hiera('snmpd_readonly_user_name') @@ -1080,7 +1087,7 @@ if hiera('step') >= 4 { pacemaker::resource::service { $::ceilometer::params::agent_central_service_name : clone_params => 'interleave=true', require => [Pacemaker::Resource::Service[$::keystone::params::service_name], - $mongodb_pacemaker_resource], + Pacemaker::Resource::Service[$::mongodb::params::service_name]], } pacemaker::resource::service { $::ceilometer::params::collector_service_name : clone_params => 'interleave=true', @@ -1292,6 +1299,12 @@ if hiera('step') >= 4 { Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name]], } + # Horizon + pacemaker::resource::service { $::horizon::params::http_service: + clone_params => "interleave=true", + } + + } } #END STEP 4 diff --git a/puppet/manifests/overcloud_volume.pp b/puppet/manifests/overcloud_volume.pp index 80cf6a21..edfeaeca 100644 --- a/puppet/manifests/overcloud_volume.pp +++ b/puppet/manifests/overcloud_volume.pp @@ -31,6 +31,7 @@ if count(hiera('ntp::servers')) > 0 { } include ::cinder +include ::cinder::glance include ::cinder::volume include ::cinder::setup_test_volume diff --git a/puppet/swift-storage-puppet.yaml b/puppet/swift-storage-puppet.yaml index 7f4e2b08..82922a87 100644 --- a/puppet/swift-storage-puppet.yaml +++ b/puppet/swift-storage-puppet.yaml @@ -62,6 +62,9 @@ parameters: description: Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry. type: json + Hostname: + type: string + default: '' # Defaults to Heat created hostname resources: @@ -75,6 +78,7 @@ resources: - network: ctlplane user_data_format: SOFTWARE_CONFIG user_data: {get_resource: NodeUserData} + name: {get_param: Hostname} NodeUserData: type: OS::TripleO::NodeUserData @@ -151,10 +155,10 @@ resources: SwiftStorageHieraDeploy: type: OS::Heat::StructuredDeployment + depends_on: NetworkDeployment properties: server: {get_resource: SwiftStorage} config: {get_resource: SwiftStorageHieraConfig} - signal_transport: NO_SIGNAL input_values: local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]} snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName} @@ -188,7 +192,7 @@ outputs: hosts_entry: value: str_replace: - template: "IP HOST" + template: "IP HOST.localdomain HOST" params: IP: {get_attr: [SwiftStorage, networks, ctlplane, 0]} HOST: {get_attr: [SwiftStorage, name]} diff --git a/puppet/vip-config.yaml b/puppet/vip-config.yaml index c083821e..1dec489c 100644 --- a/puppet/vip-config.yaml +++ b/puppet/vip-config.yaml @@ -27,7 +27,6 @@ resources: horizon_vip: {get_input: horizon_vip} redis_vip: {get_input: redis_vip} mysql_vip: {get_input: mysql_vip} - mysql_vip: {get_input: mysql_vip} tripleo::loadbalancer::public_virtual_ip: {get_input: public_virtual_ip} tripleo::loadbalancer::controller_virtual_ip: {get_input: control_virtual_ip} tripleo::loadbalancer::internal_api_virtual_ip: {get_input: internal_api_virtual_ip} diff --git a/swift-storage.yaml b/swift-storage.yaml index e2d4da93..e4cacf3c 100644 --- a/swift-storage.yaml +++ b/swift-storage.yaml @@ -88,6 +88,9 @@ parameters: description: > Setting to a previously unused value during stack-update will trigger package update on all nodes + Hostname: + type: string + default: '' # Defaults to Heat created hostname resources: SwiftConfig: @@ -118,6 +121,7 @@ resources: - network: ctlplane user_data_format: SOFTWARE_CONFIG user_data: {get_resource: NodeUserData} + name: {get_param: Hostname} NodeUserData: type: OS::TripleO::NodeUserData |