利用Ansible实现OpenStack自动化
2019-11-29
作者:Moinul Islam
来源:ADI公司
摘要
本文旨在就置备虚拟机(除VMware以外)的一种替代方法提供一些见解。目标受众包括但不限于处理虚拟机自动化问题的软件开发人员。由于VMware的服务提供商许可证及其支持vRealize、vCenter和其他工具的基础设施成本高昂,我们整合我们的资源,开发出了一种同样能够完成任务,但更经济高效的替代方法。我们的解决方案采用开源技术,利用使用Ansible Tower的DevOps方法来与OpenStack交互,通过playbook进行实现,用于置备虚拟机。我们将此技术集成到我们的Cyber Range软件中,本文将它作为一个案例研究,以证明这种方法行之有效。
简介
本文介绍为何Ansible Tower是使用playbook,在OpenStack中创建、部署和配置虚拟机最简单的方法之一。系统性能、IT自动化、复杂系统的部署和快速生产力是软件开发中与虚拟机交互的关键标准。Ansible Tower具有所有这些特性,它通过REST API轻松嵌入到现有工具和流程中。Ansible Tower是一个安全门户,用户可以通过它请求新IT服务和管理特定的云,使用它(作为开源工具)获取IT资源,用于自动化应用部署和升级,以及配置软件以实现联网和安全。
为何选择Ansible?
Ansible是一个简单的自动化工具,可以全面描述IT应用基础设施。它易于学习,可以自编文档,读取方便,无需具备专业水平的计算机科学学位。自动化不应该比它所替代的任务更复杂。
简单
■人类可读的自动化
■无需特殊的编码技能
■任务按序执行
■很快实现生产力
功能强大
■应用部署
■配置管理
■工作流编排
■编排应用生命周期
无代理
■无代理架构
■使用OpenSSH和WinRM
■无需使用或更新服务器
■可预测、可靠、安全
什么是Ansible Tower?
Ansible Tower是一个基于web的用户界面,用于管理Ansible。它通过一个可视仪表板来集中和控制Ansible基础设施。可以称为自动化任务管理中心。
Ansible Tower
基于web的用户界面,用于管理Ansible
通过一个可视仪表板来集中和控制Ansible基础设施
为Ansible提供REST API
Ansible
■一种开源自动化工具
■采用简单设计,旨在让所有人都能理解和学习使用
■无需自定义脚本或代码
■提供自动化引擎
■管理网络、基础设施、操作系统
■提供预构建模块,用于管理和配置主机(超过450)
■提供基于Python?的API
■使用OpenSSH
■通过playbook提供自动化和编排。
什么是OpenStack?
OpenStack是一个云操作系统,它控制整个数据中心的大量计算、存储和网络资源,通过仪表板进行管理。该仪表板使管理员能够进行控制,同时允许用户通过web界面置备资源。它是一个开源项目,提供基础设施即服务平台来构建支持云的应用程序,并且支持采用多个管理程序来置备和编排云。它可以运行多层工作负载或开源开发工具。最终用户可以轻松置备资源和支持几乎所有的管理程序,包括VMware ESXi、Xen和KVM。
为何选择OpenStack?
OpenStack可以轻松与Ansible Tower、VMware管理程序和Hyper-V集成,从而使用现有的基础设施。OpenStack和KVM管理程序免费提供,但需要技能熟练的管理员进行配置。OpenStack是一个用于部署、开发和构建云平台的开源平台。是一个命令行界面,功能强大,提供管理、API、RESTful web服务以及基于web的控制面板控件。这个开源云软件用于管理计算(Nova)、块卷存储(Cinder)、虚拟机镜像服务(Glance)和网络构建(Neutron)。OpenStack作为基础,不仅简化了部署过程,还简化了开发、存储、联网、监测、管理和应用。
OpenStack
开源:此技术得到了大型开发人员社区的支持
为客户提供价值、效率和敏捷性
由模块化、可伸缩且灵活的实用程序集组成
经过大型企业的检验和测试
互操作性和开源API允许管理员管理混合IT环境,无需额外层成本
Ansible Playbook
Playbook是一个YAML文件,描述了要在一组主机(在Ansible inventory中定义)中执行的任务的列表。Playbook由一个或多个脚本组成,用于对任务进行分组。它定义虚拟机名称、VMDK文件、网络、IP地址和场景信息。Playbook是实现真正简单的配置管理和多机部署系统的基础。它可以宣布配置,也可以为手动流程编排步骤。
Playbook
u定义要在主机上执行的任务
u任务按照playbook指定的顺序执行
uYAML格式
图1.playbook示例。
OpenStack与Ansible的交互
Ansible playbook在OpenStack环境中定义一系列任务和配置。任务示例包括:置备虚拟机实例、定义虚拟机IP以及连接虚拟机的交换机。
案例研究:Cyber Range软件
Cyber Range为客户提供可扩展的虚拟化平台,用于网络安全培训、建模、仿真和高级分析。我们为多家客户提供解决方案,包括美国国防部、新加坡网络安全局(CSA/SITSA)和日本九州大学。
图2.Cyber Range web应用通过REST API与Ansible和OpenStack交互。
1.用户点击开始按钮开始练习(实操网络安全培训)。
2.Cyber Range软件通过REST API使用POST请求将训练场景名称和用户名称调用到Ansible Tower。
3.Ansible Tower执行用于练习的playbook任务,并向OpenStack提供配置信息。这些信息包括虚拟机镜像和网络信息。
4.OpenStack置备虚拟机镜像并配置网络。
5.OpenStack将状态返回给Ansible Tower,Ansible Tower再将状态返回给web应用。
6.如果状态是成功的,Cyber Range软件会显示Windows或Linux图标,提供超链接用于开启控制台。
总结
通过将Ansible Tower与OpenStack集成到Cyber Range软件中,我们能够构建一个应用程序,为全球客户提供按需培训和真实场景。与Ansible REST API和playbook集成充分利用了置备更加系统化的自动化流程时所需的许多代码。本文讨论了如下几个要点:
Ansible可以自动化各种IT任务,包括系统置备、软件包安装、网络配置和安全,以及云服务的实例置备。
使用playbook这个方法可以简化虚拟机编排和配置,以及可能在自定义网络中包含多个虚拟机的复杂场景的部署等任务,但在部署期间可能需要运行自定义脚本。
使用playbook逐个执行命令的流程单元被称为任务。
要使用Ansible实现OpenStack自动化,需要采用OpenStack、Ansible、Ansible Tower和源代码控制(例如Git存储库)。
我们建议,在ADI公司的其他云项目上进行自动化和云基础设施部署时,可以考虑采用Ansible和OpenStack。