001. Ansible簡介

一 簡介

Ansible是一款極其簡單的自動化運維工具, 基於Python開發, 集合了衆多運維工具(puppet, cfengine, chef, func, fabric)的優勢。 實現了批量系統配置, 批量程序部署, 批量運行命令等功能。python

Ansible是基於模塊工做的, 自己沒有批量部署的能力。真正具備批量部署的是ansible所運行的模塊, Ansible只是提供一種框架。主要包括:安全

001

  1. Play books:任務劇本(任務集),編排定義Ansible任務集的配置文件,由Ansible依次執行多個任務,一般是JSON格式的YML文件;
  2. Host inventory: Ansible管理主機的清單,指定操做的主機, 是一個配置文件裏面定義監控的主機;
  3. Modules:各類模塊核心模塊, command模塊等,也包括自定義模塊;
  4. Connection plugins: 負責和被監控端實現通訊;
  5. Plugins:模塊功能的補充,如鏈接類型插件、循環插件、變量插件等,可藉助於插件完成更豐富的功能。

二 工做機制

 

  1. 002用戶使用Ansible或Playbook,在服務器中斷輸入Ansible的Ad-Hoc命令集或Playbook;
  2. Ansible遵循預先編排的規則將Playbooks逐條拆解爲Play;
  3. Play組織成Ansible可識別的任務(Task);
  4. Task會調用任務所涉及的全部模塊(Module)和插件(Plugin);
  5. 讀取Inventroy中定義的主機列表;
  6. 經過SSH認證(默認)將任務集以臨時文件或命令的形式傳輸到遠程客戶端執行並返回執行結果。

三 特性

  1. no agents: 不須要在被管控主機上安裝任何客戶端,只需SSH、Python便可,建議Python版本爲2.6.6以上;
  2. no server: 無服務器端, 使用時直接運行命令便可;
  3. modules in any languages: 基於模塊工做, 豐富的內置模塊,可以使用任意語言開發模塊;
  4. yaml, not code: 使用yaml語言定製劇本playbook,易於管理,API簡單明瞭;
  5. ssh by default: 基於SSH工做,整個過程簡單、方便、安全,建議使用公鑰方式認證;
  6. strong multi-tier solution: 可實現多級指揮。

四 優勢

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

    (2).批量任務執行能夠寫成腳本, 並且不用分發到遠程就能夠執行;服務器

    (3).使用python編寫, 維護更簡單, ruby語法過於複雜;框架

    (4).支持sudo。運維

五 應用場景

5.1 操做角度劃分

  • 文件傳輸:文件的本地傳輸和異地傳輸,全部文件的空間形態、時間形態變化均構成文件傳輸類操做;
  • 命令執行:終端全部操做對系統來講都是指令的組成,對運維操做的用戶行爲來講,除文件傳輸之外的其餘操做都可稱爲命令操做。

5.2 工做類型劃分

  1. 應用部署
  2. 配置管理
  3. 任務流編排
相關文章
相關標籤/搜索