Ansible 是一個免費的用于配置和管理計算機的的軟件平臺。它集成了軟件部署,ad hoc任務執行,和管理配置的功能。它依賴Python2.4之后的版本和通過SSH或者PowerShell管理節點。模塊工作在JSON格式,輸出信息可以被任何編程語言再次編寫。系統管理員可以使用YAML來描述系統的可用狀態 ( The system uses YAML to express reusable descriptions of systems.)
這個平臺由Michael DeHaan所創建。Micahael DeHaan是系統提供工具 Cobbler的作者和提供遠程管工具理Func框架的合著者。它被包含在Fedora發行版里面,同時也可以被RHEL,CentOS和Scientific Linux和其它操作系統使用。2015年,10-16,Red hat宣布它已經取得了ansible的所有權。
為什么被稱作Ansible?
It was named "Ansible" after the fictional instantaneous hyperspace communication system featured in Orson Scott Card'sEnder's Game,[9] and originally invented by Ursula K. Le Guin for her 1966 novel Rocannon's World.
1、架構(Architecture)
就像許多配置管理軟件一樣,Ansible區分兩種不同類型的服務器:控制器和節點。首先,一個控制器作為編排(orchestration)開始的地方,然后節點由控制器通過SSH管理??刂破魍ㄟ^它的清單文件(inventory)描述節點的位置。
為了編排節點,Ansible通過SSH在節點上部署模塊(Ansible deploys modules to nodes over SSH)。模塊暫時存儲在節點然后和通過JSON協議產生標準輸出和控制節點通信。當Ansible沒有管理節點的時候,它也不會消耗任何資源,因為后臺沒有Ansible 的daemon或程序在執行。
對比其它流行的配置管理軟件,例如Chef,Puppet,和CFEnine,Ansible使用無狀態的架構?;?/span>Agent的架構,節點必須在本地安裝一個daemon來和控制器通信。而無Agent的架構,節點不需要安裝和運行任何后臺daemons來連接控制節點。而無Agent的架構減少了節點不斷polling控制器時候的網絡負載。
1.1設計目標:
Ansible的設計目標包括:
最小化原則(Minimal in nature.)管理系統應盡量減少額外的依賴關系。
一致性(聲明需要)
安全. Ansible不部署不安全的Agent。只需要OpenSSH即可,而OpenSSH是被測試過的。
高可靠性 冪等性模型防止重新執行腳本的副作用。
低學習門檻。Playbook使用一個容易的和容易描述的基于YMAL的語言。
1.2模塊:
模塊被看做Ansible的基本工作單元。每個模塊都是獨立的,同時可以被任何腳本語言編寫,例如Python,Perl,Ruby,bash等等。模塊的屬性之一是冪等性,這意味著盡管某一操作執行了無數次,但是系統還是停留在相同的狀態。
1.3清單配置(Inventory Configurations)
清單用于描述可以被Ansible訪問的節點。這個清單默認被一個配置文件描述,位于/etc/ansible/hosts。這個配置文件列出可以被Ansible訪問的IP地址或者每個主機的主機名。另外,節點也可以被分配到一個組里面。
下面看一個例子:
192.168.6.1 [webservers] foo.example.com bar.example.com
這個配置文件指定了三個節點。第一個通過IP地址指定,后面兩個通過主機名指定。另外后面兩個節點被劃分到webserver組里面了。
Ansible也可以執行自定義的動態清單(Dynamic Inventory)腳本,可以從任何軟件系統拉取數據讓自己使用。
1.4劇本(Playbook)
Playbook在Ansible中表述配置,部署,和編排。Playbook使用YMAL語法,每個playbook映射一組主機到一些角色上。每個角色都是由Ansible任務調用。
2、平臺支持:
控制節點必須有Python2.6. 支持的操作系統包括大部分Linux和Unix發行版,例如Red Hat,Debian,CentOS,OS X和BSD等等。
管理節點必須有Python2.4或后面的版本。被管理的節點使用Python2.5或更早的包,python-simplejson包需要被安裝。在Ansible 1.7版本之后,Ansible也可以管理Windows節點了。
2.1云集成環境
Ansible可以部署虛擬化環境和公共和私有云環境,.包括VMvare,OpenStack,AWS,Rackspace Cloud Servers,DigitalOcean Droplets, Eucalyptus Cloud, KVM, XenServer, SoftLayer, Microsoft Azure 和 CloudStack
2.2大數據集成
Ansible可以部署大數據,存儲和處理分享環境,包括Hadoop, Riak, and Aerospike。Ansible處理的問題包括管理每個節點的資源消耗。由其是大數據,存儲和分析環境需要很高的執行效率和盡可能的消耗少量的CPU時間和內存。更深入的說,Ansible還提供監控功能,測量物理量如CPU資源可以幫助管理這些節點
3、用戶:
很多公司都在使用。
原創文章,作者:艾賀,如若轉載,請注明出處:http://www.www58058.com/9284