ansible概念:
ansible是一種自動化運維工具,基於python語言編寫,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能.是借助於 ssh實現遠端管理的工具(這只是其中所借助的協議之一,ssh為預設),而ansible還可以借助於其他的連線方式來實現。
ansible 特性:
a.模組化:呼叫特定的模組,完成特定任務;
ansible本身只是乙個管理框架,我們在遠端主機上安裝ansible以後,它自身並不執行任何管理操作,我們的目標主機被管理時,要想實現某個功能,就需要在ansible之上啟用或者啟用某個模組,來借助於模組實現。比如:要安裝程式包,就會有專門安裝程式包的模組,安裝程式包,對不同的系統和不同的管理器也是不同的。如:yum、rpm等管理器;啟動服務是乙個模組、複製檔案又是另一模組等;而ansible基於ssh連線著目標主機,通過ssh命令的方式傳送給目標主機,也就是說把ssha的協議介面封裝成另一種介面而已)
b.基於python語言實現,由paramiko, pyyaml和jinja2三個關鍵模組來構建ansible;
paramiko是乙個ssh的配置,它連線目標主機,使用這個模組,可以一次性使ansible同時連線多個主機,pyyaml是我們ansible管理員能配置自己計畫定義的配置目標的程式設計介面,比如:我們要定義某個主機裝某個服務,需要通過pyyaml的格式定義在pyyaml的配置檔案中;jinja2為python的模板程式語言,把這個程式語言結合pyyaml來實現,就會實現非常強大的程式設計配置或者把整個配置介面變成程式設計介面,可以非常靈活的定義配置目標
c.部署簡單:agentless;
是指每個被管理主機不需要安裝任何東西,只要ssh服務在執行就可以
d.支援自定義模組;
使用者使用任何語言自定義模組,包括shell
e.支援playbook;
除此之外還有乙個重要概念 **冪等性:**任何配置系統、配置工具都應該具有冪等性的特徵。冪等性是指一種操作執行一遍和執行n遍的結果是一致的;如:給某個主機安裝nginx程式包,yum install一次,在yum install一次,無非就是裝上nginx的程式包。但有一些命令是無法冪等的,有些命令執行本身是不具有冪等性的,要想能夠基於所謂的配置管理工具來使用這個功能,我們就必須把它定義為冪等的。如:追加條件即可,建立乙個目錄,在建立一次就錯了,我們可以加乙個執行條件。
ansible除了高度模組化之外,還是外掛程式化設計的,如下圖為ansible的架構圖:
ansible架構圖講解:
ansible連線著每乙個目標主機執行管理時,需要通過連線外掛程式(plugins)來實現,預設使用paramiko這種方式來通過ssh連線著目標主機,其實我們使用連線外掛程式,如果能開發出其他連線方式的話,可以完全不使用ssh,那ansible要管理哪些主機呢?ansible當中定義各種各樣的伺服器配置,如果來乙個主機是mysql,那麼把mysql的配置都匯出來給ansible,那麼可能會洩露一些重要資訊,因此,ansible不是隨意管理任意主機的,我們會有乙個主機清單(host inventory),裡面定義了哪些主機是我們的目標管理物件,只有被定義在清單中的主機才能納入到被管控的目標中,對於每乙個主機,我們都可以借助模組(core modules對它施加某種管理操作,比如:安裝程式包,配置檔案等),安裝完成以後需不需要要通知使用者已經安裝成功呢?如果有必要email外掛程式可以用來傳送通知、logging外掛程式用來記錄日誌等;但是作為模組來講,所有的管理功能都需要借助於模組來實現,為此ansible自帶了很多核心模組,作為使用者來講我們可以裝入第三方模組或者自定義開發模組,這種稱之為custom modules。但是,假如我們現在管理主機有10臺,每一台主機平均要執行十項管理操作,這就意味著有100條操作要執行,這100條操作就需要在命令列一次一次的執行,過兩天如果需要,還得在重新來一遍,這樣就導致我們的工作量加大。
我們的管理任務,如果在命令列直接執行的話,無法在復現,除非重來一次,這樣我們可以把管理操作寫在檔案當中,隨後,ansible讀的時候,讓它讀檔案,而不是命令列,這種檔案統稱為playbook,又叫做劇本,playbook是乙個yaml格式的檔案,這個檔案把我們本來命令行當中的命令轉化成yaml格式放在檔案中,隨後就可以一遍遍復現了。
Hive 特性及原理
特點 hive是構建在hadoop之上的資料倉儲。資料儲存在hdfs上,資料計算用的mapreduce框架。使用者無需掌握mr的編寫,通過類sql語句即可自動生成查詢計畫。主要內容 接入入口 client cli beeline hiveserver2 metastore metasotre ser...
Ansible基本工作原理及各個模組外掛程式的作用
ansible最新出現的自動化運維工具,是乙個基於配置管理和應用的部署工具,基於python開發,集合了眾多運維工具puppet,chef,saltstack等的優點,ansible是給予模組工作,本身沒有批量部署能力。1自動化部署應用 2自動化管理配置 3自動化持續交付 4自動化 aws 雲伺服器...
ansible架構原理及工作流程 linux技術
一 ansible介紹 ansible是一種自動化運維工具,基於paramiko模組開發,用於批量執行任務和發布工作,被廣泛用於日常運維工作當中.二 ansible架構架構圖 ansible核心模組介紹 core models ansible自帶的模組,file,shell,copy等custom ...