OpenStack技术实践:Murano开发环境搭建

OpenStack技术实践:Murano开发环境搭建

(邀请最新core撰稿)
Murano是OpenStack的Application Catalog服务,推崇AaaS(Anything-as-a-Service)的概念,通过统一的框架和API实现应用程序快速部署和,用程序生命周期管理的功能,降低应用程序对底层平台(OpenStack层和虚拟化层)的依赖。
本文针对Murano的开发环境搭建进行详细介绍,具体如下:

准备安装环境

Ubuntu

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

CentOS

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

安装tox
sudo pip install tox


安装和配置Database

Murano 可以使用不同的数据库作为后端,SQLite可以满足开发使用,生成环境下建议使用MySQL。

  1. 安装mysql

    apt-get install python-mysqldb mysql-server

  2. 创建murano数据库

    mysql -u root -p
    mysql> CREATE DATABASE murano;
    mysql> GRANT ALL PRIVILEGES ON murano.* TO 'murano'@'localhost' \
    IDENTIFIED BY 'MURANO_DBPASS';
    mysql> exit;

安装API和Engine服务

  1. 创建一个存放Murano所有组件源码的目录
    mkdir ~/murano
  2. Clone Murano源码
    cd ~/murano
    git clone git://git.openstack.org/openstack/murano
  3. 通过tox生成murano配置文件
    cd ~/murano/murano
    tox -e genconfig
    cd ~/murano/murano/etc/murano
    ln -s murano.conf.sample murano.conf
  4. 按照下面的例子修改murano.conf配置文件
    注:(这个例子用的是sqlite数据库,如果使用其他数据库,修改[database]部分。.)

    [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]
    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%
    [networking]
    default_dns = 8.8.8.8 # In case openstack neutron has no default
    # DNS configured

  5. 通过tox生成虚拟环境,虚拟机环境中会包含所有的Murano安装需要依赖的包。这个虚拟环境会在目录下的.tox隐藏文件夹下。

    cd ~/murano/murano
    tox

  6. 生成Murano数据库表。

    cd ~/murano/murano
    tox -e venv -- murano-db-manage \
    --config-file ./etc/murano/murano.conf upgrade

  7. 打开一个console窗口来启动Murano API

    cd ~/murano/murano
    tox -e venv -- murano-api --config-file ./etc/murano/murano.conf

  8. 导入Murano Core库

    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

  9. 重新打开一个新的console来启动Murano Eegine。

    cd ~/murano/murano
    tox -e venv -- murano-engine --config-file ./etc/murano/murano.conf


Register in Keystone

为了使得Murano API能够被所有OpenStack用户使用,我们需要将Application Catalog 这个服务注册到keystone的catalog里面。
1. 增加application-catalog 服务:

openstack service create --name murano --description "Application Catalog for OpenStack" application-catalog

2. 为murano创建endpoint
openstack endpoint create --region RegionOne --publicurl http://<murano-ip>:8082 --internalurl http://<murano-ip>:8082 --adminurl http://<murano-ip>:8082 <MURANO-SERVICE-ID>


Install Murano Dashboard

Murano API & Engine 这两个服务提供了Murano的核心服务。 但我们需要一个可视化的界面来方便用户使用Murano。这个部分介绍如何安装Murano Dashboard。
1. Clone Murano Dashboard源码

cd ~/murano
git clone git://git.openstack.org/openstack/murano-dashboard

2. Clone horizon源码
git clone git://git.openstack.org/openstack/horizon

3. 创建horizon虚拟环境并把muranodashboard作为模块安装进去
cd horizon
tox -e venv -- pip install -e ../murano-dashboard

4. 将启用Murano插件的文件拷贝到Horizon下面。
cp ../murano-dashboard/muranodashboard/local/_50_murano.py openstack_dashboard/local/enabled/

5. 准备Horizon以及Murano Dashboard的配置文件,按照下面的例子修改
cp openstack_dashboard/local/local_settings.py.example openstack_dashboard/local/local_settings.py
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

6. 因为Murano Dashboard创建应用的时候需要存放session,这了需要配置默认的session后端
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

7. 开启Django HTTP server 通过下面的参数
tox -e venv -- python manage.py runserver <IP:PORT>

这样Murano开发环境就搭建完成了。打开浏览器输入http://IP:PORT就能够访问了。