利用Ansible實現OpenStack自動化

作者: ADI可信安全解決方案部軟體工程師Moinul Islam

摘要

本文旨在就置備虛擬機器(除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
    • 一種開源自動化工具
    • 採用簡單設計,旨在讓所有人都能理解和學習
    • 使用
    • 無需自訂腳本或代碼
    • 提供自動化引擎
    • 管理網路、基礎設施、作業系統
    • 提供預構建模組,用於管理和配置主機(超過45
    • 0)
    • 提供基於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 Playbooks

Playbook是一個YAML檔,描述了要在一組主機(在Ansible inventory中定義)中執行的任務的列表。Playbook由一個或多個腳本組成,用於對任務進行分組。它定義虛擬機器名稱、VMDK檔、網路、IP位址和場景資訊。Playbook是實現真正簡單的配置管理和多機部署系統的基礎。它可以宣佈配置,也可以為手動流程編排步驟。

Playbooks

  • 定義要在主機上執行的任務
  • 任務按照playbook指定的循序執行
  • YAML格式

圖1.playbook示例。

OpenStack與Ansible的交互

Ansible playbook在OpenStack環境中定義一系列任務和配置。任務示例包括:置備虛擬機器實例、定義虛擬機器IP以及連接虛擬機器的交換機。

案例研究:Cyber Range軟體

Cyber Range為客戶提供可擴展的虛擬化平台,用於網路安全培訓、建模、模擬和進階分析。我們為多家客戶提供解決方案,包括美國國防部、新加坡網路安全局(CSA/SITSA)和日本九州大學。

  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圖示,提供超連結用於開啟控制台。

圖2.Cyber Range web應用透過REST API與Ansible和OpenStack交互。

總結

透過將Ansible Tower與OpenStack集成到Cyber Range軟體中,我們能夠構建一個應用程式,為全球客戶提供按需培訓和真實場景。與Ansible REST API和playbook集成充分利用了置備更加系統化的自動化流程時所需的許多代碼。本文討論了如下幾個要點:

  • Ansible可以自動化各種IT任務,包括系統置備、套裝軟體安裝、網路配置和安全,以及雲服務的實例置備。
  • 使用playbook這個方法可以簡化虛擬機器編排和配置,以及可能在自訂網路中包含多個虛擬機器的複雜場景的部署等任務,但在部署期間可能需要運行自訂腳本。
  • 使用playbook逐個執行命令的流程單元被稱為任務。
  • 要使用Ansible實現OpenStack自動化,需要採用OpenStack、Ansible、Ansible Tower和原始程式碼控制(例如Git存儲庫)。

我們建議,在ADI的其他雲端專案上進行自動化和雲端基礎設施部署時,可以考慮採用Ansible和OpenStack。