Murano环境搭建、使用介绍和思考

murano是OpenStack的Application Catalog服务,推崇AaaS(Anything-as-a-Service)的概念,通过统一的框架和API实现应用程序快速部署和应用程序生命周期管理的功能,降低应用程序对底层平台(OpenStack层和虚拟化层)的依赖。
  目前,容器技术的火爆使沉默已久的PaaS焕发了青春,各种概念曾出不穷,比如CaaS(Container-as-a-Service),ePaaS(elastic PaaS),其核心思想就是通过通过Container打包应用。仔细想想,过去几年PaaS一直不瘟不火,或者直白一点在IaaS面前显得那么鸡肋,总结起来主要有以下几点原因:
  (1)严重依赖IaaS层的实现,比如需要IaaS层提供服务编排和弹性扩展的功能;
  (2)处于SaaS和IaaS的夹缝中,很多功能SaaS层和IaaS实现起来更方便; 
(3)没有统一的对外接口,各种平台林立(OpenShift,CloudFundry,GAE,SAE),接口不统一; 
(4)应用上PaaS难,没有规范的应用发布标准;

  Container的出现,彻底解决了(1)和(2)两个问题,而且提供了更好的用户体验(部署快,性能好),并且能够反过来蚕食SaaS和IaaS的空间(比如CaaS和AaaS的概念)。但是(3)和(4)仍然实现是最需要解决的两个核心问题:标准的接口和标准的应用发布流程。murano针对这两个问题提出的解决框架:标准的对外API(OpenStack API)、标准的应用打包规范(http://murano.readthedocs.org/en/latest/articles/app_pkg.html)和标准的应用生命周期管理流程。

1. DevStack安装部署murano

(1) 从https://github.com/openstack/murano/tree/master/contrib/devstack处下载extras.d和lib下的文件,然后执行如下命令

    $ cp lib/murano ${DEVSTACK_DIR}/lib
    $ cp lib/murano-dashboard {DEVSTACK_DIR}/lib
    $ cp extras.d/70-murano.sh {DEVSTACK_DIR}/extras.d

(2)编写localrc文件

    DATABASE_PASSWORD=123456
    RABBIT_PASSWORD=123456
    SERVICE_TOKEN=123456
    SERVICE_PASSWORD=123456
    ADMIN_PASSWORD=123456

    disable_service n-net
    enable_service q-svc
    enable_service q-agt
    enable_service q-dhcp
    enable_service q-l3
    enable_service q-meta
    enable_service q-lbaas
    enable_service q-vpn

    DEST=/home/OpenStack/workspace

    DATA_DIR=$DEST/data
    SERVICE_DIR=$DEST

    LOGDIR=/home/OpenStack/workspace/logs
    LOGFILE=$LOGDIR/stack.sh.log
    VERBOSE=True
    LOG_COLOR=True
    SCREEN_LOGDIR=$LOGDIR/screens

    Q_PLUGIN=ml2
    ENABLE_TENANT_VLANS=True

    LOGDAYS=1

    #RECLONE=True
    #OFFLINE=True

    GIT_BASE="http://github.com"

    IMAGE_URLS=http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

    # Enable Heat
    enable_service heat h-api h-api-cfn h-api-cw h-eng

    # Enable Murano
    enable_service murano murano-api murano-engine

2. 安装过程遇到问题

(1)如果之前通过devstack安装过openstack,可能存在依赖的pip包和python-xxxclient版本太低的问题

sudo pip install python-openstackclient --upgrade

具体错误参见文章《openstack image list: error: unrecognized arguments: --property status=active
(2)目录权限问题: ~/.cache/pip目录没有写入的权限

3. Murano使用总结
  这里先简单的介绍murano的使用,对于具体的原理性的知识后续专门进行介绍。
  murano成功搭建完成后,会在horizon多出murano相关的菜单,如下图所示。

用户使用murano,首先需要将自己的applications或者mirantis application catalog的应用导入,下面以从mirantis application catalog导入应用为例,目前支持三种类型的应用导入方式:文件、Repository和URL。
(1)文件,指的是将应用按照murano的应用打包规范做成的zip包
(2)Repository,指的的应用的源码的git repository,可以自己搭建本地的repo,也可以使用mirantis的
(3)URL,指的是从源码按照murano的应用打包规范做好的zip包的网络地址,murano可以直接从网上下载并导入
下面以URL的方式为例,从murano的官方app catalog导入应用。下图从apps.openstack.org导入Apache和Cloudfoundry的zip包。

导入后应用就可以在application catalog中看到了,如下图所示。

murano有Enviroment的概念,意思是一组application的集合,比如我们可以把相互关联的应用定义成在同一个Env中,也可以把功能相似的应用定义在同一个Env中,个人感觉有点微服务的概念,即多个应用构成一个服务。比如创建一个PaaS的enviroment,并在这个环境中添加CloudFoundry应用。下面首先创建一个Env,然后就可以通过拖拽的方式向这个环境中添加application,完成一键式安装和部署,如下图所示。

拖入应用后,要求配置应用的需要的资源信息,如下图所示。

点击部署之后,可以看到应用开始部署,在orchistration中也能看到生成了对应的stack,并且还可以继续向这个env 中添加应用
 

最后可以通过murano查看当前应用的部署拓扑,如下图所示,拓扑显示这个apache应用有个external network的floating ip和一个nova instance两种资源组成。

  另外,需要注意一个问题,这里的floating ip要求能够访问公网,因为应用的部署过程需要从公网下载一些安装包,以这个apache应用为例,虚拟机启动后需要执行如下脚本:

  1. sudo apt-get update
  2. sudo apt-get -y install apache2
  3. if [[ $1 == "True" ]];
  4. then
  5. sudo apt-get -y install php5
  6. fi
  7. sudo iptables -I INPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT -m comment --comment "by murano, Apache server access on HTTPS port 443"
  8. sudo iptables -I INPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT -m comment --comment "by murano, Apache server access on HTTP port 80"

后续文章将从代码和原理上解释murano的工作机制等相关知识。

————————————————————
email: ustc.dylan@gmail.com
微博:@Marshal-Liu

  1. ##升级python-openstackclient
  2. sudo pip install python-openstackclient --upgrade
时间: 2024-12-18 07:36:54

Murano环境搭建、使用介绍和思考的相关文章

Libgdx环境搭建及介绍

Libgdx简介: libgdx是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C++语言编写而成.ibgdx兼容大多数微机平台(标准JavaSE实现,能运行在Mac.Linux.Windows等系统,最近加入了对html5的支持)与Android平台(Android1.5以上即可使用,Android2.1以上可满功率发挥).Libgdx以native方式自带图像解码器,通过其提供的Pixmap可以对指定图像进行像素级渲染操作,从而不依赖Android的Bitmap加载处理图像,可以支

Maven环境搭建和介绍

最近项目弄完了,有好多时间,准备把以前的知识复习一遍,以便日后更好的使用,先从maven搭建开始,然后再搭建以下SSH+mybatis的框架,弄完了在学学Hadoop分布式相关的东西. 安装前先配置好电脑的相关环境变量. 一.配置maven的环境 下载地址:http://maven.apache.org/download.cgi(window下载(Binary zip)的) 将maven解压,然后配置环境变量打开: 计算机------系统属性------高级系统设置------环境变量 系统变量

接口自动化测试系列之PHPUnit介绍和环境搭建

phpunit介绍 PHPUnit是一个面向PHP程序员的测试框架,这是一个xUnit的体系结构的单元测试框架. phpunit环境搭建 这里介绍两种搭建方法: 第一种:直接使用xampp,里面集成了phpunit 地址:https://www.apachefriends.org/zh_cn/index.html 帮助:http://jingyan.baidu.com/article/dca1fa6fbcd20cf1a5405258.html 第二种: 1.安装好php,并配置到系统环境变量pa

Karma测试环境搭建

Karma是一个JavaScript的测试运行器.Karma更是一个测试环境,使用Karma可以很方便的的运行测试,今天我们简单地介绍一karma测试环境的搭建和基本的测试,我已经写好了一套测试用例,有谁需要可以私信我. 官网如下:http://karma-runner.github.io/0.12/index.html 我们总是实现完feature后再编写测试用例,但是根据TDD的原则,开发的流程一般是这样, 1.编写测试(执行失败的case) 2.运行测试(执行失败) 3.编写代码(让cas

Android cts4.2 windows环境搭建说明

最近由于工作需要,要对我们的智能手机进行兼容性测试,在网上关于windows下测试环境搭建的介绍都比较凌乱,这里总结一下我的androidCTS测试windows下环境搭建,分享给大家,希望对大家有用. 工具/原料 Android SDK :android_sdk_windows Java开发工具包:jdk 手机驱动:usb_driver Cts : android-cts-4.2_r4-linux_x86-arm.zip cts 测试使用的所有APK CTS media:android-cts

基于Python的Appium环境搭建合集

自动化一直是测试圈中的热聊,也是大家追求的技术方向.在测试中,往往回归测试也是测试人员的“痛点”.对于迭代慢.变更少的功能,就能用上自动化来替代人工回归,减轻工作量. 问题 在分享环境搭建之前,先抛出我的一个疑问吧. app启用时,分不同的场景: 1.首次安装启用,有欢迎页: 2.非首次启用,直接进入到登录页: 3.配置了推荐展示时,启用app,会先展示推荐内容,才进入到登录页. 不同场景对应的activity都是不同的,我目前处理办法是,写了个输入函数,加了个if判断去对应不同的activit

adb常用指令与APPium环境搭建

jdk与sdk环境搭建 常用adb指令讲解 Appium环境搭建 Appium介绍: 移动端开源自动化测试框架 开源:完全免费 跨平台:完全满足IOS和Android两个不同系统提供的自动化测试 Appium是基于Selenium来实现 Appium是基于JDK+SDK环境来承载 Appium Server:已经淘汰,停止更新 Appium Desktop:持续更新的软件 Appium环境搭建: 1.安装JDK1.8,JDK的环境搭建 系统变量中添加: 变量名:JAVA_HOME 变量值:jav

8086汇编语言学习(二) 8086汇编开发环境搭建和Debug模式介绍

1. 8086汇编开发环境搭建 在上篇博客中简单的介绍了8086汇编语言.工欲善其事,必先利其器,在8086汇编语言正式开始学习之前,先介绍一下如何搭建8086汇编的开发环境. 汇编语言设计之初是用于在没有操作系统的裸机上直接操作硬件的,但对于大部分人来说,在8086裸机上直接进行编程将会面临各种困难.好在我们可以使用软件模拟器来模拟硬件进行8086的学习实践.在<汇编语言>中作者推荐通过windows环境下的masm和debug进行学习. masm介绍: masm是一款DOS下的汇编工具包,

使用WIF实现单点登录Part I——Windows Identity Foundation介绍及环境搭建

首先先说一下什么是WIF(Windows Identity Foundation).由于各种历史原因,身份验证和标识的管理一般都比较无规律可循.在软件里加入"身份验证"功能意味着要在你的代码里混进处理底层任务(如验证用户名和密码,与X509证书或类似的证书打交道等)的代码.这样一来就得对基础架构相当依赖,程序很难移植,除非大范围重写.要改变这种情况,使用基于声明的标识(claims-based identity)可以很好的解决这个问题.这个"基于声明的标识"是神马东