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

news/2025/2/1 0:12:31/

文章目录

      • 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)的流量通过。

在这里插入图片描述


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



http://www.ppmy.cn/news/1568285.html

相关文章

Python 数据分析 - 初识 Pandas

Python 数据分析 - 初识 Pandas 简介SeriesDataFrame创建基本操作添加删除 简介 Pandas 基于 NumPy 开发,它提供了快速、灵活、明确的数据结构,旨在简单、直观地处理数据。 Pandas 适用于处理以下类型的数据: 有序和无序的时间序列数据带行…

将点云转换为 3D 网格:Python 指南

3D 数据的世界往往是一个碎片化的景观。 存在点云,其细节丰富,但缺乏表面信息。 有3D 网格,它明确地定义表面,但创建起来通常很复杂。 将点云转换为网格弥补了这一差距并开启了许多可能性,从真实模拟到 3D 数字环境…

CAPL与外部接口

CAPL与外部接口 目录 CAPL与外部接口1. 引言2. CAPL与C/C++交互2.1 CAPL与C/C++交互简介2.2 CAPL与C/C++交互实现3. CAPL与Python交互3.1 CAPL与Python交互简介3.2 CAPL与Python交互实现4. CAPL与MATLAB交互4.1 CAPL与MATLAB交互简介4.2 CAPL与MATLAB交互实现5. 案例说明5.1 案…

【2024年华为OD机试】(C卷,200分)- 启动多任务排序 (JavaScriptJava PythonC/C++)

一、问题描述 题目解析 本题是一个典型的拓扑排序问题。拓扑排序用于解决有向无环图(DAG)中的节点排序问题,使得对于图中的每一条有向边 (u, v),u 在排序中总是位于 v 的前面。在本题中,任务之间的依赖关系可以看作是有向图中的边,而任务的执行顺序就是拓扑排序的结果。…

RK3588平台开发系列讲解(ARM篇)ARM64底层中断处理

文章目录 一、异常级别二、异常分类2.1、同步异常2.2、异步异常三、中断向量表沉淀、分享、成长,让自己和他人都能有所收获!😄 一、异常级别 ARM64处理器确实定义了4个异常级别(Exception Levels, EL),分别是EL0到EL3。这些级别用于管理处理器的特权级别和权限,级别越高…

SOME/IP--协议英文原文讲解4

前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.1.3 End…

【Rust自学】15.0. 智能指针(序):什么是智能指针及Rust智能指针的特性

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 15.0.1 指针的基本概念 指针是一个变量在内存中包含的是一个地址,指向另一个数据。 Rust 中最常见的指针是引用&#xff0c…

【含开题报告+文档+PPT+源码】基于SpringBoot的校园跑腿管理系统

开题报告 本文旨在探讨校园跑腿系统的设计与实现,通过深入研究与分析,实现了一套包含用户管理、发布跑腿单、跑腿抢单、跑腿单评论、在线留言以及用户在线充值等功能的综合性系统。该系统以提高校园内物品跑腿与配送效率为核心目标,为广大学…