1. 程式人生 > >ansible 安裝部署文件

ansible 安裝部署文件

1、簡介 ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。ansible是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所執行的模組,ansible只是提供一種框架。主要包括: (1)、連線外掛connection plugins:負責和被監控端實現通訊; (2)、host inventory:指定操作的主機,是一個配置檔案裡面定義監控的主機; (3)、各種模組核心模組、command模組、自定義模組;
(4)、藉助於外掛完成記錄日誌郵件等功能; (5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性執行多個任務。 2、總體架構   3、特性 (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:可實現多級指揮。 4、優點 (1)、輕量級,無需在客戶端安裝agent,更新時,只需在操作機上進行一次更新即可; (2)、批量任務執行可以寫成指令碼,而且不用分發到遠端就可以執行; (3)、使用python編寫,維護更簡單,ruby語法過於複雜; (4)、支援sudo。

5、準備工作

centos7.5 ansible-manage

centos7.5 master

centos7.5 node1

centos7.5 node2

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

禁用selinux :setenforce 0 臨時關閉

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

下載epel擴充套件源:yum install -y epel-release

 


 

6、安裝ansible:

yum install ansible -y 

這裡預設安裝的是ansible2.7

修改配置檔案 vim /etc/ansible/hosts 新增主機組

7、ssh免祕鑰登入配置

生成金鑰檔案:ssh-keygen -t dsa -f ~/.ssh/id_dsa -P ""

與各主機免密登陸:ssh-copy-id -i ~/.ssh/id_dsa.pub [email protected]192.168.175.144等

8、測試ansible

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

ansible 常用模組介紹

1、Command 模組

    作用:在遠端主機執行命令

         示例:ansible web -a "ls /root" #省略模組不寫預設為command模組

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

2、shell模組

    作用:在遠端主機在shell程序下執行命令,支援shell特性,如管道等。

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

3、copy模組

    作用:在遠端主機執行賦值操作檔案

         示例:

    (1)        src=  dest=

    (2)        content=   dest= #content生成字元到目標檔案

    其他 owner,group, mode (mode#修改許可權)

        [[email protected]_1~]# ansible web -m copy -a "src=/etc/fstab dest=/apps/test"

         [[email protected]_1~]# ansible web -m copy -a"content='hello world1' dest=/apps/test"

         [[email protected]_1 ~]# ansible web -m copy-a "content='hello world1' mode=777 dest=/apps/test1"

        

4、cron模組

         作用:主要是用來對定時任務進行排程

         引數:

    name=               任務的描述

    minute=           分

    day=                   天

    weekday=          周

    hour=                 時

    Month                月

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

    state=                狀態

            present:建立

            absent:刪除       

 

5、fetch模組

    作用:fetches a file from remotenodes         (獲取遠端節點檔案)

 

6、file模組

    作用:sets attributes of files( 設定檔案的屬性)

    用法:

    (1)    建立連結檔案:*path=  src= state=link

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

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

 

 7、filesystem模組

    作用:Makes file system on block device   能夠在塊裝置上建立檔案系統(慎用)

8、hostname模組

    作用:管理主機名稱

9、pip模組

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

10、yum模組

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

         引數:

        name=    程式包名稱,可以帶版本號

       state=        狀態

                present,latest   目前/最新版本

                installed  安裝

       conf_file:指定yum配置檔案

          示例:[[email protected]_1 ~]# ansibleweb -m yum -a "name=httpd state=latest"

 

11、service 模組

    作用:管理服務

         引數

       name=       服務名稱

       state=        狀態

                started       啟動

                stopped      停止

                            restarted    重啟

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

                            runlevel=             執行級別

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

    不要使用這個模組了。

 

12、user 模組

    作用:管理使用者帳號

    引數:

                  name=                 使用者名稱

                  state=                  狀態

                  system=   [yes|no]    是否為系統使用者

                  shell=  預設shell型別       指定shell

                  uid=                     指定UID

                  home=                 指定家目錄

group=                 指定屬組

groups=               指定附加組

comment=          描述資訊

13、script模組

執行指令碼 (執行的是本地的指令碼將其複製到遠端在執行)

                   -a “/PATH/TO/SCRIPT_FILE” 會在遠端自動給予許可權並執行

14、Template模組

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

                   backup=     備份

                   src=            原始檔

                   dest=          目標路徑

                   owner=      屬主

                   group=       主組

                   mode=       許可權

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