Want to install and use Murano in a RDO OpenStack environment? Here are the steps to do it.
The first thing we need to do, is to know what is Murano:
Murano is an application catalog who gives the users the capacity to launch pre-configured s/instances/jobs/g with apps in an OpenStack infrastructure.
As the final user just select an application from a catalog with a minimal configuration, and Murano will take the role to orchestrate the background jobs(create instances, configure apps, connect networks, etc) For more information about application catalog project refer to this site: https://wiki.openstack.org/wiki/Murano/ApplicationCatalog​
At this tutorial, i will use the following s/configurations/versions/g:
Centos 7.1
RDO Liberty release
Hosts installed with packstack/ML2 network
Let's start installing some pre requisites
sudo yum install -y gcc python-setuptools python-devel git postgresql-devel libffi-devel openssl-devel
Install pip
sudo easy_install pip
Install tox and upgrade six
sudo pip install toxsudo pip install --upgrade six
Create a database for murano
mysql -u root -pCREATE DATABASE murano;
Create murano user at MySQL
GRANT ALL PRIVILEGES ON murano.* TO 'murano'@'localhost' IDENTIFIED BY 'MURANODB_PASS';GRANT ALL PRIVILEGES ON murano.* TO 'murano'@'%' IDENTIFIED BY 'MURANODB_PASS';
Clone murano from liberty/stable branch
git clone -b stable/liberty git://git.openstack.org/openstack/murano
Install all requirements
cd ~/murano/sudo pip install -r requirements.txt
Install murano
sudo python setup.py install
Create sample configuration file
oslo-config-generator --config-file etc/oslo-config-generator/murano.conf
Create murano directory and copy the sample content on it
mkdir /etc/muranocp ~/murano/etc/murano/* /etc/murano/
Rename sample configuration to murano.conf
mv /etc/murano/murano.conf.sample /etc/murano/murano.conf
| Edit the configuration file like this, adjust the configuration as your environment needs. vi /etc/murano/murano.conf
[oslo_messaging_rabbit]​rabbit_host=RABBITMQ_IPrabbit_port=5672rabbit_hosts=RABBITMQ_IP:5672rabbit_use_ssl=Falserabbit_userid=guestrabbit_password=guestrabbit_virtual_host=/rabbit_ha_queues=Falserabbit_notification_exchange=openstackrabbit_notification_topic=notifications​[database]connection = mysql://murano:[email protected]_IP/murano​[keystone_authtoken]auth_uri=http://KEYSTONE_IP:5000/v2.0identity_uri=http://KEYSTONE_IP:35357admin_user=muranoadmin_password=MURANO_PASSadmin_tenant_name=services​[murano]url = http://MURANO_IP:8082​[rabbitmq]​host=RABBITMQ_IPlogin=guestpassword=guestvirtual_host=/
Create murano user
openstack user create --password MURANO_PASS murano
Add murano user to services tenant with admin privileges
openstack role add --project services --user murano admin
Create a service for application-catalog
openstack service create --name muranoapi --description "Murano Project" application-catalog
Associate an endpoint to application-catalog service
openstack endpoint create --region RegionOne --publicurl 'http://MURANO_IP:8082/' --adminurl 'http://MURANO_IP:8082/' --internalurl 'http://http://MURANO_IP:8082/' MURANO_SERVICE_ID
Sync the database
murano-db-manage --config-file /etc/murano/murano.conf upgrade
Open a new terminal and start murano-api service
murano-api --config-file /etc/murano/murano.conf
Import base murano package
murano-manage --config-file /etc/murano/murano.conf import-package murano/meta/io.murano
In a new terminal, start murano-engine service
murano-engine --config-file /etc/murano/murano.conf
Clone stable liberty module for horizon
git clone -b stable/liberty git://git.openstack.org/openstack/murano-dashboard
Install base requirements
cd ~/murano-dashboardpip install -r requirements.txt
Install murano-dashboard module
sudo python setup.py install
Enable murano-dashboard at horizon
cp muranodashboard/local/_50_murano.py /usr/share/openstack-dashboard/openstack_dashboard/enabled/
Restart apache to apply changes
systemctl restart httpd
Import ApacheHttpServer package
murano --murano-repo-url="http://storage.apps.openstack.org/" package-import io.murano.apps.apache.ApacheHttpServer
You can find more packages at: http://apps.openstack.org/#tab=murano-apps​
This will add a Debian image to glance image service, wait until the image is in active status
Create a file with the following content, modify the variables with your own needsvi object_model_patch.json
[{ "op": "add", "path": "/-", "value":{"instance": {"availabilityZone": "nova","name": "APP_NAME","image": "GLANCE_IMAGE_ID","keyname": "KEY_PAIR","flavor": "FLAVOR","assignFloatingIp": false,"?": {"type": "io.murano.resources.LinuxMuranoInstance","id": "===id1==="}},"name": "ApacheHttpServer","enablePHP": true,"?": {"type": "io.murano.apps.apache.ApacheHttpServer","id": "===id2==="}}}]
Create an environment
murano environment-create --join-subnet-id SUBNET_ID ENVIRONMENT_NAME​murano environment-create --join-subnet-id e2c5175a-d5bc-4eb7-91ba-67ac9120c64a test+----------------------------------+------+---------------------+---------------------+| ID | Name | Created | Updated |+----------------------------------+------+---------------------+---------------------+| 68a19d233d2d42459faf64d375d995e5 | test | 2015-12-11T13:09:57 | 2015-12-11T13:09:57 |+----------------------------------+------+---------------------+---------------------+
Create a session for temporal working on the environment
murano environment-session-create ENVIRONMENT_ID​murano environment-session-create 68a19d233d2d42459faf64d375d995e5Created new session:+----------+----------------------------------+| Property | Value |+----------+----------------------------------+| id | b0f5e39a9c4c419c9ee7fdb6c92c37a6 |+----------+----------------------------------+
Add the file with the apps configuration
murano environment-apps-edit --session-id SESSION_ID ENVIRONMENT_ID FILE_NAME​murano environment-apps-edit --session-id b0f5e39a9c4c419c9ee7fdb6c92c37a6 68a19d233d2d42459faf64d375d995e5 object_model_patch.json
Deploy the environment
murano environment-deploy ENVIRONMENT_ID --session-id SESSION_ID​murano environment-deploy 68a19d233d2d42459faf64d375d995e5 --session-id b0f5e39a9c4c419c9ee7fdb6c92c37a6+-----------+-------------------------------------------------------------+| Property | Value |+-----------+-------------------------------------------------------------+| created | 2015-12-11T13:09:57 || id | 68a19d233d2d42459faf64d375d995e5 || name | test || services | [ || | { || | "instance": { || | "availabilityZone": "nova", || | "name": "test", || | "assignFloatingIp": false, || | "keyname": "", || | "flavor": "twogb", || | "image": "9049eb0c-081e-4d56-9413-72fdc6f8d8bf", || | "?": { || | "type": "io.murano.resources.LinuxMuranoInstance", || | "id": "30f5a591a58a468fbf4d7ef4755e0512" || | } || | }, || | "name": "ApacheHttpServer", || | "enablePHP": true, || | "?": { || | "status": "deploying", || | "type": "io.murano.apps.apache.ApacheHttpServer", || | "id": "98b994565c634f7e97d5f365203ce222" || | } || | } || | ] || status | deploying || tenant_id | 3a5d50fac9a3462fa4d76b8b84677c3f || updated | 2015-12-11T13:09:57 || version | 0 |+-----------+-------------------------------------------------------------+
Now, you can check at nova the building status of the instances
nova list+--------------------------------------+-----------------------------------------+--------+------------+-------------+----------+| ID | Name | Status | Task State | Power State | Networks |+--------------------------------------+-----------------------------------------+--------+------------+-------------+----------+| a68cedfb-7b4c-47a6-96fb-6b64a85a8ca6 | murano-mmnpdii1ozz7r2-test-5np5cvfeoiyh | BUILD | scheduling | NOSTATE | |+--------------------------------------+-----------------------------------------+--------+------------+-------------+----------+
After a while, the instance is up and running
nova list+--------------------------------------+-----------------------------------------+--------+------------+-------------+------------------+| ID | Name | Status | Task State | Power State | Networks |+--------------------------------------+-----------------------------------------+--------+------------+-------------+------------------+| a68cedfb-7b4c-47a6-96fb-6b64a85a8ca6 | murano-mmnpdii1ozz7r2-test-5np5cvfeoiyh | ACTIVE | - | Running | private=10.0.0.8 |+--------------------------------------+-----------------------------------------+--------+------------+-------------+------------------+
Once the instance is active, murano will configure the application inside, wait until the status is ready.
murano environment-show f392de2004e24ff7b2a08f05df0599b8+-----------+---------------------------------------------------------------+| Property | Value |+-----------+---------------------------------------------------------------+| created | 2015-12-11T13:43:23 || id | 68a19d233d2d42459faf64d375d995e5 || name | test || services | [ || | { || | "instance": { || | "availabilityZone": "nova", || | "openstackId": "91615340-e1d3-428e-848f-38a762004d33", || | "name": "test", || | "securityGroupName": null, || | "image": "9049eb0c-081e-4d56-9413-72fdc6f8d8bf", || | "assignFloatingIp": false, || | "floatingIpAddress": null, || | "keyname": "", || | "?": { || | "classVersion": "0.0.0", || | "name": null, || | "package": "io.murano", || | "type": "io.murano.resources.LinuxMuranoInstance", || | "_actions": {}, || | "id": "30f5a591a58a468fbf4d7ef4755e0512" || | }, || | "ipAddresses": [ || | "10.0.0.8" || | ], || | "flavor": "twogb", || | "networks": { || | "useFlatNetwork": false, || | "primaryNetwork": null, || | "useEnvironmentNetwork": true, || | "customNetworks": [] || | }, || | "sharedIps": [] || | }, || | "name": "ApacheHttpServer", || | "?": { || | "classVersion": "0.0.0", || | "status": "ready", || | "name": null, || | "package": "io.murano.apps.apache.ApacheHttpServer", || | "type": "io.murano.apps.apache.ApacheHttpServer", || | "_actions": {}, || | "id": "98b994565c634f7e97d5f365203ce222" || | }, || | "enablePHP": true || | } || | ] || status | ready || tenant_id | 3a5d50fac9a3462fa4d76b8b84677c3f || updated | 2015-12-11T13:47:35 || version | 1 |+-----------+---------------------------------------------------------------+
That's all you need to have up and running a Murano application catalog, for now there is no rpm package to ease the installation, so you need to install from source like we done.
A thing you can do, is create systemd files to manage murano services in a easier way.
Regards, Eduardo Gonzalez