Bring back (abandoned) support for Cinder/NFS

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
This commit is contained in:
Giulio Fidente 2014-11-21 06:11:26 -05:00
parent f0ba1a6324
commit 6674c39d80
4 changed files with 39 additions and 101 deletions

View File

@ -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 $@

View File

@ -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}

View File

@ -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

36
nfs-source.yaml Normal file
View File

@ -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