產(chǎn)品展示網(wǎng)站模板東莞市網(wǎng)站seo內(nèi)容優(yōu)化
文章目錄
- 1、準(zhǔn)備工作
- 2、創(chuàng)建角色結(jié)構(gòu)
- 3、編寫(xiě)任務(wù)
- 4、準(zhǔn)備配置文件(金甲模板)
- 5、編寫(xiě)變量
- 6、編寫(xiě)處理程序
- 7、編寫(xiě)劇本
- 8、執(zhí)行劇本Playbook
- 9、驗(yàn)證-游覽器訪問(wèn)每臺(tái)主機(jī)的nginx頁(yè)面
在 Ansible 中,使用角色(Role)來(lái)遠(yuǎn)程部署并配置 Nginx 是一種非常高效且可復(fù)用的方式。
1、準(zhǔn)備工作
首先,查看系統(tǒng):
cat /etc/redhat-release
然后,ansible檢查各個(gè)主機(jī)的連通性:(主機(jī)組名為webserves,包括4臺(tái)機(jī)子)
ansible webserves -m ping -o
2、創(chuàng)建角色結(jié)構(gòu)
在ansible服務(wù)器主機(jī)創(chuàng)建文件夾:
mkdir roles/nginx/{files,handlers,tasks,templates,vars} -p
相應(yīng)的文件夾中創(chuàng)建對(duì)應(yīng)文件:
touch roles/site.yaml roles/nginx/{handlers,tasks,vars}/main.yaml
在index.html中輸入有些信息:
echo 1234 > roles/nginx/files/index.html
安裝nginx,并拷貝nginx配置文件到指定目錄下:
yum install -y nginx && cp /etc/nginx/nginx.conf roles/nginx/templates/nginx.conf.j2
安裝tree,檢查創(chuàng)建的roles目錄結(jié)構(gòu):
yum install tree -ytree roles/
補(bǔ)充一點(diǎn)
:這里,工作中我們也可以如下命令一鍵快速創(chuàng)建 nginx 的角色目錄結(jié)構(gòu)
ansible-galaxy init nginx
這會(huì)生成如下的目錄結(jié)構(gòu):
nginx/
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars└── main.yml
3、編寫(xiě)任務(wù)
- 配置 tasks/main.yml
該文件定義了部署和配置 Nginx 的主要任務(wù):
vim roles/nginx/tasks/main.yaml
---
- name: install epel-release pacakgeyum: name=epel-release state=latest- name: intall nginx packageyum: name=nginx state=latest- name: copy index.htmlcopy: src=index.html dest=/usr/share/nginx/html/index.html- name: copy nginx.conf templatetemplate: src=nginx.conf.j2 dest=/etc/nginx/nginx.confnotify: restart nginx- name: make sure nginx service runningservice: name=nginx state=started enabled=yes
4、準(zhǔn)備配置文件(金甲模板)
vim roles/nginx/templates/nginx.conf.j2
修改nginx的金甲模板,使其成為各個(gè)主機(jī)的nginx的配置文件
##修改兩處
worker_processes {{ ansible_processor_cores }} #調(diào)用內(nèi)部已知變量
worker connections {{ worker_connections }} #自定義變量
#查看host01中的ansible_processor_cores核心數(shù)
ansible host01 -m setup -a 'filter=ansible_processor_cores'
template模板(金甲模板)是一套靈活的,可擴(kuò)展,編輯的配置文件,用來(lái)推送給各個(gè)主機(jī),作為自己的配置模板使用;里面可以存放變量等,非常靈活,便于擴(kuò)展操作。
5、編寫(xiě)變量
vim roles/nginx/vars/main.yaml
編輯內(nèi)容為:
worker_connections: 10240
6、編寫(xiě)處理程序
vim roles/nginx/handlers/main.yaml
修改內(nèi)容如下:
---
- name: restart nginxservice: name=nginx state=restarted
7、編寫(xiě)劇本
vim roles/site.yaml
修改內(nèi)容如下:
- hosts: webservesroles:- nginx
大概意思可以用劇本形象的比喻解釋一下:針對(duì)webserves組中的所有主機(jī),編寫(xiě)一個(gè)叫nginx的角色,里面包括群演files、武術(shù)指導(dǎo)handlers、任務(wù)主角tasts、模板替身templates和變量道具vars;整個(gè)一個(gè)劇本通site.yaml(場(chǎng)地)進(jìn)行實(shí)施演出。
8、執(zhí)行劇本Playbook
首先進(jìn)行yaml的語(yǔ)法檢查:
cd roles
ansible-playbook site.yaml --syntax-check
上述顯示證明沒(méi)有問(wèn)題了;
執(zhí)行實(shí)施site.yaml
ansible-playbook site.yaml
9、驗(yàn)證-游覽器訪問(wèn)每臺(tái)主機(jī)的nginx頁(yè)面
訪問(wèn)4臺(tái)主機(jī)的nginx-index.html
檢查每個(gè)主機(jī)的nginx配置,兩個(gè)變量都是獲取變量值。
cat /etc/nginx/nginx.conf
注意事項(xiàng)
- 權(quán)限問(wèn)題:由于安裝軟件和修改系統(tǒng)配置需要特權(quán),使用了 become: true,確保你有足夠的權(quán)限執(zhí)行這些操作。
- 不同操作系統(tǒng):上述示例主要針對(duì)基于 yum 或 apt 的系統(tǒng)。如果使用其他操作系統(tǒng),可能需要調(diào)整 package 模塊的相關(guān)配置。
- 防火墻:部署完成后,確保防火墻允許 Nginx 使用的端口(通常是 80 和 443)的流量通過(guò)。
人生當(dāng)中總是有你能力所不及的范圍,但是如果在你能力所及的范疇內(nèi),你盡到了自己全部的努力,那你還有什么可以遺憾呢?