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上面來?;叶劝l布可以保證整體系統的穩定,在初始灰度的時候就可以發現、調整問題,以保證其影響

自動化發布:

發布機/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
下一篇 2017-07-08

相關推薦

  • 20160804作業

    查出分區空間使用率的最大百分比值 查出用戶UID最大值的用戶名、UID及shell類型 查出/tmp的權限,以數字方式顯示 統計當前連接本機的每個遠程主機IP的連接數,并按從大到小排序 利用擴展正則表達式分別表示0-9、10-99、100-199、200-249、250-255        &nb…

    Linux干貨 2016-08-08
  • 第五周作業

    博客具體內容請移步博客園http://www.cnblogs.com/wangenzhi/p/6235456.html

    Linux干貨 2016-12-30
  • sed命令使用

    一、sed簡介    sed是一種在線編輯器,一次處理一行內容。處理時,把當前處理的行存儲在歷史緩沖區,傳給“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非使用重定向存儲輸出。sed主要用來自動編輯一個或…

    Linux干貨 2016-08-12
  • Python入門之迭代,列表解析,生成器及文件操作

    迭代器是訪問集合元素的一種方式,迭代器包含了__iter__()(返回迭代器對象本身)next()(返回迭代器的下一個元素)迭代器只能往前不會退后 以下類型支持迭代 序列類型:list,str,tuple 非序列類型:dict,file 自定義類 通過內建的函數iter()或對象自帶方法__iter__可以獲取迭代器對象 l1=range(5) iter1=…

    Linux干貨 2015-12-13
  • LVS詳解

    概述     LVS是工作在4層的負載均衡調度器,可根據請求報文的目標IP和目標協議及端口,根據指定的調度算法,將請求調度轉發至某RealServer,本篇就針對LVS的原理,配置和使用進行簡單介紹,具體包含:     1、LVS的四種類型的介紹   &nbs…

    Linux干貨 2016-10-27
  • 文件的權限詳解(二)ACL篇

    文件的權限詳解(二)ACL篇 ACL訪問控制列表作用: 1、 ACL:Access Control List,實現靈活的權限管理2、 除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限3、 CentOS7.0默認創建的xfs和ext4文件系統有ACL功能。4、 CentOS7.X之前版本,默認手工創建的ext4文件系統無ACL功能。需手動增加: tu…

    Linux干貨 2016-08-05
欧美性久久久久