diff --git a/Plone/package/Classes/PloneServer.yaml b/Plone/package/Classes/PloneServer.yaml new file mode 100755 index 00000000..31d7b8dc --- /dev/null +++ b/Plone/package/Classes/PloneServer.yaml @@ -0,0 +1,68 @@ +# Plone uses GPL version 2 as its license. As of summer 2009, there are +# no active plans to upgrade to GPL version 3. +# You may obtain a copy of the License at +# +# http://www.gnu.org +# + +Namespaces: + =: org.openstack.apps.plone + std: io.murano + res: io.murano.resources + sys: io.murano.system + +Name: PloneServer + +Extends: std:Application + +Properties: + instance: + Contract: $.class(res:Instance).notNull() + pathname: + Contract: $.string() + password: + Contract: $.string() + port: + Contract: $.string() + +Methods: + .init: + Body: + - $._environment: $.find(std:Environment).require() + + deploy: + Body: + - If: not $.getAttr(deployed, false) + Then: + - $._environment.reporter.report($this, 'Creating VM for Plone Server.') + - $securityGroupIngress: + - ToPort: 80 + FromPort: 80 + IpProtocol: tcp + External: true + - ToPort: 443 + FromPort: 443 + IpProtocol: tcp + External: true + - ToPort: $.port + FromPort: $.port + IpProtocol: tcp + External: true + - $._environment.securityGroupManager.addGroupIngress($securityGroupIngress) + - $.instance.deploy() + - $resources: new(sys:Resources) + - $template: $resources.yaml('DeployPloneServer.template').bind(dict( + pathname => $.pathname, + password => $.password, + port => $.port + )) + - $._environment.reporter.report($this, 'Instance is created. Deploying Plone') + - $.instance.agent.call($template, $resources) + - $._environment.reporter.report($this, 'Plone Server is installed.') + - If: $.instance.assignFloatingIp + Then: + - $host: $.instance.floatingIpAddress + Else: + - $host: $.instance.ipAddresses.first() + - $._environment.reporter.report($this, format('Plone Server is available at http://{0}:{1}', $host, $.port)) + - $.setAttr(deployed, true) diff --git a/Plone/package/Resources/DeployPloneServer.template b/Plone/package/Resources/DeployPloneServer.template new file mode 100755 index 00000000..7f0a9964 --- /dev/null +++ b/Plone/package/Resources/DeployPloneServer.template @@ -0,0 +1,28 @@ +# Plone uses GPL version 2 as its license. As of summer 2009, there are +# no active plans to upgrade to GPL version 3. +# You may obtain a copy of the License at +# +# http://www.gnu.org +# + +FormatVersion: 2.0.0 +Version: 1.0.0 +Name: Deploy Plone + +Parameters: + pathname: $pathname + password: $password + port: $port + +Body: | + return ploneDeploy('{0} {1} {2}'.format(args.pathname, args.password, args.port)).stdout + +Scripts: + ploneDeploy: + Type: Application + Version: 1.0.0 + EntryPoint: runPloneDeploy.sh + Files: [] + Options: + captureStdout: true + captureStderr: true diff --git a/Plone/package/Resources/scripts/runPloneDeploy.sh b/Plone/package/Resources/scripts/runPloneDeploy.sh new file mode 100755 index 00000000..421e1e98 --- /dev/null +++ b/Plone/package/Resources/scripts/runPloneDeploy.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# Plone uses GPL version 2 as its license. As of summer 2009, there are +# no active plans to upgrade to GPL version 3. +# You may obtain a copy of the License at +# +# http://www.gnu.org +# + +PL_PATH="$1" +PL_PASS="$2" +PL_PORT="$3" + +# Write log. Redirect stdout & stderr into log file: +exec &> /var/log/runPloneDeploy.log + +# echo "Installing all packages." +sudo apt-get update + +# Install the operating system software and libraries needed to run Plone: +sudo apt-get -y install python-setuptools python-dev build-essential libssl-dev libxml2-dev libxslt1-dev libbz2-dev libjpeg62-dev + +# Install optional system packages for the handling of PDF and Office files. Can be omitted: +sudo apt-get -y install libreadline-dev wv poppler-utils + +# Download the latest Plone unified installer: +wget --no-check-certificate https://launchpad.net/plone/5.0/5.0.4/+download/Plone-5.0.4-UnifiedInstaller.tgz + +# Unzip the latest Plone unified installer: +tar -xvf Plone-5.0.4-UnifiedInstaller.tgz +cd Plone-5.0.4-UnifiedInstaller + +# Set the port that Plone will listen to on available network interfaces. Editing "http-address" param in buildout.cfg file: +sed -i "s/^http-address = [0-9]*$/http-address = ${PL_PORT}/" buildout_templates/buildout.cfg + +# Run the Plone installer in standalone mode +./install.sh --password="${PL_PASS}" --target="${PL_PATH}" standalone + +# Start Plone +cd "${PL_PATH}/zinstance" +bin/plonectl start diff --git a/Plone/package/UI/ui.yaml b/Plone/package/UI/ui.yaml new file mode 100644 index 00000000..2afd0152 --- /dev/null +++ b/Plone/package/UI/ui.yaml @@ -0,0 +1,130 @@ +# Plone uses GPL version 2 as its license. As of summer 2009, there are +# no active plans to upgrade to GPL version 3. +# You may obtain a copy of the License at +# +# http://www.gnu.org +# + +Version: 2.3 + +Application: + ?: + type: org.openstack.apps.plone.PloneServer + pathname: $.appConfiguration.pathname + password: $.appConfiguration.password + port: $.appConfiguration.port + + instance: + ?: + type: io.murano.resources.LinuxMuranoInstance + name: generateHostname($.instanceConfiguration.unitNamingPattern, 1) + flavor: $.instanceConfiguration.flavor + image: $.instanceConfiguration.osImage + keyname: $.instanceConfiguration.keyPair + availabilityZone: $.instanceConfiguration.availabilityZone + assignFloatingIp: $.appConfiguration.assignFloatingIP +Forms: + - appConfiguration: + fields: + - name: license + type: string + description: GPL License, Version 2 + hidden: true + required: false + - name: pathname + type: string + label: Installation pathname + required: false + initial: '/opt/plone/' + description: >- + Use to specify the top-level path for installation. + - name: password + type: string + label: Admin password + required: false + initial: 'admin' + description: >- + Enter administrative password for Plone. + - name: port + type: string + label: Port + required: false + initial: '8080' + description: >- + Specify the port that Plone will listen to + on available network interfaces. + - name: assignFloatingIP + type: boolean + label: Assign Floating IP + description: >- + Select to true to assign floating IP automatically. + initial: false + required: false + - name: dcInstances + type: integer + hidden: true + initial: 1 + - instanceConfiguration: + fields: + - name: title + type: string + required: false + hidden: true + description: Specify some instance parameters on which the application would be created + - name: flavor + type: flavor + label: Instance flavor + description: >- + Select registered in Openstack flavor. Consider that + application performance depends on this parameter + requirements: + min_vcpus: 1 + min_memory_mb: 256 + required: false + - name: minrequirements + type: string + label: Minumum requirements + description: | + - Minimum 256 MB RAM and 512 MB of swap space per Plone site + - Minimum 512 MB hard disk space + hidden: true + required: false + - name: recrequirements + type: string + label: Recommended + description: | + - 2 GB or more RAM per Plone site + - 40 GB or more hard disk space + hidden: true + required: false + - name: osImage + type: image + imageType: linux + label: Instance image + description: >- + Select a valid image for the application. The image + should already be prepared and registered in Glance + - name: keyPair + type: keypair + label: Key Pair + description: >- + Select the Key Pair to control access to instances. You can login to + instances using this KeyPair after the deployment of application. + required: false + - name: availabilityZone + type: azone + label: Availability zone + description: Select availability zone where the application would be installed. + required: false + - name: unitNamingPattern + type: string + label: Instance Naming Pattern + required: false + maxLength: 64 + regexpValidator: '^[a-zA-z][-_\w]*$' + errorMessages: + invalid: Just letters, numbers, underscores and hyphens are allowed. + helpText: Just letters, numbers, underscores and hyphens are allowed. + description: >- + Specify a string, that will be used in instance hostname. + Just A-Z, a-z, 0-9, dash and underline are allowed. diff --git a/Plone/package/logo.png b/Plone/package/logo.png new file mode 100644 index 00000000..6e3fa3f7 Binary files /dev/null and b/Plone/package/logo.png differ diff --git a/Plone/package/manifest.yaml b/Plone/package/manifest.yaml new file mode 100644 index 00000000..e2d17354 --- /dev/null +++ b/Plone/package/manifest.yaml @@ -0,0 +1,22 @@ +# Plone uses GPL version 2 as its license. As of summer 2009, there are +# no active plans to upgrade to GPL version 3. +# You may obtain a copy of the License at +# +# http://www.gnu.org +# + +Format: 1.3 +Type: Application +FullName: org.openstack.apps.plone.PloneServer +Name: Plone CMS +Description: | + The Ultimate Open Source Enterprise CMS. + The Plone CMS is one of the most secure + website systems available. This installer + lets you deploy Plone in standalone mode. + Requires Ubuntu 14.04 image with + preinstalled murano-agent. +Author: 'Evgeniy Mashkin' +Tags: [CMS, WCM] +Classes: + org.openstack.apps.plone.PloneServer: PloneServer.yaml