deb-murano/doc/source/install/manual.rst
Dmytro Dovbii 688e4bf11f Fix installation document
* Fixed numbering
* Removed unnecessary action

Change-Id: I6822bc4dc19e26c9a2abdd7b41848934616e116e
2015-04-01 13:58:05 +03:00

9.2 KiB

Installing and Running Manually

Prepare Environment

Install Prerequisites

First you need to install a number of packages with your OS package manager. The list of packages depends on the OS you use.

Ubuntu

$ sudo apt-get install python-pip python-dev \
> libmysqlclient-dev libpq-dev \
> libxml2-dev libxslt1-dev \
> libffi-dev

Fedora

Note

Fedora support wasn't thoroughly tested. We do not guarantee that Murano will work on Fedora.

$ sudo yum install gcc python-setuptools python-devel python-pip

CentOS

$ sudo yum install gcc python-setuptools python-devel
$ sudo easy_install pip

Install tox

$ sudo pip install tox

Install And Configure Database

Murano can use various database types on backend. For development purposes SQLite is enough in most cases. For production installations you should use MySQL or PostgreSQL databases.

Warning

Although Murano could use PostgreSQL database on backend, it wasn't thoroughly tested and should be used with caution.

To use MySQL database you should install it and create an empty database first:

$ apt-get install python-mysqldb mysql-server
$ mysql -u root -p
mysql> CREATE DATABASE murano;
mysql> GRANT ALL PRIVILEGES ON murano.* TO 'murano'@'localhost' \
    IDENTIFIED BY 'MURANO_DBPASS';
mysql> exit;

Install the API service and Engine

  1. Create a folder which will hold all Murano components.

    $ mkdir ~/murano
  2. Clone the Murano git repository to the management server.

    $ cd ~/murano
    $ git clone https://github.com/stackforge/murano
  3. Set up Murano config file

    Murano has common config file for API and Engine servicies.

    First, generate sample configuration file, using tox

    $ tox -e genconfig

    And make a copy of it for further modifications

  4. Edit murano.conf with your favorite editor. Below is an example which contains basic settings your are likely need to configure.

    Note

    The example below uses SQLite database. Edit [database] section if you want to use 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%
    notification_driver = messagingv2
    
    ...
    
    [database]
    backend = sqlalchemy
    connection = sqlite:///murano.sqlite
    
    ...
    
    [keystone]
    auth_url = 'http://%OPENSTACK_HOST_IP%:5000/v2.0'
    
    ...
    
    [keystone_authtoken]
    auth_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%
  5. Create a virtual environment and install Murano prerequisites. We will use tox for that. Virtual environment will be created under .tox directory.

    $ cd ~/murano/murano
    $ tox
  6. Create database tables for Murano.

    $ cd ~/murano/murano
    $ tox -e venv -- murano-db-manage \
    > --config-file ./etc/murano/murano.conf upgrade
  7. 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
  8. Import Core Murano Library.

    $ cd ~/murano/murano
    $ tox -e venv -- murano-manage \
    > --config-file ./etc/murano/murano.conf \
    > import-package ./meta/io.murano
  9. 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

Install Murano Dashboard

Murano API & Engine services provide the core of Murano. However, your need a control plane to use it. This section decribes how to install and run Murano Dashboard.

  1. Clone the repository with Murano Dashboard.

    $ cd ~/murano
    $ git clone https://github.com/stackforge/murano-dashboard
  2. Clone horizon repository

    $ git clone https://github.com/openstack/horizon
  3. Create venv and install muranodashboard as editable module.

    $ cd horizon
    $ tox -e venv -- pip install -e ../murano-dashboard
  4. Copy muranodashboard plugin file.

    This step enables murano panel in horizon dashboard.

    $ cp ../murano-dashboard/muranodashboard/local/_50_murano.py openstack_dashboard/local/enabled/
  5. Prepare local settings.

    To get more information, check out official horizon documentation.

    $ cp openstack_dashboard/local/local_settings.py.example openstack_dashboard/local/local_settings.py
  6. Customize local settings according to Openstack installation.

    ...
    ALLOWED_HOSTS = '*'
    
    # Provide OpenStack Lab credentials
    OPENSTACK_HOST = '%OPENSTACK_HOST_IP%'
    
    ...
    
    # Set secret key to prevent it's generation
    SECRET_KEY = 'random_string'
    
    ...
    
    DEBUG_PROPAGATE_EXCEPTIONS = DEBUG

    Also, it's better to change default session backend from browser cookies to database to avoid issues with forms during creating applications:

    ...
    DATABASES = {
        'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': '/tmp/murano-dashboard.sqlite',
        }
    }
    
    SESSION_ENGINE = 'django.contrib.sessions.backends.db'

    If you do not plan to get murano service from keystone application catalog, provide where murano-api service is running:

    ...
    MURANO_API_URL = 'http://localhost:8082'
  7. Perform database synchronization.

    Optional step. Needed in case you set up database as a session backend.

    $ tox -e venv -- python manage.py syncdb

    You can reply 'no' since for development purpose separate user is not needed.

  8. Run Django server at 127.0.0.1:8000 or provide different IP and PORT parameters.

    $ tox -e venv -- python manage.py runserver <IP:PORT>

    Development server will be restarted automatically on every code change.

  9. Open dashboard using url http://localhost:8000

Import Murano Applications

Murano provides excellent catalog services, but it also requires applications which to provide. This section describes how to import Murano Applications from Murano App Incubator.

  1. Clone Murano App Incubator repository.

    $ cd ~/murano
    $ git clone https://github.com/stackforge/murano-apps
  2. Import every package you need from this repository, using the command below.

    $ cd ~/murano/murano
    $ tox -e venv -- murano-manage \
    > --config-file ./etc/murano/murano.conf \
    > import-package ../murano-app-incubator/%APPLICATION_DIRECTORY_NAME%