ansible中roles的簡單使用


一.初識roles

  上節中我們已經了解了playbook,詳見  https://www.cnblogs.com/wangtaobiu/p/10691689.html

  當我們在配置playbook時會發現它會越來越龐大,所有的tasks,handles,templates等任務或文件都寫在一個yml文件中,這樣在修改中難免會浪費時間,顯得缺乏條理性.而roles的出現剛好解決了這一問題.

  roles的特點 : 目錄結構清晰.在使用roles的時候,我們會將不同的任務放在不同的目錄下,結構一目了然,在修改的過程中也更方便尋找.

        可以相互調用.在roles中,所有的任務和文件都可以自由調用,通過import或include方法,可以將要執行的任務導入一個文件中,使roles在實現playbook功能的情況下更有條理性.下邊是roles目錄下安裝nginx的目錄結構 :

nginx/
├── files     存放靜態的文件
│   └── fstab
├── handlers  存放需要觸發的任務,里面必須main.yml文件
│   └── main.yml
├── tasks     存放的執行的任務 ,里面必須main.yml文件
│   ├── copyfile.yml
│   ├── install.yml
│   ├── main.yml
│   └── start.yml
├── templates 存放的模板文件
│   ├── centos6.conf
│   └── nginx.conf
└── vars      存放的是參數,里面必須main.yml文件
    └── main.yml  

  從上圖中可以看出handles,tasks,vars文件需要用main.yml文件來觸發任務,而且針對Contos的不同版本做了相應的判斷,所有任務一目了然.

二.roles入口文件設置

  當我們把roles中所有的任務都配置好以后,最后就需要在roles同級的目錄下設置入口文件.入口文件的設置最好以任務名命名,方便識別.例如上邊的例子中入口文件可以命名為nginx.yml,下邊是文件中的內容,重點在於roles下指定nginx目錄.

- hosts: web
  remote_user: root
  roles:
  - nginx  

三.roles中任務的導入

  以下是tasks目錄下的main文件 : 

- import_tasks: install.yml   #下載
- import_tasks: copyfile.yml  #復制文件到遠程主機
- import_tasks: start.yml     #啟動nginx
- name: fstab
  copy: dest=/tmp/wq.txt src=fstab
  tags: fstab

  注意 : 因為在main文件中任務是自上而下執行的,所以在導入任務時必須按順序進行.

四.roles的執行順序

- 先查找當前目錄下roles目錄里面指定的對應文件夾
- 找tasks目錄下面的main.yml文件,如果import_tasks 就導入
- 如果遇到了templates,去找templates文件夾下面的對應文件
- 如果遇到了notify,去找handlers里面的main.yml文件
- 如果遇到了copy,去找files里面的對應文件
- 如果看到了變量,如果是setup收集的變量就去setup,如果不是就去vars里面的main.yml文件查找

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM