Ansible自动化运维实战--通过role远程部署nginx并配置(8/8)

文章目录

在 Ansible 中,使用角色(Role)来远程部署并配置 Nginx 是一种非常高效且可复用的方式。

1、准备工作

首先,查看系统:

bash 复制代码
cat /etc/redhat-release

然后,ansible检查各个主机的连通性:(主机组名为webserves,包括4台机子)

bash 复制代码
ansible webserves -m ping -o

2、创建角色结构

在ansible服务器主机创建文件夹:

bash 复制代码
mkdir roles/nginx/{files,handlers,tasks,templates,vars} -p

相应的文件夹中创建对应文件:

bash 复制代码
touch roles/site.yaml roles/nginx/{handlers,tasks,vars}/main.yaml

在index.html中输入有些信息:

bash 复制代码
echo 1234 > roles/nginx/files/index.html 

安装nginx,并拷贝nginx配置文件到指定目录下:

bash 复制代码
yum install -y nginx && cp /etc/nginx/nginx.conf roles/nginx/templates/nginx.conf.j2

安装tree,检查创建的roles目录结构:

bash 复制代码
yum install tree -y

tree roles/

补充一点:这里,工作中我们也可以如下命令一键快速创建 nginx 的角色目录结构

bash 复制代码
ansible-galaxy init nginx

这会生成如下的目录结构:

bash 复制代码
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 的主要任务:
bash 复制代码
vim roles/nginx/tasks/main.yaml
yaml 复制代码
---
- name: install epel-release pacakge
  yum: name=epel-release state=latest

- name: intall nginx package
  yum: name=nginx state=latest

- 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

4、准备配置文件(金甲模板)

bash 复制代码
vim roles/nginx/templates/nginx.conf.j2

修改nginx的金甲模板,使其成为各个主机的nginx的配置文件

bash 复制代码
##修改两处
worker_processes {{ ansible_processor_cores }} #调用内部已知变量
worker connections {{ worker_connections }} #自定义变量
bash 复制代码
#查看host01中的ansible_processor_cores核心数
ansible host01 -m setup -a 'filter=ansible_processor_cores'

template模板(金甲模板)是一套灵活的,可扩展,编辑的配置文件,用来推送给各个主机,作为自己的配置模板使用;里面可以存放变量等,非常灵活,便于扩展操作。

5、编写变量

bash 复制代码
vim roles/nginx/vars/main.yaml

编辑内容为:

yaml 复制代码
worker_connections: 10240

6、编写处理程序

bash 复制代码
vim roles/nginx/handlers/main.yaml

修改内容如下:

yaml 复制代码
---
- name: restart nginx
  service: name=nginx state=restarted

7、编写剧本

bash 复制代码
vim roles/site.yaml

修改内容如下:

yaml 复制代码
- hosts: webserves
  roles:
  - nginx

大概意思可以用剧本形象的比喻解释一下:针对webserves组中的所有主机,编写一个叫nginx的角色,里面包括群演files、武术指导handlers、任务主角tasts、模板替身templates和变量道具vars;整个一个剧本通site.yaml(场地)进行实施演出。

8、执行剧本Playbook

首先进行yaml的语法检查:

bash 复制代码
cd roles
ansible-playbook site.yaml --syntax-check

上述显示证明没有问题了;

执行实施site.yaml

bash 复制代码
ansible-playbook site.yaml

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

访问4台主机的nginx-index.html

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

bash 复制代码
cat /etc/nginx/nginx.conf

注意事项

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

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


相关推荐
WIN赢2 小时前
【UI自动化相关】
运维·自动化
notion20254 小时前
Optuna 黑科技自动化超参数优化框架详解
运维·科技·其他·自动化
CS Beginner7 小时前
【Linux】Tomcat基本配置
linux·运维·tomcat
..Move...7 小时前
快速搭建Docker私有仓库指南
运维·docker·容器
小小的木头人8 小时前
Windows Docker desktop 部署
运维·kafka
wanhengidc9 小时前
云手机和虚拟机的区别都有哪些?
运维·服务器·安全·智能手机·玩游戏
码农周10 小时前
从零搭建vsftpd服务器:避坑指南+实战解决方案
运维·服务器
<但凡.11 小时前
Linux修炼:库制作与原理(一)
linux·运维·服务器
Maple_land13 小时前
编译器的“隐形约定”与本地变量:解锁Linux变量体系的关键密码
linux·运维·服务器·c++·centos
_落纸14 小时前
《自动控制原理》第 3 章 线性控制系统的运动分析:3.6、3.7
笔记·自动化