Ansible初識

Ansible概念

ansible是自動化運維工具,基于Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。說白了,Ansible就是在一臺或臺服務器上執行一系列命令而已。主要包括

(1)、連接插件connectionplugins:負責和被監控端實現通信

(2)、hostinventory:指定操作的主機,是一個配置文件里面定義監控的主機

(3)、各種模塊核心模塊、command模塊、自定義模塊

(4)、借助于插件完成記錄日志郵件等功能

(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。

Ansible可以實現很多工具的功能,如下圖:

Ansible初識

Ansible和其它自動化工具比較

Ansible無需在被控主機部署任何代理程序,默認直接通過ssh通道進行遠程命令執行和下發配置。具有功能強大、系統管理靈活等特點。兩者都提供豐富的模板和API,對云計算、大數據都有很好的支持。

同類自動化工具GitHub關注程度(2016-07-10)

同類自動化工具

watch(關注)

star(點贊)

fork(復制)

Contributors(貢獻者)

Ansible

1387

17716

5356

1428

Puppet

463

4044

1678

425

Chef

383

4333

1806

464

Fabric

379

7334

1235

116

Ansible架構

Ansible初識

Ansible:Ansible核心程序。

HostLnventory:記錄由Ansible管理的主機信息,包括端口、密碼、ip等。

Playbooks:“劇本”YAML格式文件,多個任務定義在一個文件中,定義主機需要調用哪些模塊來完成的功能。

CoreModules:核心模塊,來完成管理任務。先調用此中的模塊,再指定HostLnventory中的主機來完成管理任務。

CustomModules:自定義模塊,完成核心模塊無法完成的功能,支持多種語言。

ConnectionPlugins:連接插件,做通信使用。

Ansible 工作機制

    Ansible 在管理節點將 Ansible 模塊通過 SSH 協議(或者 Kerberos、LDAP)推送到被管理端執 行,執行完之后自動刪除,可以使用 SVN 等來管理自定義模塊及編排

Ansible初識

1、管理端支持local 、ssh、zeromq 三種方式連接被管理端,默認使用基于ssh的連接---這部分對應基本架構圖中的連接模塊

2、可以按應用類型等方式進行Host Inventory(主機群)分類,管理節點通過各類模塊實現相應的操作---單個模塊,單條命令的批量執行,我們可以稱之為ad-hoc

3、管理節點可以通過playbooks 實現多個task的集合實現一類功能,如web服務的安裝部署、數據庫服務器的批量備份等。playbooks我們可以簡單的理解為,系統通過組合多條ad-hoc操作的配置文件 

Ansible初識

ansible的任務執行流程

(1)讀取配置

(2)抓取全量機器&分組列表

      可從多個靜態文件、文件夾、腳本中讀取機器,分組及其變關聯量信息。

(3)使用host-pattern過濾機器列表

(4)根據參數確定執行模塊和配置

       從modules目錄動態讀取,用戶可以自行開發模塊。

(5)Runner執行返回

       Connection環節定義連接方式 => Action階段機器列表(Lookup plugin Action變量/文件等資源的獲?。?/p>

       Callback plugin各階段的鉤子調用

(6)輸出結束

       Filter plugin過濾算子

       Callback plugin各階段的鉤子調用

Ansible特性:

(1)、Agentless(去中心化)

(2)、noserver:無服務器端,使用時直接運行命令即可

(3)、模塊化:調用特定模塊,完成特定任務,支持自定義模塊

(4)、yaml,notcode:使用yaml語言定制劇本playbook

(5)、sshbydefault:基于SSH工作

(6)、strongmulti-tiersolution:可實現多級指揮

(7)、冥等性

優點:

(1)、輕量級,無需在客戶端安裝agent,更新時,只需在操作機上進行一次更新即可;

(2)、批量任務執行可以寫成腳本,而且不用分發到遠程就可以執行;

(3)、使用python編寫,維護更簡單,ruby語法過于復雜;

(4)、支持sudo。

Ansible工作機制

Ansible初識

Ansble目錄結構圖:

Ansible初識

Ansible主要組成部分:

ANSIBLEPLAYBOOKS:任務劇本(任務集),編排定義Ansible任務集的配置文件,由Ansible順序依次執行,通常是JSON格式的YML文件

INVENTORY:Ansible管理主機的清單

MODULES:Ansible執行命令的功能模塊,多數為內置的核心模塊,也可自定義

PLUGINS:模塊功能的補充,如連接類型插件、循環插件、變量插件、過濾插件等,該功能不常用。

API:供第三方程序調用的應用程序編程接口

ANSIBLE:該部分圖中表示的不明顯,組合INVENTORY、API、MODULES、PLUGINS的綠框大家可以理解為是Ansible命令工具,其為核心執行工具

Ansible組件調用關系:

Ansible初識

自動化發布:

測試環境

Dev測試環境

測試環境

灰度環境

發布環境

生產環境

灰度發布

指在黑與白之間,能夠平滑過渡的一種發布方式ABtest就是一種灰度發布方式,讓一部分用戶繼續用A,一部分用戶開始用B,如果用戶對B沒有什么反對意見,那么逐步擴大范圍,把所有用戶都遷移到B上面來。灰度發布可以保證整體系統的穩定,在初始灰度的時候就可以發現、調整問題,以保證其影響

自動化發布:

發布機/Master/管理機/堡壘機

統一入口、規范管理

利用手機APP動態口令等驗證機制

托管服務器密碼,實現自動改密

事中控制,防止違規

操作精細化審計,追溯整個運維過程

目錄擺放規范簡述:

/srv/

/data/srv/

/web/

/app/

命名規范簡述

一級:項目名

二級:打包時間

三級:版本號

主版本號.子版本號[.修正版本號[.編譯版本號]]

四級:版本特性

示例webapp-201704041220-V1.0.10.0-Beta

webapp-201705051220-V1.1.12.0-Stable

Ansible初識

參考文檔:

http://www.ansible.com.cn/

http://docs.ansible.com/

https://www.ansible.com/

https://github.com/ansible/ansible

原創文章,作者:Linux.rookie,如若轉載,請注明出處:http://www.www58058.com/79474

(0)
Linux.rookieLinux.rookie
上一篇 2017-07-08 15:08
下一篇 2017-07-08 15:50

相關推薦

  • linux 系統日志管理

         在linux系統上面,系統可以記錄從開機到當前系統上面何時發生了那些事情,并將其分類,分級別寫到特定的日志文件當中,如系統自身產生的問題,用戶登錄信息,網絡數據信息等等。我們可以根據這些日志信息來解決系統方面的錯誤,網絡服務問題等等。日志對于安全來說,非常重要,它記錄了系統每天發生的各種各樣的事情,你可以通過它來檢查錯…

    2017-08-14
  • 0808文本處理作業

                           1 、刪除/etc/grub2.conf 文件中所有以空白開頭的行行首的空白字符。 答:sed  ‘@^[[:space]]\+@@’  /etc/grub2/cf…

    Linux干貨 2016-08-11
  • 用戶及權限管理

     今天是學習馬哥教育第四天,也是第一個博客作業,寫一篇關于用戶及權限管理的簡介型的博客文章,作文水品有限,所以寫出來有可能有病句或者意境有問題,請大家多多包涵。  首先,用戶及權限管理,需要從2方面入手來說,首先來說用戶管理。  何謂用戶,這是馬哥一上來就提到的問題,我簡單的理解,用戶其實就是一個人機交互的接口,人機交互的接口是…

    Linux干貨 2016-09-15
  • Linux 性能監控、測試、優化工具

    Linux 平臺上的性能工具有很多,眼花繚亂,長期的摸索和經驗發現最好用的還是那些久經考驗的、簡單的小工具。系統性能專家 BrendanD. Gregg 在最近的 LinuxCon NA 2014 大會上更新了他那個有名的關于 Linux 性能方面的 talk (Linux Performance Tools) 和幻燈片。    和 Br…

    Linux干貨 2015-03-03
  • HA cluster原理

    HA cluster 一、什么是高可用集群   高可用集群就是當某一個節點或服務器發生故障時,另一個節點能夠自動且立即向外提供服務,即將有故障節點上的資源轉移到另一個節點上去,這樣另一個節點有了資源既可以向外提供服務。高可用集群是用于單個節點發生故障時,能夠自動將資源、服務進行切換,這樣可以保證服務一直在線。在這個過程中,對于客戶端來說是透明的。 …

    2016-11-27
  • N22-冥界之王-第7周作業

    1、創建一個10G分區,并格式為ext4文件系統;   (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;       在虛擬機里新添加一塊磁盤20G,/dev/sdb     &…

    Linux干貨 2016-09-26
欧美性久久久久