1. 程式人生 > >001. Ansible簡介

001. Ansible簡介

一 簡介

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

Ansible是基於模組工作的, 本身沒有批量部署的能力。真正具有批量部署的是ansible所執行的模組, Ansible只是提供一種框架。主要包括:

01

  1. Play books:任務劇本(任務集),編排定義Ansible任務集的配置檔案,由Ansible依次執行多個任務,通常是JSON格式的YML檔案;
  2. Host inventory: Ansible管理主機的清單,指定操作的主機, 是一個配置檔案裡面定義監控的主機;
  3. Modules:各種模組核心模組, command模組等,也包括自定義模組;
  4. Connection plugins: 負責和被監控端實現通訊;
  5. Plugins:模組功能的補充,如連線型別外掛、迴圈外掛、變數外掛等,可藉助於外掛完成更豐富的功能。

二 工作機制

02

  1. 使用者使用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, 更新時只需在操作機上進行一次更新即可;

    (2).批量任務執行可以寫成指令碼, 而且不用分發到遠端就可以執行;

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

    (4).支援sudo。

五 應用場景

5.1 操作角度劃分

檔案傳輸:檔案的本地傳輸和異地傳輸,所有檔案的空間形態、時間形態變化均構成檔案傳輸類操作;

命令執行:終端所有操作對系統來說都是指令的組成,對運維操作的使用者行為來說,除檔案傳輸以外的其他操作均可稱為命令操作。

5.2 工作型別劃分

  1. 應用部署
  2. 配置管理
  3. 任務流編排