ansible 中 Role角色

roles則是在ansible中,playbooks的目錄組織結構。而模塊化之後,成爲roles的組織結構,易讀,代碼可重用,層次清晰。

實戰目標:通過role遠程部署nginx並配置

在這裏插入圖片描述

目錄順序:
role_name/     ---角色名稱=目錄
    files/:存儲一些可以用copy調用的靜態文件。
    tasks/: 存儲任務的目錄,此目錄中至少應該有一個名爲main.yml的文件,用於定義各task;其它的文件需要由main.yml進行“包含”調用; 
    handlers/:此目錄中至少應該有一個名爲main.yml的文件,用於定義各handler;其它的文件需要由(與notify:名字相同,方便notify通知執行下一條命令)通過main.yml進行“包含”調用; 
    vars/:此目錄中至少應該有一個名爲main.yml的文件,用於定義各variable;其它的文件需要由main.yml進行“包含”調用; 
    templates/:存儲由template模塊調用的模板文本; (也可以調用變量)
    site.yml:定義哪個主機應用哪個角色
1.準備目錄結構
[root@ansible-server ~]# cd /etc/ansible/roles/  #roles爲自帶目錄,如果不存在可以創建
[root@ansible-server roles]# mkdir nginx/{files,handlers,tasks,templates,vars} -p
2.創建文件:
[root@ansible-server roles]# touch site.yml nginx/{handlers,tasks,vars}/main.yml
[root@ansible-server roles]# yum install -y tree

在這裏插入圖片描述

1.創建nginx的測試文件
[root@ansible-server roles]# echo 1234 > nginx/files/index.html
2.安裝nginx並配置模板
[root@ansible-server roles]# yum install -y nginx && cp /etc/nginx/nginx.conf nginx/templates/nginx.conf.j2
3.編寫任務
[root@ansible-server roles]# vim nginx/tasks/main.yml
---
- name: install epel
  yum: name=epel-release state=latest
- name: install nginx
  yum: name=nginx state=latest
- name: copy nginx.conf templte
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
- name: copy index.html
  copy: src=/etc/ansible/roles/nginx/files/index.html dest=/usr/share/nginx/html/index.html
  notify: start nginx

在這裏插入圖片描述
4.準備配置文件
[root@ansible-server roles]# vim nginx/templates/nginx.conf.j2
修改成如下內容。自定義變量
在這裏插入圖片描述

5.編寫變量
[root@ansible-server roles]# vim nginx/vars/main.yml  #添加如下內容
worker_connections: 2
6.編寫handlers
[root@ansible-server roles]# vim nginx/handlers/main.yml #編寫如下內容
---
- name: start nginx  #和notify的名字必須一樣
  service: name=nginx state=started
7.編寫劇本
[root@ansible-server roles]# vim site.yml
---
- hosts: webservers4
  user: root
  roles:
   - nginx
檢測語法
[root@ansible-server roles]# ansible-playbook site.yml --syntax-check
playbook: site.yml
不能單獨檢測一個劇本
執行劇本:
[root@ansible-server roles]# ansible-playbook site.yml
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章