This section describes how to install and configure the Application Catalog service for Ubuntu 16.04 (LTS) from source code.
Before you install and configure the Application Catalog service, you must create a database, service credentials, and API endpoints.
To create the database, complete these steps:
Murano can use various database types on the back end. For development purposes, SQLite is enough in most cases. For production installations, you should use MySQL or PostgreSQL databases.
Warning
Although murano could use a PostgreSQL database on the back end, it wasn’t thoroughly tested and should be used with caution.
Use the database access client to connect to the database
server as the root
user:
$ mysql -u root -p
Create the murano
database:
CREATE DATABASE murano;
Grant proper access to the murano
database:
GRANT ALL PRIVILEGES ON murano.* TO 'murano'@'localhost' IDENTIFIED BY 'MURANO_DBPASS';
Replace MURANO_DBPASS
with a suitable password.
Exit the database access client.
exit;
Source the admin
credentials to gain access to
admin-only CLI commands:
$ . admin-openrc
To create the service credentials, complete these steps:
Create the murano
user:
$ openstack user create --domain default --password-prompt murano
Add the admin
role to the murano
user:
$ openstack role add --project service --user murano admin
Create the murano service entities:
$ openstack service create --name murano --description "Application Catalog" application-catalog
Create the Application Catalog service API endpoints:
$ openstack endpoint create --region RegionOne \
application-catalog public http://<murano-ip>:8082
$ openstack endpoint create --region RegionOne \
application-catalog internal http://<murano-ip>:8082
$ openstack endpoint create --region RegionOne \
application-catalog admin http://<murano-ip>:8082
Note
URLs (publicurl, internalurl and adminurl) may be different depending on your environment.
Create a folder which will hold all Murano components.
mkdir ~/murano
Clone the murano git repository to the management server.
cd ~/murano
git clone https://git.openstack.org/openstack/murano
Set up the murano config file
Murano has a common config file for API and Engine services.
First, generate a sample configuration file, using tox
cd ~/murano/murano
tox -e genconfig
And make a copy of it for further modifications
cd ~/murano/murano/etc/murano
ln -s murano.conf.sample murano.conf
Edit murano.conf
with your favorite editor. Below is an example
which contains basic settings you likely need to configure.
Note
The example below uses SQLite database. Edit [database] section if you want to use any other database type.
[DEFAULT]
debug = true
verbose = true
rabbit_host = %RABBITMQ_SERVER_IP%
rabbit_userid = %RABBITMQ_USER%
rabbit_password = %RABBITMQ_PASSWORD%
rabbit_virtual_host = %RABBITMQ_SERVER_VIRTUAL_HOST%
driver = messagingv2
...
[database]
backend = sqlalchemy
connection = sqlite:///murano.sqlite
...
[keystone]
auth_url = 'http://%OPENSTACK_HOST_IP%:5000/v2.0'
...
[keystone_authtoken]
www_authenticate_uri = 'http://%OPENSTACK_HOST_IP%:5000/v2.0'
auth_host = '%OPENSTACK_HOST_IP%'
auth_port = 5000
auth_protocol = http
admin_tenant_name = %OPENSTACK_ADMIN_TENANT%
admin_user = %OPENSTACK_ADMIN_USER%
admin_password = %OPENSTACK_ADMIN_PASSWORD%
...
[murano]
url = http://%YOUR_HOST_IP%:8082
[rabbitmq]
host = %RABBITMQ_SERVER_IP%
login = %RABBITMQ_USER%
password = %RABBITMQ_PASSWORD%
virtual_host = %RABBITMQ_SERVER_VIRTUAL_HOST%
[networking]
default_dns = 8.8.8.8 # In case openstack neutron has no default
# DNS configured
Create a virtual environment and install Murano prerequisites. We will use tox for that. The virtual environment will be created under .tox directory.
cd ~/murano/murano
tox
Create database tables for Murano.
cd ~/murano/murano
tox -e venv -- murano-db-manage \
--config-file ./etc/murano/murano.conf upgrade
Open a new console and launch Murano API. A separate terminal is required because the console will be locked by a running process.
cd ~/murano/murano
tox -e venv -- murano-api --config-file ./etc/murano/murano.conf
Import Core Murano Library.
cd ~/murano/murano
pushd ./meta/io.murano
zip -r ../../io.murano.zip *
popd
tox -e venv -- murano --murano-url http://localhost:8082 \
package-import --is-public io.murano.zip
Open a new console and launch Murano Engine. A separate terminal is required because the console will be locked by a running process.
cd ~/murano/murano
tox -e venv -- murano-engine --config-file ./etc/murano/murano.conf
Murano API & Engine services provide the core of Murano. However, your need a control plane to use it. This section describes how to install and run Murano Dashboard.
Clone the murano dashboard repository.
$ cd ~/murano
$ git clone https://git.openstack.org/openstack/murano-dashboard
Clone the horizon
repository
$ git clone https://git.openstack.org/openstack/horizon
Create a virtual environment and install muranodashboard
as an editable
module:
$ cd horizon
$ tox -e venv -- pip install -e ../murano-dashboard
Prepare local settings.
$ cp openstack_dashboard/local/local_settings.py.example \
openstack_dashboard/local/local_settings.py
For more information, check out the official horizon documentation.
Enable and configure Murano dashboard in the OpenStack Dashboard:
For Newton (and later) OpenStack installations, copy the plugin file, local settings files, and policy files.
$ cp ../murano-dashboard/muranodashboard/local/enabled/*.py \
openstack_dashboard/local/enabled/
$ cp ../murano-dashboard/muranodashboard/local/local_settings.d/*.py \
openstack_dashboard/local/local_settings.d/
$ cp ../murano-dashboard/muranodashboard/conf/* openstack_dashboard/conf/
For the OpenStack installations prior to the Newton release, run:
$ cp ../murano-dashboard/muranodashboard/local/_50_murano.py \
openstack_dashboard/local/enabled/
Customize local settings of your horizon installation, by editing the
openstack_dashboard/local/local_settings.py
file:
...
ALLOWED_HOSTS = '*'
# Provide OpenStack Lab credentials
OPENSTACK_HOST = '%OPENSTACK_HOST_IP%'
...
DEBUG_PROPAGATE_EXCEPTIONS = DEBUG
Change the default session back end-from using browser cookies to using a database instead to avoid issues with forms during the creation of applications:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'murano-dashboard.sqlite',
}
}
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
(Optional) If you do not plan to get the murano service from the keystone application catalog, specify where the murano-api service is running:
MURANO_API_URL = 'http://%MURANO_IP%:8082'
(Optional) If you have set up the database as a session back-end (this is done by default with the murano local_settings file starting with Newton), perform database migration:
$ tox -e venv -- python manage.py migrate --noinput
Run the Django server at 127.0.0.1:8000 or provide different IP and PORT parameters:
$ tox -e venv -- python manage.py runserver <IP:PORT>
Note
The development server restarts automatically following every code change.
Result: The murano dashboard is available at http://IP:PORT.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.