OpenStack Automation with Ansible 作者: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應用基礎設施。它易于學習,可以自編文檔,讀取方便,無需具備專業水平的計算機科學學位。自動化不應該比它所替代的任務更復雜。 u 簡單 ■ 人類可讀的自動化 ■ 無需特殊的編碼技能 ■ 任務按序執行 ■ 很快實現生產力 u 功能強大 ■ 應用部署 ■ 配置管理 ■ 工作流編排 ■ 編排應用生命周期 u 無代理 ■ 無代理架構 ■ 使用OpenSSH和WinRM ■ 無需使用或更新服務器 ■ 可預測、可靠、安全 什么是Ansible Tower? Ansible Tower是一個基于web的用戶界面,用于管理Ansible。它通過一個可視儀表板來集中和控制Ansible基礎設施。可以稱為自動化任務管理中心。 Ansible Tower u 基于web的用戶界面,用于管理Ansible u 通過一個可視儀表板來集中和控制Ansible基礎設施 u 為Ansible提供REST API u 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 u 開源:此技術得到了大型開發人員社區的支持 u 為客戶提供價值、效率和敏捷性 u 由模塊化、可伸縮且靈活的實用程序集組成 u 經過大型企業的檢驗和測試 u 互操作性和開源API允許管理員管理混合IT環境,無需額外層成本 Ansible Playbook Playbook是一個YAML文件,描述了要在一組主機(在Ansible inventory中定義)中執行的任務的列表。Playbook由一個或多個腳本組成,用于對任務進行分組。它定義虛擬機名稱、VMDK文件、網絡、IP地址和場景信息。Playbook是實現真正簡單的配置管理和多機部署系統的基礎。它可以宣布配置,也可以為手動流程編排步驟。 Playbook u 定義要在主機上執行的任務 u 任務按照playbook指定的順序執行 u YAML格式 圖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集成充分利用了置備更加系統化的自動化流程時所需的許多代碼。本文討論了如下幾個要點: u Ansible可以自動化各種IT任務,包括系統置備、軟件包安裝、網絡配置和安全,以及云服務的實例置備。 u 使用playbook這個方法可以簡化虛擬機編排和配置,以及可能在自定義網絡中包含多個虛擬機的復雜場景的部署等任務,但在部署期間可能需要運行自定義腳本。 u 使用playbook逐個執行命令的流程單元被稱為任務。 u 要使用Ansible實現OpenStack自動化,需要采用OpenStack、Ansible、Ansible Tower和源代碼控制(例如Git存儲庫)。 我們建議,在ADI公司的其他云項目上進行自動化和云基礎設施部署時,可以考慮采用Ansible和OpenStack。 作者簡介 Moinul Islam是ADI公司可信安全解決方案(TSS)部(位于美國佛羅里達州坦帕市)的軟件工程師。他在軟件工程、設計和開發方面擁有20年的經驗。他于1997年獲得俄亥俄州克里夫蘭州立大學M.C.I.S.學位。在可信安全解決方案部工作時,Moinul主要負責設計和開發一項名為Sypher Ultra的產品,它是Xilinx Zynq UltraScale+設備的一項附加安全措施。他還專注于另一個名為“密鑰管理”的項目,該項目與nCipher硬件安全模塊集成。聯系方式:moinul.islam@analog.com。 |