ansible 安裝部署文檔

一、簡介
ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、cfengine、chef、func、fabric)的優勢,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基於模塊工做的,自己沒有批量部署的能力。真正具備批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:
(1)、鏈接插件connection plugins:負責和被監控端實現通訊;
(2)、host inventory:指定操做的主機,是一個配置文件裏面定義監控的主機;
(3)、各類模塊核心模塊、command模塊、自定義模塊;
(4)、藉助於插件完成記錄日誌郵件等功能;
(5)、playbook:劇本執行多個任務時,非必需可讓節點一次性運行多個任務。
二、整體架構
 

 

三、特性
(1)、no agents:不須要在被管控主機上安裝任何客戶端;
(2)、no server:無服務器端,使用時直接運行命令便可;
(3)、modules in any languages:基於模塊工做,可以使用任意語言開發模塊;
(4)、yaml,not code:使用yaml語言定製劇本playbook;
(5)、ssh by default:基於SSH工做;
(6)、strong multi-tier solution:可實現多級指揮。
四、優勢
(1)、輕量級,無需在客戶端安裝agent,更新時,只需在操做機上進行一次更新便可;
(2)、批量任務執行能夠寫成腳本,並且不用分發到遠程就能夠執行;
(3)、使用python編寫,維護更簡單,ruby語法過於複雜;
(4)、支持sudo。

五、準備工做css

centos7.5 ansible-managenode

centos7.5 masterpython

centos7.5 node1linux

centos7.5 node2web

關閉防火牆 :systemctl stop firewalld && systemctl disable firewalldshell

禁用selinux :setenforce 0 臨時關閉vim

                    sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinuxcentos

下載epel擴展源:yum install -y epel-releaseruby

 


 

六、安裝ansible:服務器

yum install ansible -y 

這裏默認安裝的是ansible2.7

修改配置文件 vim /etc/ansible/hosts 添加主機組

七、ssh免祕鑰登陸配置

生成密鑰文件:ssh-keygen -t dsa -f ~/.ssh/id_dsa -P ""

與各主機免密登錄:ssh-copy-id -i ~/.ssh/id_dsa.pub root@192.168.175.144等

八、測試ansible

ping各主機狀態:ansible test -m ping

ansible 經常使用模塊介紹

一、Command 模塊

    做用:在遠程主機運行命令

         示例:ansible web -a "ls /root" #省略模塊不寫默認爲command模塊

    注意:該模塊不支持一些特殊符號如`"<"', `">"', `"|"',`";"' and `"&"等如需利用這些符號需使用shell模塊。

二、shell模塊

    做用:在遠程主機在shell進程下運行命令,支持shell特性,如管道等。

         示例:ansible web -m shell -a "echo 123456|passwd --stdin wang"

三、copy模塊

    做用:在遠程主機執行賦值操做文件

         示例:

    (1)        src=  dest=

    (2)        content=   dest= #content生成字符到目標文件

    其餘 owner,group, mode (mode#修改權限)

        [root@centos7_1~]# ansible web -m copy -a "src=/etc/fstab dest=/apps/test"

         [root@centos7_1~]# ansible web -m copy -a"content='hello world1' dest=/apps/test"

         [root@centos7_1 ~]# ansible web -m copy-a "content='hello world1' mode=777 dest=/apps/test1"

        

四、cron模塊

         做用:主要是用來對定時任務進行調度

         參數:

    name=               任務的描述

    minute=           分

    day=                   天

    weekday=          周

    hour=                 時

    Month                月

    job=                    須要執行的命令,必須狀態爲present

    state=                狀態

            present:建立

            absent:刪除       

 

五、fetch模塊

    做用:fetches a file from remotenodes         (獲取遠程節點文件)

 

六、file模塊

    做用:sets attributes of files( 設置文件的屬性)

    用法:

    (1)    建立連接文件:*path=  src= state=link

    (2)    修改屬性 : path=  owner= mode= grup=

    (3)    建立目錄:path= state=directory

 

 七、filesystem模塊

    做用:Makes file system on block device   可以在塊設備上建立文件系統(慎用)

八、hostname模塊

    做用:管理主機名稱

九、pip模塊

     做用:Manages Python librarydependencies.  #管理Python庫依賴項。

十、yum模塊

    做用:Manages packages with the`yum' package manager  #使用`yum'軟件包管理器管理軟件包

         參數:

        name=    程序包名稱,能夠帶版本號

       state=        狀態

                present,latest   目前/最新版本

                installed  安裝

       conf_file:指定yum配置文件

          示例:[root@centos7_1 ~]# ansibleweb -m yum -a "name=httpd state=latest"

 

十一、service 模塊

    做用:管理服務

         參數

       name=       服務名稱

       state=        狀態

                started       啓動

                stopped      中止

                            restarted    重啓

                            enabled=    [yes|no] 是否隨系統啓動

                            runlevel=             運行級別

    示例:ansible web -m service -a"name=httpd state=started enabled=yes runlevel=5" #記得針對Centos7就

    不要使用這個模塊了。

 

十二、user 模塊

    做用:管理用戶賬號

    參數:

                  name=                 用戶名

                  state=                  狀態

                  system=   [yes|no]    是否爲系統用戶

                  shell=  默認shell類型       指定shell

                  uid=                     指定UID

                  home=                 指定家目錄

group=                 指定屬組

groups=               指定附加組

comment=          描述信息

1三、script模塊

執行腳本 (執行的是本地的腳本將其複製到遠程在執行)

                   -a 「/PATH/TO/SCRIPT_FILE」 會在遠程自動給予權限並運行

1四、Template模塊

    基於模板方式生成一個文件複製到遠程主機(template使用Jinjia2格式做爲文件模版,進行文檔內變量的替換的模塊。它的每次使用都會被ansible標記爲」changed」狀態。)下一章節由詳細應用介紹。

                   backup=     備份

                   src=            源文件

                   dest=          目標路徑

                   owner=      屬主

                   group=       主組

                   mode=       權限

下一章節準備 介紹ansible-playbook的使用  敬請期待!!!

相關文章
相關標籤/搜索