1. 程式人生 > >Linux下的自動化運維ansible工具

Linux下的自動化運維ansible工具

使用 輕量級 工具輕松

什麽是自動化運維


    隨著信息時代的持續發展,IT運維已經成為IT服務內涵中重要的組成部分。面對越來越復雜的業務,
面對越來越多樣化的用戶需求,不斷擴展的IT應用需要越來越合理的模式來保障IT服務能靈活便捷、安
全穩定地持續保障,這種模式中的保障因素就是IT運維(其他因素是更加優越的IT架構等)。從初期的
幾臺服務器發展到龐大的數據中心,單靠人工已經無法滿足在技術、業務、管理等方面的要求,那麽標
準化、自動化、架構優化、過程優化等降低IT服務成本的因素越來越被人們所重視。其中,自動化最開始作為代替人工操作為出發點的訴求被廣泛研究和應用。
   IT運維從誕生發展至今,自動化作為其重要屬性之一已經不僅僅只是代替人工操作,更重要的是深
層探知和全局分析,關註的是在當前條件下如何實現性能與服務最優化,同時保障投資收益最大化。自
動化對IT運維的影響,已經不僅僅是人與設備之間的關系,已經發展到了面向客戶服務驅動IT運維決策
的層面,IT運維團隊的構成,也從各級技術人員占大多數發展到業務人員甚至用戶占大多數的局面。
   因此,IT運維自動化是一組將靜態的設備結構轉化為根據IT服務需求動態彈性響應的策略,目的就
是實現IT運維的質量,降低成本。可以說自動化一定是IT運維最高層面的重要屬性之一,但不是全部。

什麽是ansible


  ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、
chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。可以實現
多臺服務器的配置,在多臺服務器上同時執行統一個命令。


ansible的框架

技術分享

> host inventory:定義被ansible操作的主機列表
> connection plugins:負責監控被操作主機與被操作主機之間通信
> playbook:定義ansible的任務
> plugins:拓展模塊,主要用來完成日誌,郵件等功能
> 核心模塊,自定義模塊:主要用於執行命令12345671234567


下載並安裝ansible


 1. 下載ansible
 [[email protected] ~]# wget http://releases.ansible.com/ansible/ansible-2.3.2.0-0.4.rc4.tar.gz
 2. 安裝ansible
    [[email protected]
/* */ ~]# tar -xzf ansible-2.3.2.0-0.4.rc4.tar.gz [[email protected] ~]# cd ansible-2.3.2.0 [[email protected] ~]# python setup.py build [[email protected] ~]# python setup.py install 3. 裝備配置文件 [[email protected] ~]# mkdir /etc/ansible [[email protected] ~]# cp -r examples/* /etc/ansible/


hosts配置文件


格式:
    [webservers]                 //主機組名字
        alpha.example.org
        beta.example.org
        192.168.1.100
        192.168.1.110


ansible命令


 1. 格式:
    ansible <host-pattern> [-f forks] [-m module_name] [-a args] 
 2. 詳細參數:
    host-pattern:配置文件定義的主機群名    
    -f gorks:級別,默認為5
    -m:指定要使用的核心模塊,默認為command模塊    
    -a:指定模塊參數 
 3. 替他命令:
    ansible -l:用來查看ansible所支持的模塊
    ansible-doc -s module_name:用來查看某一個模塊所支持的參數


使用ansible命令實現遠程shell執行


host文件
技術分享


目標機
技術分享


ansible主機
[[email protected] ~]# ssh-keygen
[[email protected] ~]# ssh-copy-id [email protected]
技術分享


[[email protected] ~]# ansible install_httpd -m shell -a “yum -y install httpd”
技術分享


目標機
技術分享

使用yaml語法定義多任務


 1. 文件定義格式:
     Task_set.yaml           (文件後綴.yaml) 
 2. 文本內容格式:
     - hosts:hosts_name           //定義在hosts文件中的主機名
        remote_user: root          //運行此次任務的用戶
        tasks:                   ///應以任務
         - name:taks_name       //任務名稱
            moudule_name:args[1]=? args[2]=? .... //參數,即命令中-a 對應的選項
            ignore_errors:True   //忽略錯誤
            notify:               //若沒有改變不會發生以下事件
             - handerls_name
       handlers:             //實現在變化發生完成後一次性地執行指定操作,
如:改變配置文件後從新啟動服務。
        - name: handerls_name          module:args
    *註*:一個主機集可以對應多個任務,一個.yaml文件可以含有多個主機集 
 3. 文本內容運行命令:
    [[email protected] ~]#  ansible-playbook file.yam

測試
技術分享

技術分享


Linux下的自動化運維ansible工具