Convert swift storage to composable services
authorSteven Hardy <shardy@redhat.com>
Tue, 24 May 2016 16:25:33 +0000 (17:25 +0100)
committerGiulio Fidente <gfidente@redhat.com>
Wed, 29 Jun 2016 09:53:52 +0000 (11:53 +0200)
Depends-On: Ie68d7eccf4938bdbdea93327af0638b3fd002b3e

Change-Id: I1eb68d0cd5f8bf4bf954dd9f12941bc493345708
Partially-Implements: blueprint composable-services-within-roles

overcloud-resource-registry-puppet.yaml
overcloud.yaml
puppet/controller.yaml
puppet/manifests/overcloud_controller.pp
puppet/manifests/overcloud_controller_pacemaker.pp
puppet/manifests/overcloud_object.pp
puppet/services/swift-storage.yaml [new file with mode: 0644]
puppet/swift-storage.yaml

index 13d8e13..e4fc8a0 100644 (file)
@@ -148,7 +148,6 @@ resource_registry:
   OS::TripleO::Services::HAproxy: puppet/services/haproxy.yaml
   OS::TripleO::Services::Keepalived: puppet/services/keepalived.yaml
   OS::TripleO::Services::Memcached: puppet/services/memcached.yaml
-  OS::TripleO::Services::SwiftProxy: puppet/services/swift-proxy.yaml
   OS::TripleO::Services::SaharaApi: puppet/services/sahara-api.yaml
   OS::TripleO::Services::SaharaEngine: puppet/services/sahara-engine.yaml
   OS::TripleO::Services::Redis: puppet/services/database/redis.yaml
@@ -160,6 +159,8 @@ resource_registry:
   OS::TripleO::Services::NovaVncproxy: puppet/services/nova-vncproxy.yaml
   OS::TripleO::Services::NovaCompute: puppet/services/nova-compute.yaml
   OS::TripleO::Services::Ntp: puppet/services/time/ntp.yaml
+  OS::TripleO::Services::SwiftProxy: puppet/services/swift-proxy.yaml
+  OS::TripleO::Services::SwiftStorage: puppet/services/swift-storage.yaml
 
 parameter_defaults:
   EnablePackageInstall: false
index 0af6ee4..0abc512 100644 (file)
@@ -345,10 +345,6 @@ parameters:
     default: false
     description: Whether to deploy Ceph Storage (OSD) on the Controller
     type: boolean
-  ControllerEnableSwiftStorage:
-    default: true
-    description: Whether to enable Swift Storage on the Controller
-    type: boolean
   ControllerSchedulerHints:
     type: json
     description: Optional scheduler hints to pass to nova
@@ -440,10 +436,6 @@ parameters:
     description: A random string to be used as a salt when hashing to determine mappings in the ring.
     type: string
     hidden: true
-  SwiftMountCheck:
-    default: 'false'
-    description: Value of mount_check in Swift account/container/object -server.conf
-    type: boolean
   SwiftMinPartHours:
     type: number
     default: 1
@@ -587,7 +579,6 @@ parameters:
       - OS::TripleO::Services::HAproxy
       - OS::TripleO::Services::Keepalived
       - OS::TripleO::Services::Memcached
-      - OS::TripleO::Services::SwiftProxy
       - OS::TripleO::Services::Redis
       - OS::TripleO::Services::NovaConductor
       - OS::TripleO::Services::MongoDb
@@ -596,6 +587,8 @@ parameters:
       - OS::TripleO::Services::NovaConsoleauth
       - OS::TripleO::Services::NovaVncproxy
       - OS::TripleO::Services::Ntp
+      - OS::TripleO::Services::SwiftProxy
+      - OS::TripleO::Services::SwiftStorage
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the Controllers.
@@ -661,6 +654,7 @@ parameters:
   ObjectStorageServices:
     default:
       - OS::TripleO::Services::Ntp
+      - OS::TripleO::Services::SwiftStorage
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the ObjectStorage nodes.
@@ -846,7 +840,6 @@ resources:
           PurgeFirewallRules: {get_param: PurgeFirewallRules}
           EnableGalera: {get_param: EnableGalera}
           EnableCephStorage: {get_param: ControllerEnableCephStorage}
-          EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
           ExtraConfig: {get_param: ExtraConfig}
           FencingConfig: {get_param: FencingConfig}
           Flavor: {get_param: OvercloudControlFlavor}
@@ -885,7 +878,6 @@ resources:
           RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
           RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
           SwiftHashSuffix: {get_param: SwiftHashSuffix}
-          SwiftMountCheck: {get_param: SwiftMountCheck}
           SwiftMinPartHours: {get_param: SwiftMinPartHours}
           SwiftPartPower: {get_param: SwiftPartPower}
           SwiftReplicas: { get_param: SwiftReplicas}
@@ -1061,7 +1053,6 @@ resources:
           KeyName: {get_param: KeyName}
           Flavor: {get_param: OvercloudSwiftStorageFlavor}
           HashSuffix: {get_param: SwiftHashSuffix}
-          MountCheck: {get_param: SwiftMountCheck}
           MinPartHours: {get_param: SwiftMinPartHours}
           PartPower: {get_param: SwiftPartPower}
           Image: {get_param: SwiftStorageImage}
index ae1ef49..132f075 100644 (file)
@@ -96,10 +96,6 @@ parameters:
     default: false
     description: Whether to deploy Ceph Storage (OSD) on the Controller
     type: boolean
-  EnableSwiftStorage:
-    default: true
-    description: Whether to enable Swift Storage on the Controller
-    type: boolean
   ExtraConfig:
     default: {}
     description: |
@@ -343,10 +339,6 @@ parameters:
       in the ring.
     hidden: true
     type: string
-  SwiftMountCheck:
-    default: 'false'
-    description: Value of mount_check in Swift account/container/object -server.conf
-    type: boolean
   SwiftMinPartHours:
     type: number
     default: 1
@@ -632,7 +624,6 @@ resources:
         enable_galera: {get_param: EnableGalera}
         enable_load_balancer: {get_param: EnableLoadBalancer}
         enable_ceph_storage: {get_param: EnableCephStorage}
-        enable_swift_storage: {get_param: EnableSwiftStorage}
         manage_firewall: {get_param: ManageFirewall}
         purge_firewall_rules: {get_param: PurgeFirewallRules}
         mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
@@ -750,7 +741,6 @@ resources:
         swift_ring_build: {get_param: SwiftRingBuild}
         swift_replicas: {get_param: SwiftReplicas}
         swift_min_part_hours: {get_param: SwiftMinPartHours}
-        swift_mount_check: {get_param: SwiftMountCheck}
         enable_package_install: {get_param: EnablePackageInstall}
         enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
         swift_proxy_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
@@ -874,7 +864,6 @@ resources:
                 tripleo::ringbuilder::part_power: {get_input: swift_part_power}
                 tripleo::ringbuilder::replicas: {get_input: swift_replicas}
                 tripleo::ringbuilder::min_part_hours: {get_input: swift_min_part_hours}
-                swift_mount_check: {get_input: swift_mount_check}
 
                 # Cinder
                 tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_address: {get_input: cinder_iscsi_network}
@@ -912,7 +901,6 @@ resources:
                 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}
index 628856e..8c14f91 100644 (file)
@@ -215,24 +215,6 @@ if hiera('step') >= 4 {
     }
   }
 
-  # swift storage
-  if str2bool(hiera('enable_swift_storage', true)) {
-    class { '::swift::storage::all':
-      mount_check => str2bool(hiera('swift_mount_check')),
-    }
-    if(!defined(File['/srv/node'])) {
-      file { '/srv/node':
-        ensure  => directory,
-        owner   => 'swift',
-        group   => 'swift',
-        require => Package['openstack-swift'],
-      }
-    }
-    $swift_components = ['account', 'container', 'object']
-    swift::storage::filter::recon { $swift_components : }
-    swift::storage::filter::healthcheck { $swift_components : }
-  }
-
   # Ceilometer
   $ceilometer_backend = downcase(hiera('ceilometer_backend'))
   case $ceilometer_backend {
index 9bb40fc..84a8cb6 100644 (file)
@@ -409,36 +409,6 @@ MYSQL_HOST=localhost\n",
     }
   }
 
-  # swift storage
-  if str2bool(hiera('enable_swift_storage', true)) {
-    class {'::swift::storage::all':
-      mount_check => str2bool(hiera('swift_mount_check')),
-    }
-    class {'::swift::storage::account':
-      manage_service => $non_pcmk_start,
-      enabled        => $non_pcmk_start,
-    }
-    class {'::swift::storage::container':
-      manage_service => $non_pcmk_start,
-      enabled        => $non_pcmk_start,
-    }
-    class {'::swift::storage::object':
-      manage_service => $non_pcmk_start,
-      enabled        => $non_pcmk_start,
-    }
-    if(!defined(File['/srv/node'])) {
-      file { '/srv/node':
-        ensure  => directory,
-        owner   => 'swift',
-        group   => 'swift',
-        require => Package['openstack-swift'],
-      }
-    }
-    $swift_components = ['account', 'container', 'object']
-    swift::storage::filter::recon { $swift_components : }
-    swift::storage::filter::healthcheck { $swift_components : }
-  }
-
   # Ceilometer
   case downcase(hiera('ceilometer_backend')) {
     /mysql/: {
index 4fca8f5..5b6a9e5 100644 (file)
@@ -26,22 +26,6 @@ if hiera('step') >= 1 {
 }
 
 if hiera('step') >= 4 {
-  class { '::swift::storage::all':
-    mount_check => str2bool(hiera('swift_mount_check')),
-  }
-  if(!defined(File['/srv/node'])) {
-    file { '/srv/node':
-      ensure  => directory,
-      owner   => 'swift',
-      group   => 'swift',
-      require => Package['openstack-swift'],
-    }
-  }
-
-  $swift_components = ['account', 'container', 'object']
-  swift::storage::filter::recon { $swift_components : }
-  swift::storage::filter::healthcheck { $swift_components : }
-
   $snmpd_user = hiera('snmpd_readonly_user_name')
   snmp::snmpv3_user { $snmpd_user:
     authtype => 'MD5',
diff --git a/puppet/services/swift-storage.yaml b/puppet/services/swift-storage.yaml
new file mode 100644 (file)
index 0000000..980c95f
--- /dev/null
@@ -0,0 +1,44 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Swift Storage service configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  Debug:
+    default: ''
+    description: Set to True to enable debugging on all services.
+    type: string
+  SwiftMountCheck:
+    default: false
+    description: Value of mount_check in Swift account/container/object -server.conf
+    type: boolean
+
+  # DEPRECATED options for compatibility with overcloud.yaml
+  # This should be removed and manipulation of the ControllerServices list
+  # used instead, but we need client support for that first
+  ControllerEnableSwiftStorage:
+    default: true
+    description: Whether to enable Swift Storage on the Controller
+    type: boolean
+
+parameter_groups:
+- label: deprecated
+  description: Do not use deprecated params, they will be removed.
+  parameters:
+  - ControllerEnableSwiftStorage
+
+outputs:
+  role_data:
+    description: Role data for the Swift Proxy role.
+    value:
+      config_settings:
+        # Swift
+        swift::storage::all::mount_check: {get_param: SwiftMountCheck}
+        tripleo::profile::base::swift::storage::enable_swift_storage: {get_param: ControllerEnableSwiftStorage}
+      step_config: |
+        include ::tripleo::profile::base::swift::storage
index 30f7657..dc3d2c5 100644 (file)
@@ -18,10 +18,6 @@ parameters:
     default: default
     description: Name of an existing Nova key pair to enable SSH access to the instances
     type: string
-  MountCheck:
-    default: 'false'
-    description: Value of mount_check in Swift account/container/object -server.conf
-    type: boolean
   MinPartHours:
     type: number
     default: 1
@@ -286,7 +282,6 @@ resources:
                 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
                 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
                 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
-                swift_mount_check: {get_input: swift_mount_check }
                 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
                 timezone::timezone: {get_input: timezone}
                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
@@ -307,7 +302,6 @@ resources:
         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
         swift_hash_suffix: {get_param: HashSuffix}
-        swift_mount_check: {get_param: MountCheck}
         swift_min_part_hours: {get_param: MinPartHours}
         swift_ring_build: {get_param: RingBuild}
         swift_part_power: {get_param: PartPower}