Start a new topic

Murano Application Catalogue Community Support

The purpose of this community discussion forum is to coordinate and share development effort for the creation of Murano applications. 

1 person likes this idea
Hi all, here is an update on my Murano package work...

I am currently working on 3 packages. They should work on Ubuntu 16 and 14, and Centos 7.
  • DuplyBackups: sets up a daily incremental backup and weekly full backup to a swift container. The aim is to have each package needing backups provide their backup config files for this package to use
  • LAMP: Deploys Linux, Apache, MySQL, PHP and adds database and www files to Duply backups
  • LimeSurvey: Downloads and deploys LimeSurvey on LAMP

Current versions of the packages are in swift at

Append <package name>.zip to the link to download in web browser.

Things still to do include

  • Getting multi-instance deployments working using Murano PL packages. Have tried the openstack forum the murano IRC but no progress so far. Will try bumping again this week...
  • Pulling out common code from the packages into a library package
  • Documenting packages, ideally within the packages, eg. in the manifest file
  • Enable backup recovery to a new instance, eg. provide option to deploy new LimeSurvey instance, and auto-load the DB and web site from prior backup
  • Usability improvements, eg. can LAMP DB config UI can be disabled if another package is configuring the DB?

If you are interested in giving it a try in the test cloud, DuplyBackups needs your openstack project/tenant name, username and password for the SwiftContainer. I am using the coreservices AZ (not qh2). If trying LimeSurvey, skip the DB config at the LAMP stage. The LimeSurvey admin login (/limesurvey/admin) is the same as the database password. The dashboard deployment log with give you the access IP/URL.

Cheers, Mark

Here are some Murano PL/YAQL learnings that may be of interest...

You can use the YAQL standard library functions in Murano PL for random number generation, regex, etc. You can also try out these functions using the YAQL CLI tool on Linux without needing to go through the Murano environment/application deployment process.

Once you have installed the python-muranoclient package on your Linux server, just start the YAQL CLI tool and try some of the standard library functions as follows:

$ yaql
Yet Another Query Language - command-line query tool
Version 1.1.0
Copyright (c) 2013-2015 Mirantis, Inc
No data loaded into context
Type '@load data-file.json' to load data


Random numbers

yaql> random(0,23)


Insert an item into an array

yaql> [1,2,3].insert(1,4)


Get the current UTC time

yaql> format('{0}',now(utctz()))
"2016-09-07 07:23:10.012985+00:00"


Clean up white space and comment out name/value pair assignments using Regex

yaql> regex('[ \t]*([^= \t]*)=[ \t]*([^ \t\n]*)[ \t]*[\n]*').searchAll("aa='bb'\ncc='dd'",format('# {0} = {1}',$2.value,$3.value))
  "# aa = 'bb'",
  "# cc = 'dd'"

I haven't found much documentation on this other than

The LAMP and LimeSurvey packages have been updated. The main change is pulling out common code across the packages into a shared library package.

The high-level process to create a LAMP environment from the LAMP package is as follows...

1. Dashboard -> Applications -> Manage -> Package Definitions -> Import Package
1.1 Import Package
  1. Package Source -> File
  2. Browse ->
  3. Next
1.2 Import Package 2
  1. Accept defaults
  2. Next
1.3 Import Package 3
  1. Application Category -> eg. Web or Application Server
  2. Create
2. Repeat 1 for and
3. Dashboard -> Applications -> Application Catalog -> Environments -> Create Environment
3.1.   Name -> eg. lamp1
3.2.   Create
3.3.   Application Components
  1. Drag and drop LAMP application to “Drop Components here”
3.4.   Configure Application
  1. Backups -> Add Application
  2. Provide strong Passphase eg. generate using “openssl rand -base64 20”
  3. Unique container name for app backups
  4. Swift username/password/tenant (same as API access - see Project -> Compute -> Access & Security -> API Access -> OpenStack RC File)
  5. Next
3.5. Configure Application 2
  1. Accept defaults
  2. Create
3.6. Configure Application 3
  1. Next
3.7. Configure Application 4
  1. Passwords need at least one upper case letter, digit, and special character
  2. If you leave any field blank, database will not be set up. This allows another package (eg. LimeSurvey to do database setup it needs)
  3. Next
3.8. Configure Application 5
  1. Select Instance Image, Key Pair, Availability zone
  2. Next
3.9. Configure Application 6
  1. Accept defaults
  2. Create
4. Deployment This Environment
5. Component List to display status, Latest Deployment Log for debugging problems and web server address

The process is similar for LimeSurvey. Just skip the database name, user and password details on the LAMP form and input in LimeSurvey form instead

There is also a Python script ( and associated YAML config file (lamp.conf) that automates this process. It is a big timer saver if you are doing a lot of package builds/deployments when developing/debugging a package.

See above for the Swift container link.

Nice work Mark!

We don't have a policy around making packages public yet, but it sounds like it would be worthwhile making your work public. We should have a chat about this next week.

Thanks Andy, sounds great. Will catch you next week... Cheers


A Drupal package is now available in the Swift container (link above).

It also involved a few updates to the LAMP and QRIScloudLib packages.

As with the LimeSurvey package, the Drupal package uses the LAMP package as its base. You should be able to use the LAMP/LimeSurvey process described above for the Drupal package too.
These packages are now shared on the Nectar cloud.

As such, please access via the beta dashboard rather that the Swift container link provided earlier.
Login to post a comment