Ansible(1)- 簡單介紹


什么是 Ansible

  • 開源部署工具,也是一個自動化運維工具
  • 開發語言:Python

 

Ansible 的特性

  • 模塊化部署管理:調用特定的模塊,完成特定任務
  • 三個關鍵模塊:Paramiko(python 對 ssh 的實現),PyYAML,Jinja2(模板語言)
  • 安全:基於 OpenSSH 協議通訊
  • 跨平台:支持 Linux、Win、UNIX、物理機、虛擬機、雲平台、網絡 
  • 部署簡單,無需編譯:基於 Python 和 SSH(默認已裝),agentless(免代理),無需代理不依賴 PKI(無需 SSL)
  • 支持自定義模塊:支持任何編程語言編寫模塊(二次開發)
  • 冪等性:一個任務執行一遍和執行 n 遍的結果是一樣的,不因重復執行而帶來意外情況
  • 支持 playbook 編排任務,YAML 語法格式,編排任務,支持豐富的數據結構
  • 強大的多層解決方案 role
  • 支持異構 IT 架構

 

Ansible 的應用場景

  • 批量修改系統配置
  • 批量程序部署
  • 批量運行命令

 

Ansible、Cherf、Saltstack 的不同

Saltstack

  • Ruby 語言編寫
  • C/S架構
  • 配置需要 Git 依賴
  • Recipe 腳本編寫規范,需要 Ruby 編程經驗

 

Saltstack

  • Python 語言編寫
  • C/S架構
  • 模塊化配置管理
  • YAML 腳本編寫規范
  • 適合大規模集群部署

 

Ansible

  • Python 語言編寫
  • 無 Client
  • 模塊化配置管理
  • Playbook 腳本編寫規范
  • 易於上手,適合中小規模快速部署

 

Ansible 最大的優勢

  • 符合最近幾年流行的敏捷開發流程,快速開發快速部署交付
  • 我們需要有高效、敏捷的部署工具,加快產品交付
  • 兼容主流雲計算下所有用到的基礎工具

 

Ansible 的架構

  • ANSIBLE PLAYBOOKS :任務劇本,編排定義 Ansible 任務集的配置文件,由 Ansible 順序執行,通常為 json 格式的 YAML 文件
  • INBENTORY:需要 Ansible 管理主機的清單列表  /etc/anaible/hosts 
  • MODULES:Ansible 的執行命令的功能模塊,多數為內置核心模塊,也可以自定義
  • PLUGINS:模塊功能補充,比如鏈接類型插件、循環插件、變量插件、過濾插件等,不常用
  • API:供第三方程序調用的應用程序編程接口
  • HOSTS:待 Ansible 管理的主機集
  • NETWORKING:網絡

它們互相之間都是通過 SSH 互相調用

 

Ansible 命令執行來源

  • USERS:普通用戶
  • PLAYBOOKS:任務劇本
  • CMDB:配置管理數據庫,通過 API 調用
  • PUBLIC/PRIVATE CLOUD:公有雲、私有雲,通過 API 調用

 

Ansible 的概念

Control node

控制節點

  • 可以是任何安裝了 Ansible 的計算機,但不能是 Window 系統
  • 可以從任意控制節點運行命令和 playbook,然后調用  /usr/bin/ansible 或  /usr/bin/ansible-playbook 
  • 可以將任何安裝了 Python 的計算機作為控制節點,比如筆記本電腦、台式機、服務器

 

Managed nodes

受管節點

  • 受管節點不需要安裝 Ansible
  • 它可以是通過 Ansible 管理的網絡設備或服務器
  • 它也可以稱為 hosts(主機)

 

Inventory

清單

  • 需要 Ansible 管理的主機清單
  • 它也可以稱為 hostfile(主機文件)
  • 它有多種方式去管理組織主機的信息

 

Modules

模塊

  • 執行代碼單元
  • 在 python 中,一個模塊是一個 .py 文件,這里也可以這樣理解,每個模塊都會有特定的功能
  • 可以通過 task 調用單個模塊,也可以通過 playbook 調用多個不同的模塊
  • Ansible 目前有 3000+ 個模塊

 

Tasks

任務 

  • 行動單元
  • 可以使用臨時命令(ad-hoc)每次執行一個任務

 

Playbooks

劇本(直譯)

  • 保存任務的有序列表,方便可以按順序重復運行這些任務(復用性)
  • playbook 可以包括變量、任務
  • 采用 YAML 語法格式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM