Enable Manila integration - as a composable controller service
authorRyan Hefner <rhefner1@gmail.com>
Tue, 10 Nov 2015 18:56:54 +0000 (13:56 -0500)
committermarios <marios@redhat.com>
Tue, 2 Aug 2016 14:18:07 +0000 (17:18 +0300)
Allows the installation and configuration of Manila.
Supports the generic driver only. This has a dependency on the
puppet-tripleo classes for manila where the puppet specific
config now lives.

The review at https://review.openstack.org/#/c/315658/ has been
merge into this one, as of v68, so manila lands as a composable
service. This was brought up on the mailing list at [1]

[1] http://lists.openstack.org/pipermail/openstack-dev/2016-May/096126.html

Co-Authored-By: Marios Andreou <marios@redhat.com>
Implements: blueprint composable-services-within-roles
Depends-On: I444916d60a67bf730bf4089323dba1c1429e2e71
Depends-On: I9eda4b3364e5c59342761a1ec71b0eb567c69cf1
Depends-On: I571b65a5402c1028418476a573ebeb9450ed00c9
Change-Id: I7acebac4354fca1f8d7ff6c343c1346bf29b81c6

15 files changed:
environments/enable-tls.yaml
environments/manila-generic-config.yaml [new file with mode: 0644]
environments/puppet-pacemaker.yaml
network/endpoints/endpoint_data.yaml
network/endpoints/endpoint_map.yaml
overcloud-resource-registry-puppet.yaml
overcloud.yaml
puppet/all-nodes-config.yaml
puppet/controller.yaml
puppet/services/manila-api.yaml [new file with mode: 0644]
puppet/services/manila-base.yaml [new file with mode: 0644]
puppet/services/manila-scheduler.yaml [new file with mode: 0644]
puppet/services/manila-share.yaml [new file with mode: 0644]
puppet/services/pacemaker/manila-share.yaml [new file with mode: 0644]
puppet/vip-config.yaml

index 289ec2e..ee1f538 100644 (file)
@@ -34,6 +34,9 @@ parameter_defaults:
     KeystoneAdmin: {protocol: 'http', port: '35357', host: 'IP_ADDRESS'}
     KeystoneInternal: {protocol: 'http', port: '5000', host: 'IP_ADDRESS'}
     KeystonePublic: {protocol: 'https', port: '13000', host: 'CLOUDNAME'}
+    ManilaAdmin: {protocol: 'http', port: '8786', host: 'IP_ADDRESS'}
+    ManilaInternal: {protocol: 'http', port: '8786', host: 'IP_ADDRESS'}
+    ManilaPublic: {protocol: 'https', port: '13786', host: 'CLOUDNAME'}
     MysqlInternal: {protocol: 'mysql+pymysql', port: '3306', host: 'IP_ADDRESS'}
     MysqlNoBracketsInternal: {protocol: 'mysql+pymysql', port: '3306', host: 'IP_ADDRESS'}
     NeutronAdmin: {protocol: 'http', port: '9696', host: 'IP_ADDRESS'}
diff --git a/environments/manila-generic-config.yaml b/environments/manila-generic-config.yaml
new file mode 100644 (file)
index 0000000..74011c6
--- /dev/null
@@ -0,0 +1,26 @@
+# A Heat environment file which can be used to enable a
+# a Manila generic driver backend.
+resource_registry:
+  OS::Tripleo::Services::ManilaApi: ../puppet/services/manila-api.yaml
+  OS::Tripleo::Services::ManilaScheduler: ../puppet/services/manila-scheduler.yaml
+  # Only manila-share is pacemaker managed:
+  OS::Tripleo::Services::ManilaShare: ../puppet/services/pacemaker/manila-share.yaml
+
+
+parameter_defaults:
+  ManilaGenericEnableBackend: true
+  ManilaGenericBackendName: tripleo_generic
+  ManilaGenericDriverHandlesShareServers: true
+  ManilaGenericSmbTemplateConfigPath: '$state_path/smb.conf'
+  ManilaGenericVolumeNameTemplate: 'manila-share-%s'
+  ManilaGenericVolumeSnapshotNameTemplate: 'manila-snapshot-%s'
+  ManilaGenericShareMountPath: '/shares'
+  ManilaGenericMaxTimeToCreateVolume: '180'
+  ManilaGenericMaxTimeToAttach: '120'
+  ManilaGenericServiceInstanceSmbConfigPath: '$share_mount_path/smb.conf'
+  ManilaGenericShareVolumeFsType: 'ext4'
+  ManilaGenericCinderVolumeType: ''
+  ManilaGenericServiceInstanceUser: ''
+  ManilaGenericServiceInstancePassword: ''
+  ManilaGenericServiceInstanceFlavorId: 2
+  ManilaGenericServiceNetworkCidr: '172.16.0.0/16'
index 4622bc4..fad2b9e 100644 (file)
@@ -53,3 +53,5 @@ resource_registry:
   OS::TripleO::Services::GnocchiStatsd: ../puppet/services/pacemaker/gnocchi-statsd.yaml
   OS::TripleO::Services::MySQL: ../puppet/services/pacemaker/database/mysql.yaml
   OS::TripleO::Services::Horizon: ../puppet/services/pacemaker/horizon.yaml
+  # Services that are disabled by default (use relevant environment files):
+  OS::Tripleo::Services::ManilaShare: OS::Heat::None
index 5afcf5d..363950d 100644 (file)
@@ -133,6 +133,21 @@ Keystone:
         port: 35357
     port: 5000
 
+Manila:
+    Internal:
+        vip_param: ManilaApi
+        uri_suffixes:
+            '': /v2/%(tenant_id)s
+    Public:
+        vip_param: Public
+        uri_suffixes:
+            '': /v2/%(tenant_id)s
+    Admin:
+        vip_param: ManilaApi
+        uri_suffixes:
+            '': /v2/%(tenant_id)s
+    port: 8786
+
 Neutron:
     Internal:
         vip_param: NeutronApi
index e1b8984..98dad25 100644 (file)
@@ -19,6 +19,7 @@ parameters:
   KeystoneAdminApiVirtualIP: {type: string, default: ''}
   KeystonePublicApiVirtualIP: {type: string, default: ''}
   MysqlNoBracketsVirtualIP: {type: string, default: ''}
+  ManilaApiVirtualIP: {type: string, default: ''}
   MysqlVirtualIP: {type: string, default: ''}
   NeutronApiVirtualIP: {type: string, default: ''}
   NovaApiVirtualIP: {type: string, default: ''}
@@ -57,6 +58,9 @@ parameters:
       KeystoneAdmin: {protocol: http, port: '35357', host: IP_ADDRESS}
       KeystoneInternal: {protocol: http, port: '5000', host: IP_ADDRESS}
       KeystonePublic: {protocol: http, port: '5000', host: IP_ADDRESS}
+      ManilaAdmin: {protocol: http, port: '8786', host: IP_ADDRESS}
+      ManilaInternal: {protocol: http, port: '8786', host: IP_ADDRESS}
+      ManilaPublic: {protocol: http, port: '8786', host: IP_ADDRESS}
       MysqlInternal: {protocol: mysql+pymysql, port: '3306', host: IP_ADDRESS}
       MysqlNoBracketsInternal: {protocol: mysql+pymysql, port: '3306',
         host: IP_ADDRESS}
@@ -1473,6 +1477,123 @@ outputs:
                   IP_ADDRESS: {get_param: PublicVirtualIP}
             - ':'
             - get_param: [EndpointMap, KeystonePublic, port]
+      ManilaAdmin:
+        host:
+          str_replace:
+            template:
+              get_param: [EndpointMap, ManilaAdmin, host]
+            params:
+              CLOUDNAME: {get_param: CloudName}
+              IP_ADDRESS: {get_param: ManilaApiVirtualIP}
+        port:
+          get_param: [EndpointMap, ManilaAdmin, port]
+        protocol:
+          get_param: [EndpointMap, ManilaAdmin, protocol]
+        uri:
+          list_join:
+          - ''
+          - - get_param: [EndpointMap, ManilaAdmin, protocol]
+            - ://
+            - str_replace:
+                template:
+                  get_param: [EndpointMap, ManilaAdmin, host]
+                params:
+                  CLOUDNAME: {get_param: CloudName}
+                  IP_ADDRESS: {get_param: ManilaApiVirtualIP}
+            - ':'
+            - get_param: [EndpointMap, ManilaAdmin, port]
+            - /v2/%(tenant_id)s
+        uri_no_suffix:
+          list_join:
+          - ''
+          - - get_param: [EndpointMap, ManilaAdmin, protocol]
+            - ://
+            - str_replace:
+                template:
+                  get_param: [EndpointMap, ManilaAdmin, host]
+                params:
+                  CLOUDNAME: {get_param: CloudName}
+                  IP_ADDRESS: {get_param: ManilaApiVirtualIP}
+            - ':'
+            - get_param: [EndpointMap, ManilaAdmin, port]
+      ManilaInternal:
+        host:
+          str_replace:
+            template:
+              get_param: [EndpointMap, ManilaInternal, host]
+            params:
+              CLOUDNAME: {get_param: CloudName}
+              IP_ADDRESS: {get_param: ManilaApiVirtualIP}
+        port:
+          get_param: [EndpointMap, ManilaInternal, port]
+        protocol:
+          get_param: [EndpointMap, ManilaInternal, protocol]
+        uri:
+          list_join:
+          - ''
+          - - get_param: [EndpointMap, ManilaInternal, protocol]
+            - ://
+            - str_replace:
+                template:
+                  get_param: [EndpointMap, ManilaInternal, host]
+                params:
+                  CLOUDNAME: {get_param: CloudName}
+                  IP_ADDRESS: {get_param: ManilaApiVirtualIP}
+            - ':'
+            - get_param: [EndpointMap, ManilaInternal, port]
+            - /v2/%(tenant_id)s
+        uri_no_suffix:
+          list_join:
+          - ''
+          - - get_param: [EndpointMap, ManilaInternal, protocol]
+            - ://
+            - str_replace:
+                template:
+                  get_param: [EndpointMap, ManilaInternal, host]
+                params:
+                  CLOUDNAME: {get_param: CloudName}
+                  IP_ADDRESS: {get_param: ManilaApiVirtualIP}
+            - ':'
+            - get_param: [EndpointMap, ManilaInternal, port]
+      ManilaPublic:
+        host:
+          str_replace:
+            template:
+              get_param: [EndpointMap, ManilaPublic, host]
+            params:
+              CLOUDNAME: {get_param: CloudName}
+              IP_ADDRESS: {get_param: PublicVirtualIP}
+        port:
+          get_param: [EndpointMap, ManilaPublic, port]
+        protocol:
+          get_param: [EndpointMap, ManilaPublic, protocol]
+        uri:
+          list_join:
+          - ''
+          - - get_param: [EndpointMap, ManilaPublic, protocol]
+            - ://
+            - str_replace:
+                template:
+                  get_param: [EndpointMap, ManilaPublic, host]
+                params:
+                  CLOUDNAME: {get_param: CloudName}
+                  IP_ADDRESS: {get_param: PublicVirtualIP}
+            - ':'
+            - get_param: [EndpointMap, ManilaPublic, port]
+            - /v2/%(tenant_id)s
+        uri_no_suffix:
+          list_join:
+          - ''
+          - - get_param: [EndpointMap, ManilaPublic, protocol]
+            - ://
+            - str_replace:
+                template:
+                  get_param: [EndpointMap, ManilaPublic, host]
+                params:
+                  CLOUDNAME: {get_param: CloudName}
+                  IP_ADDRESS: {get_param: PublicVirtualIP}
+            - ':'
+            - get_param: [EndpointMap, ManilaPublic, port]
       MysqlInternal:
         host:
           str_replace:
index c71ced2..dc74e88 100644 (file)
@@ -193,6 +193,10 @@ resource_registry:
   OS::TripleO::Services::GnocchiApi: puppet/services/gnocchi-api.yaml
   OS::TripleO::Services::GnocchiMetricd: puppet/services/gnocchi-metricd.yaml
   OS::TripleO::Services::GnocchiStatsd: puppet/services/gnocchi-statsd.yaml
+  # Services that are disabled by default (use relevant environment files):
+  OS::Tripleo::Services::ManilaApi: OS::Heat::None
+  OS::Tripleo::Services::ManilaScheduler: OS::Heat::None
+  OS::Tripleo::Services::ManilaShare: OS::Heat::None
 
 parameter_defaults:
   EnablePackageInstall: false
index 077ffac..630ae21 100644 (file)
@@ -328,6 +328,7 @@ parameters:
       IronicApiNetwork: internal_api
       KeystoneAdminApiNetwork: ctlplane # allows undercloud to config endpoints
       KeystonePublicApiNetwork: internal_api
+      ManilaApiNetwork: internal_api
       NeutronApiNetwork: internal_api
       HeatApiNetwork: internal_api
       NovaApiNetwork: internal_api
@@ -402,7 +403,9 @@ parameters:
       - OS::TripleO::Services::GnocchiApi
       - OS::TripleO::Services::GnocchiMetricd
       - OS::TripleO::Services::GnocchiStatsd
-
+      - OS::Tripleo::Services::ManilaApi
+      - OS::Tripleo::Services::ManilaScheduler
+      - OS::Tripleo::Services::ManilaShare
     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.
@@ -642,6 +645,7 @@ resources:
       IronicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
       KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
       KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
+      ManilaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
       MysqlVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
       MysqlNoBracketsVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
       NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
@@ -924,6 +928,7 @@ resources:
       glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
       glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
       cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
+      manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
       neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
       keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
       keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
@@ -1047,6 +1052,7 @@ resources:
         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: [RedisVirtualIP, ip_address]}
+        manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
         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
@@ -1282,6 +1288,9 @@ outputs:
   KeystoneInternalVip:
     description: VIP for Keystone API internal endpoint
     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
+  ManilaInternalVip:
+    description: VIP for Manila API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
   NeutronInternalVip:
     description: VIP for Neutron API internal endpoint
     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
index 803a5d4..4c9355d 100644 (file)
@@ -48,6 +48,8 @@ parameters:
     type: comma_delimited_list
   cinder_api_node_ips:
     type: comma_delimited_list
+  manila_api_node_ips:
+    type: comma_delimited_list
   neutron_api_node_ips:
     type: comma_delimited_list
   keystone_public_api_node_ips:
@@ -260,6 +262,14 @@ resources:
                         list_join:
                         - "','"
                         - {get_param: cinder_api_node_ips}
+                manila_api_node_ips:
+                  str_replace:
+                    template: "['SERVERS_LIST']"
+                    params:
+                      SERVERS_LIST:
+                        list_join:
+                        - "','"
+                        - {get_param: manila_api_node_ips}
                 neutron_api_node_ips:
                   str_replace:
                     template: "['SERVERS_LIST']"
@@ -332,6 +342,7 @@ resources:
                 aodh::rabbit_hosts: *rabbit_nodes_array
                 cinder::rabbit_hosts: *rabbit_nodes_array
                 glance::notify::rabbitmq::rabbit_hosts: *rabbit_nodes_array
+                manila::rabbit_hosts: *rabbit_nodes_array
                 heat::rabbit_hosts: *rabbit_nodes_array
                 neutron::rabbit_hosts: *rabbit_nodes_array
                 nova::rabbit_hosts: *rabbit_nodes_array
index 679fd90..b604ffc 100644 (file)
@@ -586,6 +586,7 @@ resources:
         keystone_public_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
         keystone_admin_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
         keystone_region: {get_param: KeystoneRegion}
+        manila_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
         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, NeutronTenantNetwork]}]}
@@ -723,6 +724,9 @@ resources:
                 keystone::wsgi::apache::bind_host: {get_input: keystone_public_api_network}
                 keystone::wsgi::apache::admin_bind_host: {get_input: keystone_admin_api_network}
 
+                # Manila
+                manila::api::bind_host: {get_input: manila_api_network}
+
                 # MongoDB
                 mongodb::server::bind_ip: {get_input: mongo_db_network}
 
diff --git a/puppet/services/manila-api.yaml b/puppet/services/manila-api.yaml
new file mode 100644 (file)
index 0000000..ccae446
--- /dev/null
@@ -0,0 +1,46 @@
+heat_template_version: 2016-04-08
+
+description: >
+  Manila-api service configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  ManilaPassword:
+    description: The password for the manila service account.
+    type: string
+    hidden: true
+  KeystoneRegion:
+    type: string
+    default: 'regionOne'
+    description: Keystone region for endpoint
+
+resources:
+  ManilaBase:
+    type: ./manila-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Manila-api role.
+    value:
+      service_name: manila_api
+      config_settings:
+        map_merge:
+          - get_attr: [ManilaBase, role_data, config_settings]
+          - manila::api::keystone_password: {get_param: ManilaPassword}
+            manila::api::keystone_auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri]}
+            manila::api::keystone_auth_host: {get_param: [EndpointMap, ManilaInternal, host]}
+            manila::keystone::auth::public_url: {get_param: [EndpointMap, ManilaPublic, uri]}
+            manila::keystone::auth::internal_url: {get_param: [EndpointMap, ManilaInternal, uri]}
+            manila::keystone::auth::admin_url: {get_param: [EndpointMap, ManilaAdmin, uri]}
+            manila::keystone::auth::password: {get_param: ManilaPassword }
+            manila::keystone::auth::region: {get_param: KeystoneRegion }
+            manila::api::keystone_tenant: 'service'
+      step_config: |
+        include ::tripleo::profile::base::manila::api
+
diff --git a/puppet/services/manila-base.yaml b/puppet/services/manila-base.yaml
new file mode 100644 (file)
index 0000000..c156379
--- /dev/null
@@ -0,0 +1,119 @@
+heat_template_version: 2016-04-08
+
+description: >
+  Openstack Manila base service. Shared by manila-api/scheduler/share services
+
+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
+  RabbitPassword:
+    description: The password for RabbitMQ
+    type: string
+    hidden: true
+  RabbitUserName:
+    default: guest
+    description: The username for RabbitMQ
+    type: string
+  RabbitClientUseSSL:
+    default: false
+    description: >
+        Rabbit client subscriber parameter to specify
+        an SSL connection to the RabbitMQ host.
+    type: string
+  RabbitClientPort:
+    default: 5672
+    description: Set rabbit subscriber port, change this if using SSL
+    type: number
+  # Config specific parameters, to be provided via parameter_defaults
+  ManilaGenericEnableBackend:
+    type: boolean
+    default: true
+  ManilaGenericBackendName:
+    type: string
+    default: tripleo_generic
+  ManilaGenericDriverHandlesShareServers:
+    type: string
+    default: true
+  ManilaGenericSmbTemplateConfigPath:
+    type: string
+    default: '$state_path/smb.conf'
+  ManilaGenericVolumeNameTemplate:
+    type: string
+    default: 'manila-share-%s'
+  ManilaGenericVolumeSnapshotNameTemplate:
+    type: string
+    default: 'manila-snapshot-%s'
+  ManilaGenericShareMountPath:
+    type: string
+    default: '/shares'
+  ManilaGenericMaxTimeToCreateVolume:
+    type: string
+    default: '180'
+  ManilaGenericMaxTimeToAttach:
+    type: string
+    default: '120'
+  ManilaGenericServiceInstanceSmbConfigPath:
+    type: string
+    default: '$share_mount_path/smb.conf'
+  ManilaGenericShareVolumeFsType:
+    type: string
+    default: 'ext4'
+  ManilaGenericCinderVolumeType:
+    type: string
+    default: ''
+  ManilaGenericServiceInstanceUser:
+    type: string
+    default: ''
+  ManilaGenericServiceInstancePassword: #SET THIS via parameter_defaults
+    type: string
+    hidden: true
+  ManilaGenericServiceInstanceFlavorId:
+    type: number
+    default: 1
+  ManilaGenericServiceNetworkCidr:
+    type: string
+    default: '172.16.0.0/16'
+
+outputs:
+  role_data:
+    description: Role data for the Manila Base service.
+    value:
+      service_name: manila_base
+      config_settings:
+        manila::rabbit_userid: {get_param: RabbitUserName}
+        manila::rabbit_password: {get_param: RabbitPassword}
+        manila::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
+        manila::rabbit_port: {get_param: RabbitClientPort}
+        manila::debug: {get_param: Debug}
+        manila::db::mysql::user: manila
+        manila::db::mysql::host: {get_param: [EndpointMap, MysqlNoBracketsInternal, host]}
+        manila::db::mysql::dbname: manila
+        manila::db::database_db_max_retries: -1
+        manila::db::database_max_retries: -1
+        manila_generic_enable_backend: {get_param: ManilaGenericEnableBackend}
+        manila::backend::generic::title: {get_param: ManilaGenericBackendName}
+        manila::backend::generic::driver_handles_share_servers: {get_param: ManilaGenericDriverHandlesShareServers}
+        manila::backend::generic::smb_template_config_path: {get_param: ManilaGenericSmbTemplateConfigPath}
+        manila::backend::generic::volume_name_template: {get_param: ManilaGenericVolumeNameTemplate}
+        manila::backend::generic::volume_snapshot_name_template: {get_param: ManilaGenericVolumeSnapshotNameTemplate}
+        manila::backend::generic::share_mount_path: {get_param: ManilaGenericShareMountPath}
+        manila::backend::generic::max_time_to_create_volume: {get_param: ManilaGenericMaxTimeToCreateVolume}
+        manila::backend::generic::max_time_to_attach: {get_param: ManilaGenericMaxTimeToAttach}
+        manila::backend::generic::service_instance_smb_config_path: {get_param: ManilaGenericServiceInstanceSmbConfigPath}
+        manila::backend::generic::share_volume_fstype: {get_param: ManilaGenericShareVolumeFsType}
+        manila::backend::generic::cinder_volume_type: {get_param: ManilaGenericCinderVolumeType}
+        manila::service_instance::service_instance_user: {get_param: ManilaGenericServiceInstanceUser}
+        manila::service_instance::service_instance_password: {get_param: ManilaGenericServiceInstancePassword}
+        manila::service_instance::service_instance_flavor_id: {get_param: ManilaGenericServiceInstanceFlavorId}
+        manila::service_instance::service_network_cidr: {get_param: ManilaGenericServiceNetworkCidr}
+        manila::db::mysql::allowed_hosts:
+          - '%'
+          - "%{hiera('mysql_bind_host')}"
+
diff --git a/puppet/services/manila-scheduler.yaml b/puppet/services/manila-scheduler.yaml
new file mode 100644 (file)
index 0000000..b1d55a0
--- /dev/null
@@ -0,0 +1,57 @@
+heat_template_version: 2016-04-08
+
+description: >
+  Manila-scheduler service configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  NovaPassword:
+    type: string
+    description: The password for the nova service and db account, used by nova-api.
+    hidden: true
+  NeutronPassword:
+    description: The password for the neutron service and db account, used by neutron agents.
+    type: string
+    hidden: true
+  ManilaPassword:
+    description: The password for the manila service account.
+    type: string
+    hidden: true
+
+resources:
+  ManilaBase:
+    type: ./manila-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Manila-scheduler role.
+    value:
+      service_name: manila_scheduler
+      config_settings:
+        map_merge:
+          - get_attr: [ManilaBase, role_data, config_settings]
+          - manila::compute::nova::nova_admin_auth_url: {get_param: [EndpointMap, KeystoneInternal, uri]}
+            manila::compute::nova::nova_admin_password: {get_param: NovaPassword}
+            manila::compute::nova::nova_admin_tenant_name: 'service'
+            manila::db::mysql::password: {get_param: ManilaPassword}
+            manila::network::neutron::neutron_url: {get_param: [EndpointMap, NeutronInternal, uri]}
+            manila::network::neutron::neutron_admin_auth_url: {get_param: [EndpointMap, NeutronAdmin, uri]}
+            manila::network::neutron::neutron_admin_password: {get_param: NeutronPassword}
+            manila::sql_connection:
+                list_join:
+                - ''
+                - - {get_param: [EndpointMap, MysqlInternal, protocol]}
+                  - '://manila:'
+                  - {get_param: ManilaPassword}
+                  - '@'
+                  - {get_param: [EndpointMap, MysqlInternal, host]}
+                  - '/manila'
+      step_config: |
+        include ::tripleo::profile::base::manila::scheduler
+
diff --git a/puppet/services/manila-share.yaml b/puppet/services/manila-share.yaml
new file mode 100644 (file)
index 0000000..20f36aa
--- /dev/null
@@ -0,0 +1,29 @@
+heat_template_version: 2016-04-08
+
+description: >
+  Manila-share service configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+
+resources:
+  ManilaBase:
+    type: ./manila-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Manila-share role.
+    value:
+      service_name: manila_share
+      config_settings:
+        map_merge:
+          - get_attr: [ManilaBase, role_data, config_settings]
+          - manila::volume::cinder::cinder_admin_tenant_name: 'service'
+      step_config: |
+        include ::tripleo::profile::base::manila::share
diff --git a/puppet/services/pacemaker/manila-share.yaml b/puppet/services/pacemaker/manila-share.yaml
new file mode 100644 (file)
index 0000000..0f88e89
--- /dev/null
@@ -0,0 +1,27 @@
+heat_template_version: 2016-04-08
+
+description: >
+  The manila-share service with Pacemaker configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+
+resources:
+
+  ManilaShareBase:
+    type: ../manila-share.yaml
+
+outputs:
+  role_data:
+    description: Role data for the manila-share pacemaker role.
+    value:
+      service_name: manila_share
+      config_settings:
+        map_merge:
+          - get_attr: [ManilaShareBase, role_data, config_settings]
+      step_config: |
+        include ::tripleo::profile::pacemaker::manila
index 5112905..7ce23a2 100644 (file)
@@ -23,6 +23,7 @@ resources:
                 glance_registry_vip: {get_input: glance_registry_vip}
                 sahara_api_vip: {get_input: sahara_api_vip}
                 swift_proxy_vip: {get_input: swift_proxy_vip}
+                manila_api_vip: {get_input: manila_api_vip}
                 nova_api_vip: {get_input: nova_api_vip}
                 nova_metadata_vip: {get_input: nova_metadata_vip}
                 ceilometer_api_vip: {get_input: ceilometer_api_vip}