Adds block-storage-nfs template
authorRyan Brady <rbrady@redhat.com>
Thu, 20 Feb 2014 12:40:31 +0000 (07:40 -0500)
committerRyan Brady <rbrady@redhat.com>
Fri, 7 Mar 2014 19:58:02 +0000 (14:58 -0500)
To support the changes to the cinder element to allow the nfs
backend to be utilized, this template has been added to show
the usage of the nfs_shares key in the cinder metadata.
The value is a list of strings containing share addresses.

This change is added to facilitate an example to test
the cinder element change: https://review.openstack.org/#/c/74563/

You may setup the nfs server manually or use the nfs-server
element at https://review.openstack.org/#/c/74712/.

Change-Id: I5b6cb118b34421ea07a81ed1fe68db24b1d4f19d

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

index 90c6090..06513ac 100644 (file)
@@ -1,5 +1,7 @@
 # Built via Makefile
 overcloud.yaml
+overcloud-with-block-storage.yaml
+overcloud-with-block-storage-nfs.yaml
 undercloud-bm.yaml
 undercloud-vm.yaml
 undercloud-vm-tuskar.yaml
index 75b8a4a..93ff852 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,10 @@
-generated_templates =                \
-        overcloud.yaml               \
-        undercloud-vm.yaml           \
-        undercloud-bm.yaml           \
-        undercloud-vm-tuskar.yaml    \
+generated_templates =                         \
+        overcloud.yaml                        \
+        overcloud-with-block-storage.yaml     \
+        overcloud-with-block-storage-nfs.yaml \
+        undercloud-vm.yaml                    \
+        undercloud-bm.yaml                    \
+        undercloud-vm-tuskar.yaml             \
         undercloud-vm-ironic.yaml
 
 # Files included in overcloud-source.yaml via FileInclude
@@ -17,7 +19,13 @@ overcloud.yaml: overcloud-source.yaml swift-source.yaml ssl-source.yaml $(overcl
 overcloud-with-block-storage.yaml: overcloud-source.yaml nova-compute-instance.yaml swift-source.yaml block-storage.yaml
        # $^ 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 overcloud-source.yaml swift-source.yaml block-storage.yaml > $@.tmp
+       python ./tripleo_heat_merge/merge.py --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale BlockStorage=$${CINDERSCALE:-'1'} overcloud-source.yaml swift-source.yaml block-storage.yaml > $@.tmp
+       mv $@.tmp $@
+
+overcloud-with-block-storage-nfs.yaml: overcloud-source.yaml nova-compute-instance.yaml swift-source.yaml nfs-server-source.yaml block-storage-nfs.yaml
+       # $^ 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 --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale BlockStorage=$${CINDERSCALE:-'1'} overcloud-source.yaml swift-source.yaml nfs-server-source.yaml block-storage-nfs.yaml > $@.tmp
        mv $@.tmp $@
 
 undercloud-vm.yaml: undercloud-source.yaml undercloud-vm-source.yaml
diff --git a/block-storage-nfs.yaml b/block-storage-nfs.yaml
new file mode 100644 (file)
index 0000000..04f45ef
--- /dev/null
@@ -0,0 +1,59 @@
+HeatTemplateFormatVersion: '2012-12-12'
+Description: 'Common Block Storage Configuration'
+Parameters:
+  BlockStorageImage:
+    Type: String
+    Default: overcloud-cinder-volume
+  OvercloudBlockStorageFlavor:
+    Default: baremetal
+    Description: Flavor for block storage nodes to request when deploying.
+    Type: String
+Resources:
+  BlockStorageAccessPolicy:
+    Type: OS::Heat::AccessPolicy
+    Properties:
+      AllowedResources:
+      - BlockStorage0
+  BlockStorageUser:
+    Type: AWS::IAM::User
+    Properties:
+      Policies: [ { Ref: BlockStorageAccessPolicy } ]
+  BlockStorageKey:
+    Type: AWS::IAM::AccessKey
+    Properties:
+      UserName:
+        Ref: BlockStorageUser
+  BlockStorage0:
+    Type: OS::Nova::Server
+    Properties:
+      image:
+        {Ref: BlockStorageImage}
+      flavor: {Ref: OvercloudBlockStorageFlavor}
+      key_name: {Ref: KeyName}
+    Metadata:
+      os-collect-config:
+        cfn:
+          access_key_id:
+            Ref: BlockStorageKey
+          secret_access_key:
+            Fn::GetAtt: [ BlockStorageKey, SecretAccessKey ]
+          stack_name: {Ref: 'AWS::StackName'}
+      OpenStack::ImageBuilder::Elements: [ cinder ]
+      keystone:
+        host: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notCompute0, networks]} ]} ] }
+      cinder:
+        db: {"Fn::Join": ['', ['mysql://cinder:unset@', {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notCompute0, networks]} ]} ] } , '/cinder']]}
+        volume_size_mb: '5000'
+        service-password:
+          Ref: CinderPassword
+        volume: 'true'
+        include_nfs_backend: 'true'
+        nfs_shares:
+          - {"Fn::Join": ['', [{"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notCompute0, networks]} ]} ] } , ':/mnt/state/var/lib/nfs_share']]}
+      admin-password: {Ref: AdminPassword}
+      rabbit:
+        host: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notCompute0, networks]} ]} ] }
+        username: {Ref: RabbitUserName}
+        password: {Ref: RabbitPassword}
+      interfaces:
+        control: {Ref: NeutronPublicInterface}
diff --git a/nfs-server-source.yaml b/nfs-server-source.yaml
new file mode 100644 (file)
index 0000000..22214ae
--- /dev/null
@@ -0,0 +1,28 @@
+Description: 'NFS server share configuration for testing'
+Resources:
+  notCompute0Config:
+    Type: AWS::AutoScaling::LaunchConfiguration
+    Metadata:
+      nfs_server:
+        shares:
+          Merge::Map:
+            NovaCompute0:
+              Fn::Join:
+              - ' '
+              - - Fn::Select:
+                  - 0
+                  - Fn::Select:
+                    - ctlplane
+                    - Fn::GetAtt:
+                      - NovaCompute0
+                      - networks
+            BlockStorage0:
+              Fn::Join:
+              - ' '
+              - - Fn::Select:
+                  - 0
+                  - Fn::Select:
+                    - ctlplane
+                    - Fn::GetAtt:
+                      - BlockStorage0
+                      - networks
\ No newline at end of file