Ansible(一)-基本架構、原理及功能

    Ansible 是一個模型驅動的配置管理器,支持多節點發布、遠程任務執行。默認使用 SSH 進行遠程鏈接。無需在被管理節點上安裝附加軟件,可以使用各類編程語言進行擴展。html


1、Ansible基本架構python

wKiom1hYzT6zRb__AABxFu2ZbzY114.png

上圖爲ansible的基本架構,從上圖能夠了解到其由如下部分組成:
web

  • 核心:ansibledocker

  • 核心模塊(Core Modules):這些都是ansible自帶的模塊 數據庫

  • 擴展模塊(Custom Modules):若是核心模塊不足以完成某種功能,能夠添加擴展模塊編程

  • 插件(Plugins):完成模塊功能的補充centos

  • 劇本(Playbooks):ansible的任務配置文件,將多個任務定義在劇本中,由ansible自動執行bash

  • 鏈接插件(Connectior Plugins):ansible基於鏈接插件鏈接到各個主機上,雖然ansible是使用ssh鏈接到各個主機的,可是它還支持其餘的鏈接方法,因此須要有鏈接插件服務器

  • 主機羣(Host Inventory):定義ansible管理的主機網絡


2、ansible工做原理

wKiom1hYza7jE8C1AAClqRPdzvc083.png

wKioL1hYza-h3UWQAAI4rLjmR2k466.png

    以上是從網上找到的兩張ansible工做原理圖,兩張圖基本都是在架構圖的基本上進行的拓展。從上面的圖上能夠了解到:

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

二、能夠按應用類型等方式進行Host Inventory(主機羣)分類,管理節點經過各種模塊實現相應的操做---單個模塊,單條命令的批量執行,咱們能夠稱之爲ad-hoc;

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


3、ansible的七個命令
    安裝完ansible後,發現ansible一共爲咱們提供了七個指令:ansible、ansible-doc、ansible-galaxy、ansible-lint、ansible-playbook、ansible-pull、ansible-vault 。這裏咱們只查看usage部分,詳細部分能夠經過 "指令 -h"  的方式獲取。

一、ansible 

    ansible是指令核心部分,其主要用於執行ad-hoc命令,即單條命令。默認後面須要跟主機和選項部分,默認不指定模塊時,使用的是command模塊。如:ansible 192.168.0.102 -a 'date',不過默認使用的模塊是能夠在ansible.cfg 中進行修改的。

二、ansible-doc

該指令用於查看模塊信息,經常使用參數有兩個-l 和 -s

#列出全部已安裝的模塊
ansible-doc  -l
#查看具體某模塊的用法,這裏如查看command模塊
ansible-doc  -s command

三、ansible-galaxy

    ansible-galaxy 指令用於方便的從https://galaxy.ansible.com/ 站點下載第三方擴展模塊,咱們能夠形象的理解其相似於centos下的yum、python下的pip或easy_install 。以下示例:ansible-galaxy install aeriscloud.docker

    這個安裝了一個aeriscloud.docker組件,前面aeriscloud是galaxy上建立該模塊的用戶名,後面對應的是其模塊。在實際應用中也能夠指定txt或yml 文件進行多個組件的下載安裝。這部分能夠參看官方文檔

四、ansible-lint

    ansible-lint是對playbook的語法進行檢查的一個工具。用法是ansible-lint playbook.yml 。

五、ansible-playbook

    該指令是使用最多的指令,其經過讀取playbook 文件後,執行相應的動做,這個後面會作爲一個重點來說。

六、ansible-pull

    該指令使用須要談到ansible的另外一種模式---pull 模式,這和咱們日常常常用的push模式恰好相反,其適用於如下場景:你有數量巨大的機器須要配置,即便使用很是高的線程仍是要花費不少時間;你要在一個沒有網絡鏈接的機器上運行Anisble,好比在啓動以後安裝。這部分也會單獨作一節來說。

七、ansible-vault

ansible-vault主要應用於配置文件中含有敏感信息,又不但願他能被人看到,vault能夠幫你加密/解密這個配置文件,屬高級用法。主要對於playbooks裏好比涉及到配置密碼或其餘變量時,能夠經過該指令加密,這樣咱們經過cat看到的會是一個密碼串類的文件,編輯的時候須要輸入事先設定的密碼才能打開。這種playbook文件在執行時,須要加上 --ask-vault-pass參數,一樣須要輸入密碼後才能正常執行。具體該部分能夠參查官方博客


注:上面七個指令,用的最多的只有兩個ansible 和ansible-playbook ,這兩個必定要掌握,其餘五個屬於拓展或高級部分。

相關文章
相關標籤/搜索