五,ansible—Role角色

介紹

roles則是在ansible中,playbooks的目錄組織結(jié)構(gòu)。而模塊化之后,成為roles的組織結(jié)構(gòu),易讀,代碼可重用,層次清晰。

實(shí)戰(zhàn)目標(biāo):通過(guò)role遠(yuǎn)程部署nginx并配置

兩臺(tái)機(jī)器配置本地解析
[root@ansible-server ~]# vim /etc/hosts
192.168.1.9 ansible-server
192.168.1.13 ansible-web4
[root@ansible-web4 ~]# vim /etc/hosts
192.168.1.9 ansible-server
192.168.1.13 ansible-web4
添加主機(jī)組
[root@ansible-server ansible]# pwd
/etc/ansible
[root@ansible-server ansible]# vim hosts
[webservers4]
ansible-web4
配置免密登錄:
[root@ansible-server ~]# ssh-copy-id -i 192.168.1.13

目錄順序:
role_name/ ---角色名稱(chēng)=目錄
files/:存儲(chǔ)一些可以用copy調(diào)用的靜態(tài)文件。
tasks/: 存儲(chǔ)任務(wù)的目錄,此目錄中至少應(yīng)該有一個(gè)名為main.yml的文件,用于定義各task;其它的文件需要由main.yml進(jìn)行“包含”調(diào)用;
handlers/:此目錄中至少應(yīng)該有一個(gè)名為main.yml的文件,用于定義各handler;其它的文件需要由(與notify:名字相同,方便notify通知執(zhí)行下一條命令)通過(guò)main.yml進(jìn)行“包含”調(diào)用;
vars/:此目錄中至少應(yīng)該有一個(gè)名為main.yml的文件,用于定義各variable;其它的文件需要由main.yml進(jìn)行“包含”調(diào)用;
templates/:存儲(chǔ)由template模塊調(diào)用的模板文本; (也可以調(diào)用變量)
site.yml:定義哪個(gè)主機(jī)應(yīng)用哪個(gè)角色

1.準(zhǔn)備目錄結(jié)構(gòu)

[root@ansible-server ~]# cd /etc/ansible/roles/  #role為自帶目錄,如果不存在可以創(chuàng)建
[root@ansible-server roles]# mkdir nginx/{files,handlers,tasks,templates,vars} -p

2.創(chuàng)建文件:

[root@ansible-server roles]# touch site.yml nginx/{handlers,tasks,vars}/main.yml
[root@ansible-server roles]# yum install -y tree
1567322899375.png
1.創(chuàng)建nginx的測(cè)試文件
[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.編寫(xiě)任務(wù)
[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: /etc/ansible/roles/nginx/files/index.html dest=/usr/share/nginx/html/index.html
  notify: start nginx
4.準(zhǔn)備配置文件
[root@ansible-server roles]# vim nginx/templates/nginx.conf.j2
修改成如下內(nèi)容。自定義變量
5.編寫(xiě)變量
[root@ansible-server roles]# vim nginx/vars/main.yml  #添加如下內(nèi)容
worker_connections: 2
6.編寫(xiě)handlers
[root@ansible-server roles]# vim nginx/handlers/main.yml #編寫(xiě)如下內(nèi)容
---
- name: start nginx  #和notify的名字必須一樣
  service: name=nginx state=started
7.編寫(xiě)劇本
[root@ansible-server roles]# vim site.yml
---
- hosts: webservers4
  user: root
  roles:
   - nginx

檢測(cè)語(yǔ)法
[root@ansible-server roles]# ansible-playbook site.yml --syntax-check
playbook: site.yml
執(zhí)行劇本:
[root@ansible-server roles]# ansible-playbook site.yml

查看:

[root@ansible-web4 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3102/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 926/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1007/master
tcp6 0 0 :::80 :::* LISTEN 3102/nginx: master
tcp6 0 0 :::22 :::* LISTEN 926/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1007/master
[root@ansible-web4 ~]# cat /etc/nginx/nginx.conf | grep pro
worker_processes auto;
worker_processes 2;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容