ansible-角色role-11

roles可以結構化的組織playbook,
變量文件,tasks,handlers等分別放至不同的文件夾
使用roles需要在playbook中引用include指令即可
使用roles需要創(chuàng)建一個roles目錄,目錄存放地方自定義,默認是在/etc/ansible/roles,
palybook中需要引用roles,playbook需要和roles目錄處于平級

創(chuàng)建幾個自定義的角色,最好有實意,必須要創(chuàng)建在roles目錄下

mkdir -p /etc/ansible/roles/{httpd,mysql,nginx}

roles各目錄作用:這些目錄需要創(chuàng)建在{httpd,mysql,nginx},目錄下

創(chuàng)建順序為:roles ==》 角色名 ==》 需要用到的目錄及文件
files:存放需要copy模塊或script模塊調用的目錄,
tempaltes:template模塊塊調用的目錄,用來存放 .j2文件
tasks:定義task,role的基本元素,至少需要一個名為main.yml文件(必須有)
handlers:至少需要一個名為main.yml文件
vars:定義變量,至少需要一個名為main.yml文件
meta:定義當前角色的特殊設定及其依賴關系,至少需要一個名為main.yml文件
default:設定默認變量時使用此目錄中的main.yml文件

示例
任務目標:用roles安裝nginx

需要: 模塊名
1.創(chuàng)建nginx組, group
2.創(chuàng)建nginx用戶, user
3.安裝nginx, yum
4.調用template模板*.conf.j2 template
5.啟動nginx, service


雙十二阿里云特價優(yōu)惠鏈接


根據(jù)上述需求,我們需要在roles/nginx下創(chuàng)建目錄:tasks,templates

mkdir -p /etc/ansible/roles/nginx/{tasks,templates}

分別將部署步驟寫出來
因為roles是結構化,所以tasks目錄下只需要寫tasks即可

編寫task語句

cat roles/nginx/tasks/group.yml   #創(chuàng)建組
- name: add group
  group: name=nginx gid=80
cat roles/nginx/tasks/user.yml     #創(chuàng)建系統(tǒng)用戶
- name: add user
  user: name=nginx groups=nginx system=yes shell=/sbin/nologin uid=80
cat roles/nginx/tasks/install_package.yml    #開始安裝包
- name: install package
  yum: name=nginx state=latest
cat roles/nginx/tasks/template.yml    #用template將配置文件復制過去
- name: copy configuration
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf backup=yes
  notify: change         #添加了handler,觸發(fā)條件
cat roles/nginx/tasks/service.yml      #啟動服務
  up service
  service: name=nginx state=restarted enabled=yes
cat roles/nginx/tasks/main.yml          #給前面寫的文件進行排序
- include: group.yml                      #根據(jù)排版順序執(zhí)行task
- include: user.yml
- include: install_package.yml
- include: template.yml
- include: handler.yml
- include: service.yml

編寫handlers觸發(fā)條件

cat roles/nginx/handlers/main.yml       # 觸發(fā)動作
- name: change        # 匹配notify
  service: name=nginx state=reloaded 

編寫vars變量

cat roles/nginx/vars/main.yml
nginx_port: 80                 #自定義變量
mysql_port: 3306

寫執(zhí)行文件,要寫在/etc/ansible/下,因為playbook要和roles目錄處于同級

cat install_nginx.yml
- hosts: all
  remote_user: root
  roles: 
    - role: nginx           #nginx就是roles目錄下的一個角色

執(zhí)行roles,先測試 沒問題再執(zhí)行

ansible-playbook -C install_nginx.yml

如果想同時執(zhí)行兩個角色

cat install_nginx.yml
- hosts: all
  remote_user: root
  roles: 
    - role: nginx
    - role: httpd     #添加角色名,并按照順序執(zhí)行

如果角色A想調用角色B中的任務
在tasks目錄下的main.yml文件中指定要調用的任務路徑即可

cat roles/nginx/tasks/main.yml
- include: group.yml
- include: user.yml
- include: install_package.yml
- include: template.yml
- include: service.yml
- include: roles/httpd/tasks/xxx.yml  #roles目錄下的任務路徑

如何給role加tag
給role添加when判斷

cat install_nginx.yml
- hosts: all
  remote_user: root
  roles: 
    - { role: nginx, tags: ['web','nginx'] }
    - { role: httpd, tags: ['web','httpd'],when: ansible_distribution_major_version == "7" } 
    - { role: app, tags:"app" }    #判斷句 當系統(tǒng)等7時,執(zhí)行此role

通過tag來執(zhí)行role

ansible-playbook -t web install_nginx.yml
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 介紹 roles則是在ansible中,playbooks的目錄組織結構。而模塊化之后,成為roles的組織結構,...
    setfaclmualicer閱讀 252評論 0 0
  • ansible_ playbook是ansible進行配置管理的組件,雖然ansible的日常AD-Hoc命令功能...
    泡面_b7f5閱讀 2,056評論 0 0
  • 一.ansible (1) ansible: ansible是一款新出現(xiàn)的自動化運維系統(tǒng),基于python開發(fā)并集...
    楠人幫閱讀 2,132評論 0 8
  • 目錄 十五、ansible介紹十六、ansible安裝十七、ansible遠程執(zhí)行命令十八、ansible拷貝文件...
    XiaoMing丶閱讀 2,277評論 0 3
  • 漸變的面目拼圖要我怎么拼? 我是疲乏了還是投降了? 不是不允許自己墜落, 我沒有滴水不進的保護膜。 就是害怕變得面...
    悶熱當乘涼閱讀 4,494評論 0 13

友情鏈接更多精彩內容