1. 程式人生 > >Ansible中Roles的實戰使用

Ansible中Roles的實戰使用

ansible roles 菜雞日常

項目實現功能
用playbook調用roles實現編譯安裝httpd服務
使用rools搭建,代碼復用,便於日常維護管理

1. 在服務器端生成公鑰,將公鑰文件導入到客戶端主機

    註:同步過程需要輸入yes和各自的root密碼即可;
    完成後可直接ssh [email protected] 就可以無密碼登錄上去了
        ssh-keygen  -P "" -f "/root/.ssh/id_rsa"
        ssh-copy-id 192.168.109.142
        ssh-copy-id 192.168.109.143

2. 配置ansible的主機清單,即把node1與node2主機添加到管理清單中

    egrep -v ‘(^$|^#)‘ /etc/ansible/hosts
    [websrvs]
    192.168.109.143
    192.168.109.142 
        上述基本環境搭建完成

3. 構建roles框架

此處因之前測試文件名沖突 文件夾命名為APP

技術分享圖片
4. 配置每個功能模塊

    註:模塊裏面調用關系為相對路徑,,相對於roles文件目錄下

①定義handlers觸發器規則

            註意handlers裏定義的規則,命名為main.yml
            vim handlers/main.yml
                - name: restart service                                #指定觸發器名稱
                service: name=httpd state=restarted                  #觸發條件後實現的功能

②將後續需要用到的文件復制到roles存放文件目錄下

            cp /etc/httpd/conf/httpd.conf /data/ansible/roles/app/files/vhosts.conf

③定義模板文件(變量,循環,條件測試(when),叠代(with_items))

            此處示例:定義httpd服務屬主,屬組為變量

技術分享圖片

④定義變量的值(供roles模板文件調用)

    vim vars/main.yml
        username: app                   #賦值給模板文件裏定義的變量
        groupname: apps                 #賦值給模板文件裏定義的變量  

⑤配置每個task文件


vim tasks/group.yml
        - name: create group            #模塊功能名稱
        group: name=app system=yes    #創建APP組 設置為系統組  

vim tasks/user.yml
        - name: create user     #模塊功能名稱
            #創建app用戶 屬組為app 指定為系統用戶 指定shell類型 
            user: name=app group=app system=yes shell=/sbin/nologin

vim tasks/yum.yml
        - name: install package         #模塊功能名稱
            yum: name=httpd               #安裝httpd服務包

vim tasks/templ.yml
        - name: copy conf               #模塊功能名稱
            #指定調用的模塊模板 復制到遠程主機的絕對路徑
            template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
            #調用觸發條件,此處設置為配置文件更改後重啟服務 
            notify: restart service

vim tasks/copyfile.yml
        - name: copy conf       #模塊功能名稱
            #指定本機文件   復制到遠程主機的絕對路徑    修改文件所有者(屬主)為app復制並備份原文件  
            copy: src=vhosts.conf dest=/etc/httpd/conf.d/vhosts.conf owner=app backup=yes

vim tasks/start.yml
        - name: start service           #模塊功能名稱
            #指定服務名稱 開啟服務 開機自動啟動服務  
            service: name=httpd state=started enabled=yes

5. 設置task執行順序

    註:  定義執行順序文件,命名規則為main.yml
             需寫在tasks對應目錄下,方便後續系統調用
    vim tasks/main.yml
        - include : group.yml                   #創建組
        - include : user.yml                    #創建用戶
        - include : yum.yml                     #安裝服務包
        - include : templ.yml                   #執行模板文件
        - include : copyfile.yml                #復制文件到管理主機 
        - include : start.yml                   #開啟服務  .

6. 指定playbook(劇本文件)調用roles文件夾

    註:(playbook)劇本文件和roles角色文件夾屬於平級關系
    vim app_role.yml
        - hosts: websrvs        #指定管理的主機IP
            remote_user: root     #指定用什麽身份管理
            roles:
                - role: app         #指定執行某個服務集合 

7. 調試,檢測是否有錯誤

    ansible-playbook -C app_role.yml

技術分享圖片

8. 使用ansible-playbook執行劇本文件

    ansible-playbook  app_role.yml

Ansible中Roles的實戰使用