在上海做钟点工的网站国家开发公司
文章目录
- 1、准备工作
 - 2、创建角色结构
 - 3、编写任务
 - 4、准备配置文件(金甲模板)
 - 5、编写变量
 - 6、编写处理程序
 - 7、编写剧本
 - 8、执行剧本Playbook
 - 9、验证-游览器访问每台主机的nginx页面
 
在 Ansible 中,使用角色(Role)来远程部署并配置 Nginx 是一种非常高效且可复用的方式。
1、准备工作
首先,查看系统:
cat /etc/redhat-release
 
然后,ansible检查各个主机的连通性:(主机组名为webserves,包括4台机子)
ansible webserves -m ping -o
 

2、创建角色结构
在ansible服务器主机创建文件夹:
mkdir roles/nginx/{files,handlers,tasks,templates,vars} -p
 
相应的文件夹中创建对应文件:
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,检查创建的roles目录结构:
yum install tree -ytree roles/
 

补充一点:这里,工作中我们也可以如下命令一键快速创建 nginx 的角色目录结构
ansible-galaxy init nginx
 
这会生成如下的目录结构:
nginx/
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars└── main.yml
 
3、编写任务
- 配置 tasks/main.yml
该文件定义了部署和配置 Nginx 的主要任务: 
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、准备配置文件(金甲模板)
vim roles/nginx/templates/nginx.conf.j2
 
修改nginx的金甲模板,使其成为各个主机的nginx的配置文件
##修改两处
worker_processes {{ ansible_processor_cores }} #调用内部已知变量
worker connections {{ worker_connections }} #自定义变量
 

#查看host01中的ansible_processor_cores核心数
ansible host01 -m setup -a 'filter=ansible_processor_cores'
 

template模板(金甲模板)是一套灵活的,可扩展,编辑的配置文件,用来推送给各个主机,作为自己的配置模板使用;里面可以存放变量等,非常灵活,便于扩展操作。
5、编写变量
vim roles/nginx/vars/main.yaml
 
编辑内容为:
worker_connections: 10240
 
6、编写处理程序
vim roles/nginx/handlers/main.yaml
 
修改内容如下:
---
- name: restart nginxservice: name=nginx state=restarted
 

7、编写剧本
vim roles/site.yaml
 
修改内容如下:
- hosts: webservesroles:- nginx
 
大概意思可以用剧本形象的比喻解释一下:针对webserves组中的所有主机,编写一个叫nginx的角色,里面包括群演files、武术指导handlers、任务主角tasts、模板替身templates和变量道具vars;整个一个剧本通site.yaml(场地)进行实施演出。
8、执行剧本Playbook
首先进行yaml的语法检查:
cd roles
ansible-playbook site.yaml --syntax-check
 

 上述显示证明没有问题了;
执行实施site.yaml
ansible-playbook site.yaml
 

9、验证-游览器访问每台主机的nginx页面
访问4台主机的nginx-index.html




 检查每个主机的nginx配置,两个变量都是获取变量值。
cat /etc/nginx/nginx.conf
 

注意事项
- 权限问题:由于安装软件和修改系统配置需要特权,使用了 become: true,确保你有足够的权限执行这些操作。
 - 不同操作系统:上述示例主要针对基于 yum 或 apt 的系统。如果使用其他操作系统,可能需要调整 package 模块的相关配置。
 - 防火墙:部署完成后,确保防火墙允许 Nginx 使用的端口(通常是 80 和 443)的流量通过。
 

人生当中总是有你能力所不及的范围,但是如果在你能力所及的范畴内,你尽到了自己全部的努力,那你还有什么可以遗憾呢?
