Bring back (abandoned) support for Cinder/NFS
authorGiulio Fidente <gfidente@redhat.com>
Fri, 21 Nov 2014 11:11:26 +0000 (06:11 -0500)
committerGiulio Fidente <gfidente@redhat.com>
Wed, 10 Dec 2014 23:19:27 +0000 (00:19 +0100)
We used to have a YAML file providing a test setup for Cinder/NFS
which could be used via a special Makefile target; this was not
used in CI anymore though and overtime things broke.

This change aims at bringing that functionality back and also
make it easier to use it via a number of changes:

* delete unmaintained nfs-server-source (not working due to
  changes in the elements)
* delete (unneeded) block-storage-nfs
* remove the hidden block-storage-with-nfs target from Makefile
* add a some nfs-source which supports newer elements and
  newer template language as well
* improve existing comments in Makefile documeting how to use it

Change-Id: I96144ee2f4ca33bd7467f09ad960ea268c1250bf

Makefile
block-storage-nfs.yaml [deleted file]
nfs-server-source.yaml [deleted file]
nfs-source.yaml [new file with mode: 0644]

index 349a077..2db9d45 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -15,18 +15,13 @@ validate-all: $(VALIDATE)
 $(VALIDATE):
        heat template-validate -f $(subst validate-,,$@)
 
-# set CONTROLEXTRA to overcloud-vlan-port.yaml to activate the VLAN
-# auto-assignment from Neutron.
+# You can define in CONTROLEXTRA one or more additional YAML files to further extend the template, some additions could be:
+# - overcloud-vlan-port.yaml to activate the VLAN auto-assignment from Neutron
+# - nfs-source.yaml to configure Cinder with NFS
 overcloud.yaml: overcloud-source.yaml block-storage.yaml swift-deploy.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml nova-compute-config.yaml $(overcloud_source_deps)
        python ./tripleo_heat_merge/merge.py --hot --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale controller=$${CONTROLSCALE:-'1'} --scale SwiftStorage=$${SWIFTSTORAGESCALE:-'0'} --scale BlockStorage=$${BLOCKSTORAGESCALE:-'0'} overcloud-source.yaml block-storage.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml swift-deploy.yaml nova-compute-config.yaml ${CONTROLEXTRA} > $@.tmp
        mv $@.tmp $@
 
-overcloud-with-block-storage-nfs.yaml: overcloud-source.yaml block-storage-nfs.yaml nfs-server-source.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml $(overcloud_source_deps)
-       # $^ won't work here because we want to list nova-compute-instance.yaml as
-       # a prerequisite but don't want to pass it into merge.py
-       python ./tripleo_heat_merge/merge.py --hot --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale controller=$${CONTROLSCALE:-'1'} --scale SwiftStorage=$${SWIFTSTORAGESCALE:-'0'} --scale BlockStorage=$${BLOCKSTORAGESCALE:-'1'} overcloud-source.yaml block-storage-nfs.yaml nfs-server-source.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml > $@.tmp
-       mv $@.tmp $@
-
 undercloud-vm.yaml: undercloud-source.yaml undercloud-vm-nova-config.yaml undercloud-vm-nova-deploy.yaml
        python ./tripleo_heat_merge/merge.py --hot $^ > $@.tmp
        mv $@.tmp $@
diff --git a/block-storage-nfs.yaml b/block-storage-nfs.yaml
deleted file mode 100644 (file)
index b87ef4e..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-heat_template_version: 2013-05-23
-description: 'Common Block Storage Configuration'
-parameters:
-  BlockStorageImage:
-    type: string
-    default: overcloud-cinder-volume
-  OvercloudBlockStorageFlavor:
-    description: Flavor for block storage nodes to request when deploying.
-    type: string
-    constraints:
-      - custom_constraint: nova.flavor
-resources:
-  BlockStorageAccessPolicy:
-    type: OS::Heat::AccessPolicy
-    properties:
-      AllowedResources:
-      - BlockStorage0
-  BlockStorageUser:
-    type: AWS::IAM::User
-    properties:
-      Policies: [ { get_resource: BlockStorageAccessPolicy } ]
-  BlockStorageKey:
-    type: AWS::IAM::AccessKey
-    properties:
-      UserName:
-        get_resource: BlockStorageUser
-  BlockStorage0CompletionCondition:
-    type: AWS::CloudFormation::WaitCondition
-    depends_on: controller0Config
-    properties:
-      Handle: {get_resource: BlockStorage0CompletionHandle}
-      Count: '1'
-      Timeout: '1800'
-  BlockStorage0CompletionHandle:
-    type: AWS::CloudFormation::WaitConditionHandle
-  BlockStorage0:
-    type: OS::Nova::Server
-    properties:
-      image:
-        {get_param: BlockStorageImage}
-      flavor: {get_param: OvercloudBlockStorageFlavor}
-      key_name: {get_param: KeyName}
-    metadata:
-      completion-handle:
-        get_resource: BlockStorage0CompletionHandle
-      os-collect-config:
-        cfn:
-          access_key_id:
-            get_resource: BlockStorageKey
-          secret_access_key:
-            get_attr: [ BlockStorageKey, SecretAccessKey ]
-          stack_name: {get_param: 'AWS::StackName'}
-      keystone:
-        host: {get_attr: [controller0, networks, ctlplane, 0]}
-      cinder:
-        db: {"Fn::Join": ['', ['mysql://cinder:unset@', {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} , '/cinder']]}
-        volume_size_mb: '5000'
-        service-password:
-          get_param: CinderPassword
-        include_nfs_backend: 'true'
-        nfs_shares:
-          - {"Fn::Join": ['', [{get_attr: [controller0, networks, ctlplane, 0]} , ':/mnt/state/var/lib/nfs_share']]}
-      admin-password: {get_param: AdminPassword}
-      rabbit:
-        host: {get_attr: [controller0, networks, ctlplane, 0]}
-        username: {get_param: RabbitUserName}
-        password: {get_param: RabbitPassword}
-      interfaces:
-        control: {get_param: NeutronPublicInterface}
diff --git a/nfs-server-source.yaml b/nfs-server-source.yaml
deleted file mode 100644 (file)
index 8e32e96..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-description: 'NFS server share configuration for testing'
-resources:
-  controller0Config:
-    type: AWS::AutoScaling::LaunchConfiguration
-    metadata:
-      nfs_server:
-        shares:
-          Merge::Map:
-            NovaCompute0:
-              Fn::Join:
-              - ' '
-              - - get_attr:
-                  - NovaCompute0
-                  - networks
-                  - ctlplane
-                  - 0
-            BlockStorage0:
-              Fn::Join:
-              - ' '
-              - - get_attr:
-                  - BlockStorage0
-                  - networks
-                  - ctlplane
-                  - 0
diff --git a/nfs-source.yaml b/nfs-source.yaml
new file mode 100644 (file)
index 0000000..5d865ea
--- /dev/null
@@ -0,0 +1,36 @@
+resources:
+  controllerNfsServerConfig:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        nfs_server:
+          shares:
+            - name: cinder
+              clients:
+                - machine: 192.0.2.0/24
+                  options: rw,async,all_squash,anonuid=0,anongid=0
+  controllerCinderNfsConfig:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        cinder:
+          include_nfs_backend: true
+          nfs_shares:
+            Fn::Join:
+              - ':'
+              - - {get_attr: [controller0, networks, ctlplane, 0]}
+                - /mnt/state/var/lib/nfs/cinder
+  controllerNfsServerDeployment:
+    type: OS::Heat::StructuredDeployment
+    properties:
+      config: {get_resource: controllerNfsServerConfig}
+      server: {get_resource: controller0}
+      signal_transport: NO_SIGNAL
+  controller0CinderNfsDeployment:
+    type: OS::Heat::StructuredDeployment
+    properties:
+      config: {get_resource: controllerCinderNfsConfig}
+      server: {get_resource: controller0}
+      signal_transport: NO_SIGNAL