一、目標(biāo):通過role遠(yuǎn)程部署nginx并配置
1.首先創(chuàng)建目錄結(jié)構(gòu)(每個(gè)目錄名都是固定的媳叨,千萬(wàn)不能打錯(cuò))
[root@ansible ~]# tree roles/
roles/
├── nginx
│ ├── files
│ │ └── index.html
│ ├── handlers
│ │ └── main.yaml
│ ├── tasks
│ │ └── main.yaml
│ ├── templates
│ │ └── nginx.conf.j2
│ └── vars
│ └── main.yaml
└── site.yaml
6 directories, 6 files
1.1準(zhǔn)備目錄結(jié)構(gòu)
[root@ansible ~]# mkdir roles/nginx/{files,handles,tasks,templates,vars} -p
[root@ansible ~]# touch roles/site.yaml roles/nginx/{handles,tasks,vars}/main.yaml
[root@ansible ~]# echo 1234 > roles/nginx/files/index.html
[root@ansible ~]# yum install -y nginx && cp /etc/nginx/nginx.conf roles/nginx/templates/nginx.conf.j2
此處安裝nginx是為了得到nginx的配置文件蕉朵,通過修改此配置文件的配置,并將文件拷貝到服務(wù)主機(jī)上阳掐,實(shí)現(xiàn)修改服務(wù)主機(jī)的配置始衅。
2.編寫任務(wù)
template不同于copy模塊,復(fù)制的文件中可以存在變量
[root@ansible ~]# vim roles/nginx/tasks/main.yaml
---
- name: install nginx packge
yum: name={{ item }} state=latest
with_items:
- epel-release
- nginx
- name: copy index.html
copy: src=index.html dest=/usr/share/nginx/html/index.html
- name: copy nginx.conf template
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
notify: restart nginx
- name: make sure nginx service running
service: name=nginx state=started enabled=yes
3.準(zhǔn)備配置文件
[root@ansible ~]# vim roles/nginx/templates/nginx.conf.j2
4.編寫變量
[root@ansible roles]# vim nginx/vars/main.yaml
worker_connections: 10240
5.編寫處理程序
[root@ansible ~]# vim roles/nginx/handlers/main.yaml
--
- name: restart nginx
service: name=nginx state=restarted
6.編寫劇本(相當(dāng)于c中的main函數(shù))
[root@ansible ~]# vim roles/site.yaml
- hosts: host1
roles:
- nginx
7.實(shí)施
1.測(cè)試語(yǔ)法正確性:
ansible-playbook site.yaml --syntax-check
2.實(shí)施劇本
ansible-playbook site.yaml
3.驗(yàn)證host1:
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者