Ansible(軟體)
Ansible是一套軟體工具,其實現基礎架構即程式碼。伊是開源的,並且這套件包括軟體供應、組態管理和應用程式部署等等的功能。
Ansible 上原初由 Michael DeHaan 編寫,並且二空一五年予人 Red Hat 收購,其旨佇咧自動化設定類 Unix 系統佮 Microsoft Windows 的環境。Ansible 是無代理的,透過 SSH 凡勢 PowerShell 執行的 Windows 遠端管理機制來建立臨時遠端連線。Ansible 的控制節點佇大多數已經安裝 Python 的類似 Unix 系統上執行,抑是包括安裝矣 WSL 的 Windows 系統。系統組態的部份是透過使用伊家己的宣告式語言來定義的。
歷史
" ansible " 一詞是由 Ursula K . Le Guin 佇伊一九六六年的小說 _ Rocannon 的世界 _ 中所創造的,指甲是虛構的即時通訊系統。
Ansible 工具是由供應侍服器應用程式 Cobbler 的作者佮用佇遠端管理的 Fedora 統一網路控制器 ( Func ) 框殼其合著者 Michael DeHaan 所開發。
Ansible , Inc . ( 原 AnsibleWorks , Inc . ) 是由 Michael DeHaan、Timothy Gerla 和 Saïd Ziouani 佇二空一三年所創立的公司,旨咧為 Ansible 提供商業的支持佮贊助。紅帽公司佇二空一五年十月收購矣 Ansible。
Ansible 予人包括佇 Red Hat 所有的 Fedora Linux 發行版中,嘛會當透過 Extra Packages for Enterprise ( EPEL ) 套件用於著 Red Hat Enterprise Linux、CentOS、openSUSE、SUSE Linux Enterprise、Debian、Ubuntu、Scientific Linux 和 Oracle Linux 猶閣有其他作業系統。
架構
概述
Ansible 藉選擇用簡單的 ASCII 文字檔案來儲存的部份 Ansible 儉庫底共𪜶鬥管理濟台設備。儉庫是會當配置的,目標機械的存儲庫會使動態取得,嘛會當對雲端服務中無仝檔案的格式 ( YAML、INI ) 的來源內底取得。
對二空一四年以來,敏感資料會當使用 Ansible Vault 儲存佇咧加密文件內底。佮其他的流行組態管理軟體 ( 如 Chef、Puppet、Salt 和 CFEngine ) 相比並,Ansible 使用 _ 無代理架構 _,亦即 Ansible 軟體毋通佇咧控制節點頂正常運行,甚至無需要安裝佇咧控制節點頂懸。Ansible 透過 SSH 臨時佇咧節點上安裝佮執行模組來管理節點。咧執行一个管理任務期間,執行模組的行程使用基於 JSON 的協定佇咧其標準輸出入界面來佮被控制的機器溝通。當 Ansible 毋管理節點的時陣,因為無執行任何後台程式抑是安裝任何軟體。,伊袂消磨節點上的資源
相依照套件
Ansible 要求佇咧所有被管理的機器頂懸安裝 Python,包含 pip 套件管理器、組態管理軟體佮其相依照套件。受控網路的設備毋免額外的相依套件,並且是無代理狀態的。
控制節點
控制節點 ( 主控主機 ) 主要是咧管理 ( 協調 ) 目標機器(這號做 " 存儲庫 " 的儉點,見下文)的運作。控制節點干焦適用佇咧 Linux 等作業系統,無支援 Windows 作業系統。其允真濟个控制節點。Ansible 無需要單一控制機器來進行協調管理,其確保會當用簡單的方式來做災難復原。節點是由控制節點透過 SSH 來管理。
設計目標
Ansible 的設計目標包括:
- 本質上細。管理系統對環境無應該施加額外的相依套件。
- 一致性。使用 Ansible 應該會當建置有一致性的多個環境。
- 安全。Ansible 袂佈署代理程式到儉點,受著控制點頂懸只要 OpenSSH 和 Python。
- 可靠的。若是細膩的編寫程式,Ansible playbook 跤本檔案會當是冪等等的,以防止對受控系統產生意外的副作用。毋過想欲編寫非冪等等的 playbook 跤本檔案是會當的。
- 干焦需要上少的學習。Playbook 使用是因為 YAML 和 Jinja 模板的簡單講起性語言。
模組
模組大多數是獨立的,會當用標準跤本的語言 ( 如 Python、Perl、Ruby、Bash 等 ) 來編寫。模組的指導目標之一是冪等性,這意味著就算濟擺來重複操作 ( 譬如講按系統錯誤中復原的時陣 ),伊嘛會始終共系統囥佇相𫝛的狀態。
儲存庫配置
目標點的位置是透過 ( 佇咧 Linux 系統上 ) 佇佗位咧 ` / etc / ansible / hosts ` 的清單配置列表 ( INI 抑是 YAML 格式 ) 來指定。配置文件列出矣 Ansible 會當訪問的每一个節點的 IP 地址抑是主機名稱。此外,會當用群組的方式來分配節點。
以下是一份範例清單 ( INI 格式 ):
此配置文件指定三个節點:第一个節點由 IP 地址指定,後兩个節點由主機名稱來指定。此外,後兩个點予人分配給 ` webservers ` 群組。
Ansible 猶閣會當使用自定義的 _ 動態清單 _ 劇本,該跤本會當對無仝的系統中動態取得資料,並支援以群組來分配群組。
Playbook 劇本
Playbook 跤本內底包任務列表的 YAML 文件,所以用佇咧受控制點頂懸重複執行。彼每一个 Playbook 攏共一組主機炤著 ( 關聯 ) 到一組角色。逐个角色按呢攏由著 Ansible 任務的呼叫來表示。
Ansible 自動化平台
Ansible 自動化平台 ( Ansible Automation Platform ) 是一个 REST API、Web 服務佮基於 Web 的介面(應用程式), 旨咧使具遮廣泛 IT 技能的人閣較容易使用 Ansible。伊是一个由幾个組件組的平台,包括開發人員工具、操作界面猶閣有自動化網路,以實現跨數據中心的大規模自動化任務。AAP 是 Red Hat , Inc . 支持的商業產品,但是牽涉著十七个以上的頂游開源項目,包括講 AWX 頂游項目 ( Ansible Tower 衍生你自這个項目的前身 ),該項目自二空一七年九月開始開源。
閣有另外一个 Tower 的開源替代品 _ Semaphore _,伊是用 Go 編寫的。
平台支援
控制機器愛做 Linux / Unix 主機(比如講 BSD、CentOS、Debian、macOS、Red Hat Enterprise Linux、SUSE Linux Enterprise、Ubuntu,並且需要 Python 二嬸七抑是三更五。
傍管節點(如果𪜶若是類 Unix)著愛有 Python 二嬸四抑是閣較懸版本。對使用 Python 二嬸五抑是較早版本的託管節點,閣需要 ` python-simplejson ` 套件包。對一鋪七版本開始,Ansible 閣會用得管理 Windows 節點。佇這个情形下,將使用 WS-Management 協議支持的本機 PowerShell 遠遠,毋是 SSH。
Ansible 會當部署到赤機主機、虛擬機和雲環境。
AnsibleFest
AnsibleFest 是予 Ansible 社群用戶、貢獻者等人參加的年度研討會。
參見
- 開源組態管理軟體的較
- 基礎設施即代碼 ( IaC )
- CFEngine ( 軟體 )
參考文獻
外部連結
- 官方網站