(邀请最新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
sudo pip install tox
Murano 可以使用不同的数据库作为后端,SQLite可以满足开发使用,生成环境下建议使用MySQL。
安装mysql
apt-get install python-mysqldb mysql-server
创建murano数据库
mysql -u root -p
mysql> CREATE DATABASE murano;
mysql> GRANT ALL PRIVILEGES ON murano.* TO 'murano'@'localhost' \
IDENTIFIED BY 'MURANO_DBPASS';
mysql> exit;
mkdir ~/murano
cd ~/murano
git clone git://git.openstack.org/openstack/murano
cd ~/murano/murano
tox -e genconfig
cd ~/murano/murano/etc/murano
ln -s murano.conf.sample murano.conf
按照下面的例子修改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
通过tox生成虚拟环境,虚拟机环境中会包含所有的Murano安装需要依赖的包。这个虚拟环境会在目录下的.tox隐藏文件夹下。
cd ~/murano/murano
tox
生成Murano数据库表。
cd ~/murano/murano
tox -e venv -- murano-db-manage \
--config-file ./etc/murano/murano.conf upgrade
打开一个console窗口来启动Murano API
cd ~/murano/murano
tox -e venv -- murano-api --config-file ./etc/murano/murano.conf
导入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
重新打开一个新的console来启动Murano Eegine。
cd ~/murano/murano
tox -e venv -- murano-engine --config-file ./etc/murano/murano.conf
为了使得Murano API能够被所有OpenStack用户使用,我们需要将Application Catalog 这个服务注册到keystone的catalog里面。
1. 增加application-catalog 服务:
openstack service create --name murano --description "Application Catalog for OpenStack" application-catalog
openstack endpoint create --region RegionOne --publicurl http://<murano-ip>:8082 --internalurl http://<murano-ip>:8082 --adminurl http://<murano-ip>:8082 <MURANO-SERVICE-ID>
Murano API & Engine 这两个服务提供了Murano的核心服务。 但我们需要一个可视化的界面来方便用户使用Murano。这个部分介绍如何安装Murano Dashboard。
1. Clone Murano Dashboard源码
cd ~/murano
git clone git://git.openstack.org/openstack/murano-dashboard
git clone git://git.openstack.org/openstack/horizon
cd horizon
tox -e venv -- pip install -e ../murano-dashboard
cp ../murano-dashboard/muranodashboard/local/_50_murano.py openstack_dashboard/local/enabled/
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
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
tox -e venv -- python manage.py runserver <IP:PORT>
http://IP:PORT
就能够访问了。