近年来,云计算中的基础设施即服务(IaaS)依赖其高可扩展易配置的特点已有颠覆传统硬件的趋势,这也对“持续交付”的实现提出了新的机遇和挑战。IBM
UrbanCode Deploy with Patterns 是一款新型的环境管理与部署解决方案,利用它不仅可以在
OpenStack、Amazon、VMware vCenter 等不同的云上设计、部署或更新一个“全栈式”的环境,还可以与
IBM UrbanCode Deploy 集成实现应用程序到云环境的端到端的持续交付管道。下面本文将从相关概念、安装配置、拓扑结构和应用场景及等方面为您详细介绍这一可实现程序到云环境“持续交付”的工具。
向云环境“持续交付”所面临的问题
众所周知,云计算有 IaaS(Infrastructure as a Service)
,PaaS(Platform as a Service) ,SaaS(Software as a Service)
三种服务模式。其中的基础设施即服务 IaaS 可将硬件进行虚拟化,使用户可以按需定制自己所需的基础设施(计算资源、网络资源、存储资源等),即本文所指的“云环境”。硬件的虚拟化亦即基础设施的代码化,它使我们可以像编制程序那样管理与部署环境,并给依赖脚本自动化的“持续交付”带来了便利。不过面对如
OpenStack、Amazon Elastic Compute、VMware vCenter 等诸多云提供商,分别手动编写各自的环境管理与部署脚本依然是一个不小的挑战。
IBM UrbanCode Deploy with Patterns
概述
IBM UrbanCode Deploy with Patterns 是一个环境管理与部署方案,它提供了用于绘制环境蓝图(blueprint)的图形化编辑器和进行代码编写的文本编辑器,用户可以通过拖拽
- 修改属性 - 编辑代码的方式在不同的云上设计、部署或更新一个“全栈式”的环境,还可以与 IBM UrbanCode
Deploy 集成实现应用程序到云环境的端到端的持续交付管道。人们可以使用 IBM UrbanCode
Deploy with Patterns 管理他们的程序负载,获得从计算资源级到程序级的更高级别的控制;用户可以利用改进的协作生命周期管理和可移植云来快速地设计、部署和重用环境。
IBM UrbanCode Deploy with Patterns 通过自动提供云环境加速了应用程序的开发部署,它的核心功能包括:
环境蓝图文本/图形化设计器
为了尽可能简化定义和更新云环境的过程, IBM UrbanCode Deploy with Patterns
中的核心组件模式设计器具有图形化和文本两个视图,以便达到容易理解,快速开发并易于进行版本控制的目的。其中文本视图基于
Eclipse Orion 实现,内部规范使用 OpenStack Heat 编制模板 (HOT) 格式来定义环境,真正实现了“基础设施代码化”,这些代码可以被版本化被分支、变更和合并,如图
1 所示:
图 1. IBM UrbanCode Deploy
with Patterns 文本编辑器
图形化设计视图中可以清晰地查看整个环境以及各部分之间是怎么协作的。通过简单的拖拽即可快速地在云中绘制环境蓝图。
图 2. IBM UrbanCode Deploy
with Patterns 图形化编辑器
两个视图之间支持无缝切换,用户可以在图形化视图中画出轮廓后再使用文本视图中的查找替换语法纠错等文本功能修改一些细节,二者之一的选择修改都会反映在另一个视图中,通过二者的灵活切换,用户可以快速准确地绘制
/ 编写好自己的环境蓝图。
“全栈式”环境蓝图跨云可移植性
“全栈式”环境
何为“全栈式”环境?“全栈式”环境即指从基础设施到应用程序的所有相关程序和配置组合在一起的环境。有了 IBM
UrbanCode Deploy with Patterns 的帮助,用户在进行程序自动化部署的时候申请的基础设施不再是一台空白虚机,而是包含了操作系统、存储模块、网络及安全规则等相关资源的开箱可用的“实机”,用户可以直接在此基础上继续安装中间件,应用程序等其他组件。这个被代码化的“全栈式”环境可以在开发、测试、部署等软件生命周期中一致地流转,继而保障“持续交付”的顺利进行。
将同一环境蓝图部署到不同的云
IBM UrbanCode Deploy with Patterns“ 全栈式”环境蓝图是通过基于 OpenStack
云环境平台的 Heat 编配模板定义的。它还在很多关键方向扩展了 Heat ,例如扩展了除 OpenStack
之外的其他云环境提供商,比如 AWS。 IBM UrbanCode Deploy with Patterns
还向资源栈提供了额外的资源类型,这些资源类型可以将正在开发的程序包含进来。
在此基础上,通过为不同的云系统创建不同的配置文件,用户可以在只开发一个“全栈式”环境蓝图的基础上将该蓝图部署到多个云。
具体来说:用户可以首先选择一个没有绑定云系统的账户登录系统,并使用通用资源( reference resource
)创建一个不依赖具体云系统的环境蓝图,如图 3 所示:
图 3. 创建与云系统无关的环境蓝图
然后为每个云系统新建对应的配置文件中并单击工具栏添加按钮将所需属性添加到每个配置文件中并编辑,如图 4
和清单 1 所示:
图 4. 为每个云系统创建对应的配置文件
清单 1. 为 OpenStack 云部署环境的配置文件“config4OpenStack”
parameters: image: TODO Referenced_Image_server_name: TODO flavor: m1.small key_name: TODO network_id_Referenced_Network: TODO server_url: http://192.168.27.101:8080/landscaper Referenced_Component_version: LATEST Referenced_Component: TODO ucd_server_url: https://192.168.27.102:8443 ucd_user: admin ucd_password: TODO Referenced_Image_Referenced_Storage_Volume_Attachment_id: TODO Referenced_Security_Group: TODO public_network_id: TODO |
清单 2.为 VMware 云部署环境的配置文件“config4OpenStack”
resource_registry: OS::Nova::Server : IBM::VCenter::Server parameters: ...同清单 1-1... |
最后在进行部署操作时使用对应云环境的认证用户登录既可以选择对应该云环境的配置文件或者在部署窗口中再次修改属性进行部署,对应云环境中的可用资源均可在部署窗口的下拉框中获得。如图
5 所示 :
图 5. 选择配置文件实现环境蓝图的跨云部署
高效更新原有环境
和传统的配置工具需要重启环境更新配置不同, IBM UrbanCode Deploy with Patterns
原生地支持增量更新环境。在环境蓝图的更新应用到一个已存的环境时,如果变更只是增加了一些服务器,组件或者存储资源,那么这些元素直接就加上了;如果服务器的类型变了,变更节点会被去除并重新配置而其他的节点保持不变;只有所有的基础镜像改变时整个环境才会被重建。设计器中的“应用到”按钮提供了该功能,如图
6 所示:
图 6. 将环境蓝图更新应用到原有环境
与 IBM UrbanCode Deploy 集成实现端到端的持续交付管道
经过简单配置, IBM UrbanCode Deploy with Patterns 还可与 IBM UrbanCode
Deploy 进行集成以实现应用程序或组件到云环境的端到端的持续交付管道。具体来说在 IBM UrbanCode
Deploy with Patterns 设计器中可以将 IBM UrbanCode Deploy 中的组件作为资源直接使用,在
IBM UrbanCode Deploy 中也可以选择 IBM UrbanCode Deploy with
Patterns 中的环境蓝图并按照蓝图中的配置部署环境,如图 7、图 8 所示。文章的后续部分将涉及到
IBM UrbanCode Deploy with Patterns 与 IBM UrbanCode Deploy
的集成方法及如何在 IBM UrbanCode Deploy 中选择蓝图创建环境。
图 7. IBM UrbanCode Deploy
中的组件资源
图 8. 在 IBM UrbanCode
Deploy 中选择环境蓝图部署环境
IBM UrbanCode Deploy with Patterns
的拓扑结构
经典安装的情况下, IBM UrbanCode Deploy with Patterns 及其相关系统将组成如图
9 所示的拓扑结构:
图 9. IBM UrbanCode Deploy
with Patterns 的拓扑结构
IBM UrbanCode Deploy with Patterns
设计服务器
该服务器提供了 IBM UrbanCode Deploy with Patterns 的 web 界面,包括绘制环境蓝图和控制环境蓝图访问权限的界面。
IBM UrbanCode Deploy
IBM UrbanCode Deploy 提供了组件的相关信息,用户也可以直接从 IBM UrbanCode
Deploy 创建程序环境。
IBM UrbanCode Deploy with Patterns
引擎及其扩展
该引擎是添加了 IBM 扩展的 OpenStack Heat 引擎。该引擎管理云基础设施,负责在云中配置、更新、删除资源。
云发现服务
IBM UrbanCode Deploy with Patterns 其中的一个组件,该服务向设计服务器提供了可用的云资源信息,比如在部署环境时初始化属性下拉框。
OpenStack 认证服务
该服务提供了 OpenStack 系统的认证句柄,用于两产品之间的集成
云系统
相关的云托管了具体的虚拟资源
IBM UrbanCode Deploy with Patterns
的配置
IBM UrbanCode Deploy 与 IBM UrbanCode
Deploy with Patterns 的集成
IBM UrbanCode Deploy 与 IBM UrbanCode Deploy with Patterns
的集成需要进行双向认证,要完成集成用户既需要将前者与后者连接又需要将后者与前者连接。在配置前者到后者的连接之前需要先在前者的设置页面创建新的认证句柄,如图
10 所示。大多数情况下在安装后者时即可指定所要连接的前者的 URL ,认证句柄或用户名密码。如果没有在安装时进行配置,则可先在后者所在的虚机中修改
/var/lib/tomcat6/webapps/landscaper/WEB-INF/classes/config.properties
文件中的 com.ibm.landscaper.ucdeploy.url 和 com.ibm.landscaper.ucdeploy.token
属性或 com.ibm.landscaper.ucdeploy.username 和 com.ibm.landscaper.ucdeploy.password
属性,然后通过 service tomcat6 restart 命令重启 Web 服务器即可。
图 10. 在 IBM UrbanCode
Deploy 中创建认证句柄
OpenStack 与 IBM UrbanCode Deploy with
Patterns 集成
通过两种配置可以将 IBM UrbanCode Deploy with Patterns 连接到 OpenStack
云。选择哪种方法取决于选择使用 OpenStack 中的还是第三方认证比如 LDAP 服务中的认证用户访问云资源,在这里我们介绍第一种方式。为了使用
OpenStack 的认证用户连接云资源,首先需要在 IBM UrbanCode Deploy with
Patterns 中创建一个指向 OpenStack 认证域,如图 11 所示:
图 11. IBM UrbanCode Deploy
with Patterns 创建 OpenStack 认证域
至此服务器将在 IBM UrbanCode Deploy with Patterns 中创建与 OpenStack
云连接的 OpenStack 中的认证用户,同时将在 IBM UrbanCode Deploy with
Patterns 的可用云中创建与 OpenStack 中的云对应的云项目,如图 12 ,图 13 所示:
图 12. 从 OpenStack 中导入的认证用户
图 13. 与 OpenStack 对应的云项目
在这之后还需要将新导入的 OpenStack 用户加入组并授予角色权限,并将已自动创建好的对应云项目加入对应的组中。如图
12 ,图 13 所示:
图 14. 将导入的 OpenStack
用户加入组并授予角色权限
图 15. 将自动创建的云项目加入对应组
向云系统部署环境的经典应用场景
在上一部分的基础上, IBM UrbanCode Deploy with Patterns 与 OpenStack
集成后即可向其部署环境,再与 IBM UrbanCode Deploy 集成后即可将后者中设计好的组件与应用部署到
OpenStack 的云系统中,向例如 OpenStack 的云系统部署环境的常见应用场景有以下两种:
直接在 IBM UrbanCode Deploy with Patterns
部署云环境
1. 确保已与 IBM UrbanCode Deploy 及 OpenStack 等云系统集成且已连接到作为待部署环境宿主的云项目。
2. 创建并编辑将要部署的环境的设计蓝图,如图 16 所示:
图 16. 带有 IBM UrbanCode
Deploy 组件的环境蓝图范例
3. (可选)选择配置文件 / 设置属性,部署到 Amazon 和 VMware 时必须选择配置文件,部署到
OpenStack 时可以不选择配置文件,此时环境将被部署到登陆账户关联到的 OpenStack 服务器。各属性将按照配置文件中的设置进行初始化,也可在部署窗口重新修改属性。如图
5 所示。
4. 单击部署按钮部署环境。部署过程启动后,可查看环境部署的状态及其详细结果,如图 17 ,图 18 所示;部署完成后亦可在
OpenStack 中查看已部署的程序环境,如图 19 所示:
图 17. 环境蓝图部署状态监测
图 18. 环境蓝图部署详情
图 19. 在 OpenStack 中验证程序环境
在 IBM UrbanCode Deploy 中部署云环境
1. 在 IBM UrbanCode Deploy 中单击应用程序标签页选择一个应用程序然后创建环境
2. 填写环境名称,选择从 IBM UrbanCode Deploy with Patterns 中获得的可用环境蓝图,如图
8 所示,然后单击下一步
3. 选择需要部署到的云项目、蓝图版本、所需配置文件等信息,如图 20 所示:
4. 单击创建按钮
图 20. 在 IBM UrbanCode
Deploy 中创建程序环境
总结
针对企业应用在多样云环境下的“持续交付”需求, IBM UrbanCode Deploy with Patterns
基于与 OpenStack 和 Amazon 等常见云系统及现有 UrbanCode 系列产品的灵活集成和拓展,提供了易用的文本/图形化编辑器,用户通过简单的拖拽和编辑即可设计自己的环境蓝图并在其基础上通过修改配置属性向多个云系统部署或者更新一个“全栈式”的环境,极大的提高了环境部署的可视性,灵活性和一致性和效率,是一款可用性和易用性都较好的环境管理与部署方案。
|