aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2015-06-03 22:01:36 -0400
committerDan Prince <dprince@redhat.com>2015-06-04 13:28:00 -0400
commit49639ec8a1335fc6bc45ff9ceb88e4ad5753802d (patch)
treea317a610323d19bbe8b461170d0d7bc80319cbfa
parent92271fb0545bae0e4bd9aac2dfb0017e9bc6d919 (diff)
Isolate the Ceph storage and storage_mgmt nets
This patch updates the Ceph configuration for the puppet implementation so that it isolates the Ceph traffic for the public and cluster interfaces. By default public traffic runs on the "storage" network and the cluster traffic runs on the "storage mgmt" network. If network isolation is not enabled then the default ctlplane address's will be used for both the public and cluster interfaces. Change-Id: I791244d72c8f42142d9de99e0cf0acdca19e62b0
-rw-r--r--ceph-storage.yaml5
-rw-r--r--overcloud-without-mergepy.yaml5
-rw-r--r--puppet/ceph-storage-puppet.yaml17
-rw-r--r--puppet/controller-puppet.yaml16
4 files changed, 40 insertions, 3 deletions
diff --git a/ceph-storage.yaml b/ceph-storage.yaml
index 74530147..05d80927 100644
--- a/ceph-storage.yaml
+++ b/ceph-storage.yaml
@@ -28,6 +28,11 @@ parameters:
default: ''
description: The list of ip/names to use as Ceph monitors
type: json
+ ServiceNetMap:
+ default: {}
+ description: Mapping of service_name -> network name. Typically set
+ via parameter_defaults in the resource registry.
+ type: json
resources:
CephStorage:
diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml
index 4b2e0b90..5f81fcd1 100644
--- a/overcloud-without-mergepy.yaml
+++ b/overcloud-without-mergepy.yaml
@@ -516,6 +516,8 @@ parameters:
RabbitMqNetwork: internal_api
RedisNetwork: internal_api
MysqlNetwork: internal_api
+ CephClusterNetwork: storage_mgmt
+ CephPublicNetwork: storage
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry.
type: json
@@ -782,6 +784,7 @@ resources:
KeyName: {get_param: KeyName}
Flavor: {get_param: OvercloudCephStorageFlavor}
NtpServer: {get_param: NtpServer}
+ ServiceNetMap: {get_param: ServiceNetMap}
ControllerIpListMap:
type: OS::TripleO::Network::Ports::NetIpListMap
@@ -980,7 +983,7 @@ resources:
ceph_mon_key: {get_param: CephMonKey}
ceph_admin_key: {get_param: CephAdminKey}
ceph_mon_names: {get_attr: [Controller, hostname]}
- ceph_mon_ips: {get_attr: [Controller, ip_address]}
+ ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
ControllerClusterConfig:
type: OS::Heat::StructuredConfig
diff --git a/puppet/ceph-storage-puppet.yaml b/puppet/ceph-storage-puppet.yaml
index 00dbca01..e3fa56b9 100644
--- a/puppet/ceph-storage-puppet.yaml
+++ b/puppet/ceph-storage-puppet.yaml
@@ -28,6 +28,11 @@ parameters:
default: 'false'
description: Set to true to enable package installation via Puppet
type: boolean
+ ServiceNetMap:
+ default: {}
+ description: Mapping of service_name -> network name. Typically set
+ via parameter_defaults in the resource registry.
+ type: json
resources:
CephStorage:
@@ -61,6 +66,12 @@ resources:
StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
+ NetIpSubnetMap:
+ type: OS::TripleO::Network::Ports::NetIpMap
+ properties:
+ StorageIp: {get_attr: [StoragePort, ip_subnet]}
+ StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_subnet]}
+
NetworkDeployment:
type: OS::TripleO::SoftwareDeployment
properties:
@@ -79,6 +90,8 @@ resources:
params:
server: {get_param: NtpServer}
enable_package_install: {get_param: EnablePackageInstall}
+ ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
+ ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
CephStorageConfig:
type: OS::Heat::StructuredConfig
@@ -88,7 +101,6 @@ resources:
hiera:
hierarchy:
- heat_config_%{::deploy_config_name}
- - cephstorage
- ceph_cluster # provided by CephClusterConfig
- ceph
- '"%{::osfamily}"'
@@ -98,10 +110,11 @@ resources:
raw_data: {get_file: hieradata/common.yaml}
ceph:
raw_data: {get_file: hieradata/ceph.yaml}
- cephstorage:
mapped_data:
ntp::servers: {get_input: ntp_servers}
enable_package_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}
outputs:
hosts_entry:
diff --git a/puppet/controller-puppet.yaml b/puppet/controller-puppet.yaml
index 2160bfa2..a3fbe780 100644
--- a/puppet/controller-puppet.yaml
+++ b/puppet/controller-puppet.yaml
@@ -498,6 +498,15 @@ resources:
StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
TenantIp: {get_attr: [TenantPort, ip_address]}
+ NetIpSubnetMap:
+ type: OS::TripleO::Network::Ports::NetIpMap
+ properties:
+ ExternalIp: {get_attr: [ExternalPort, ip_subnet]}
+ InternalApiIp: {get_attr: [InternalApiPort, ip_subnet]}
+ StorageIp: {get_attr: [StoragePort, ip_subnet]}
+ StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_subnet]}
+ TenantIp: {get_attr: [TenantPort, ip_subnet]}
+
NetworkConfig:
type: OS::TripleO::Controller::Net::SoftwareConfig
properties:
@@ -727,6 +736,9 @@ resources:
redis_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
memcached_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
mysql_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
+ ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
+ ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
+ ceph_public_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
# Map heat metadata into hiera datafiles
ControllerConfig:
@@ -752,6 +764,10 @@ resources:
raw_data: {get_file: hieradata/common.yaml}
ceph:
raw_data: {get_file: hieradata/ceph.yaml}
+ mapped_data:
+ ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
+ ceph::profile::params::public_network: {get_input: ceph_public_network}
+ ceph::mon::public_addr: {get_input: ceph_public_ip}
object:
raw_data: {get_file: hieradata/object.yaml}
controller: