ansible自动化playbook简单实践

article/2025/7/16 1:04:52

方法一:部分使用ansible

基于现有的nginx配置文件,定制部署nginx软件,将我们的知识进行整合 定制要求:
启动用户:nginx-test,uid是82,系统用户,不能登录
启动端口82 web项目根目录/data/webserver/html
默认首页:index.html
首页内容:"welcome to ansible"

1.1 准备工作 

  • 前提:三台系统都是rocky
    检查系统:确保三台主机的 Rocky 系统已联网,能正常安装软件包。
  • 关闭防火墙和 SELinux (测试环境建议关闭,生产环境按需配置规则):
    关闭防火墙:systemctl stop firewalld;systemctl disable firewalld

永久关闭 SELinux(需重启生效):编辑 /etc/selinux/config 文件,将 SELINUX=enforcing 改为 SELINUX=disabled 

1.2 创建启动用户

在每台主机上执行以下命令创建 nginx-test 用户,且设置为系统用户、不能登录:
useradd -u 82 -s /sbin/nologin nginx-test

1.3 安装 Nginx

yum install nginx -y  

1.4 配置 Nginx

修改配置文件:打开 Nginx 的主配置文件(yum 安装一般在 /etc/nginx/nginx.conf)

user nginx-test;  # 修改启动用户
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;include /etc/nginx/modules-enabled/*.conf;events {worker_connections 1024;
}http {server {listen 82;  # 修改监听端口为82server_name _;root /data/webserver/html;  # 设置项目根目录index index.html;  # 设置默认首页location / {try_files $uri $uri/ =404;}}include /etc/nginx/mime.types;default_type application/octet-stream;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;gzip on;
}
  • 创建项目根目录及首页文件
    mkdir -p /data/webserver/html
    echo "welcome to ansible" > /data/webserver/html/index.html
    chown -R nginx-test:nginx-test /data/webserver/html  # 设置目录所有者

1.5 启动 Nginx 

systemctl start nginx;systemctl enable nginx # 设置开机自启

1.6 测试访问

创建nginx_deploy.yml文件并输入下面的内容并使用 ansible-playbook nginx_deploy.yml 执行

- hosts: 10.0.0.12,10.0.0.15,10.0.0.18become: truetasks:- name: Create nginx-test useruser:name: nginx-testuid: 82shell: /sbin/nologin- name: Install nginxyum:name: nginxstate: present- name: Configure nginx.conflineinfile:path: /etc/nginx/nginx.confregexp: "{{ item.regexp }}"line: "{{ item.line }}"create: trueloop:- { regexp: "^user", line: "user nginx-test;" }- { regexp: "^listen", line: "listen 82;" }- { regexp: "^root", line: "root /data/webserver/html;" }- { regexp: "^index", line: "index index.html;" }- name: Create web project root directoryfile:path: /data/webserver/htmlstate: directoryowner: nginx-testgroup: nginx-test- name: Create index.htmlcopy:content: "welcome to ansible"dest: /data/webserver/html/index.htmlowner: nginx-testgroup: nginx-test- name: Start nginxservice:name: nginxstate: startedenabled: true

方法二:完全用ansible实现自动化

注意:按照方法一 前提环境已部署好,防护墙,selinux等 这里就不再操作

1.1 制作⼀个nginx.conf

yum install nginx -y;systemctl stop nginx
mkdir /data/ansible/nginx -p;cd /data/ansible/nginx/
grep -Ev '#|^$' /etc/nginx/nginx.conf > nginx.conf
并且进行定制修改,修改内容如下
sed -i 's#www-data#nginx-test#' nginx.conf
cat > nginx-define.conf <<- eof
server {listen 10086;root /data/webserver/html;location / {index index.html;  # 添加默认首页try_files $uri $uri/ =404;  # 添加请求处理规则}
}

1.2 编写playbook   

编写 nginx playbook ⽂件 01-nginx.yml
- hosts: webremote_user: roottasks:- name: create new useruser:name: nginx-testsystem: yesuid: 82shell: /sbin/nologin- name: create web rootfile:name: /data/webserver/htmlowner: nginx-teststate: directory- name: touch web indexshell: echo '<h1>welcome to ansible</h1>' > /data/webserver/html/index.html- name: install packageyum:name: nginxstate: present- name: copy configcopy:src: nginx.confdest: /etc/nginx/nginx.conf- name: copy subconfigcopy:src: nginx-define.confdest: /etc/nginx/conf.d- name: start serviceservice:name: nginxstate: startedenabled: yes

1.3 检测执行效果

ansible-playbook 01-nginx.yml --syntax-check    检测效果
ansible-playbook 01-nginx.yml -C      模拟执行
注:该步骤执行即使存在一两个异常,也不影响后续的正常安装
ansible-playbook 01-nginx.yml   执行文件
ansible web -m shell -a "getent passwd | grep 82"
ansible web -m shell -a "ls -l /data/"
ansible web -m shell -a "netstat -tnulp | grep nginx"  

若出现都是80端口,则还需要执行  ansible web -m shell -a "systemctl reload nginx"

 

ansible web -m shell -a "curl -s localhost:10086"

1.4 清除环境

ansible web - m service - a "name=nginx state=stopped"
ansible web - m yum  - a "name=nginx,nginx-common state=absent"
ansible web - m file - a "path=/data/webserver state=absent"
ansible web - m user - a "name=nginx-test state=absent"


http://www.hkcw.cn/article/UsTrYjgwIb.shtml

相关文章

一句话开发Chrome摸鱼插件

本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴&#xfeff;。 CodeBuddy 一、CodeBuddy新功能特色 Craft智能体&#xff1a;自然语言驱动的全栈开发引擎Craft开发智能体的核心突破在于实现需求理解-任务拆解-代码生成的…

2024PLM系统实施案例:天水天轲零部件

一、行业背景与中小企业的现实挑战 汽车零部件行业竞争激烈&#xff0c;中小企业普遍面临研发周期长、数据管理混乱、供应链协同效率低等问题。天水天轲零部件作为一家年产值约700万元的小型制造企业&#xff0c;其痛点具有行业典型性&#xff1a; 研发数据分散&#xff1a…

Linux(8)——进程(控制篇——上)

目录 ​编辑 一、进程创建 1.fork函数的回顾 2.fork的返回值 3.写时拷贝 4.fork的常规用法 5.fork调用失败的原因 二、进程终止 1.进程退出的场景 2.进程常见的退出方法 3.进程退出码 4.进程正常退出 1&#xff09;_exit函数 2&#xff09;exit函数 3&#xff…

万亿小吃市场背后:冷链配送如何破解连锁门店“到店难题”?

在餐饮行业连锁化率突破23%、小吃快餐品类占据连锁门店半壁江山的今天&#xff0c;冷链配送已成为支撑品牌扩张的隐形基础设施。从田间到餐桌&#xff0c;从中央厨房到终端门店&#xff0c;冷链物流的每一次温度波动都直接关联着消费者的味蕾体验与品牌口碑。本文将解析冷链配送…

基于Java+MySQL 实现(Web)企业信息展示系统

基于java web企业信息展示系统设计和实现 摘要 随着企业经营环境的不断变化和竞争的口益加剧&#xff0c;企业经营管理水平的提高已成当务之急&#xff0c;人力资源管理作为企业管理中最重要的部分&#xff0c;其水平的高低已成企业发展的关键因素。随着计算机技术特别是互联…

11.2 java语言执行浅析3美团面试追魂七连问

美团面试追魂七连问&#xff1a;关于Object o New Object() ,1请解释一下对象的创建过程(半初始化) 2,加问DCL要不要volatile 问题(指令重排) 3.对象在内存中的存储布局(对象与数组的存储不同),4.对象头具体包括什么.5.对象怎么定位.6.对象怎么分配(栈-线程本地-Eden-Old)7.在…

SpringBoot+Vue+微信小程序校园自助打印系统

概述​​ 校园自助打印系统是现代化校园建设中不可或缺的一部分&#xff0c;基于SpringBootVue微信小程序开发的​​免费Java源码​​项目&#xff0c;包含完整的用户预约、打印店管理等功能模块。 ​​主要内容​​ ​​ 系统功能模块​​ ​​登录验证模块​​&#xff1a;…

特伦斯 S75 电钢琴:奏响极致音乐体验的华丽乐章

在音乐爱好者增多、音乐教育普及&#xff0c;以及科技进步的推动下&#xff0c;电钢琴市场蓬勃发展。其在技术、品质和应用场景上变化巨大&#xff0c;高端化、个性化产品受青睐&#xff0c;应用场景愈发多元。在此背景下&#xff0c;特伦斯 S75 电钢琴以卓越性能和独特设计&am…

OpenCV---pointPolygonTest

一、基本概念与用途 pointPolygonTest 是 OpenCV 中用于判断点与多边形关系的重要函数&#xff0c;常用于&#xff1a; 目标检测&#xff1a;判断像素点是否属于检测到的轮廓区域碰撞检测&#xff1a;检测物体是否重叠图像分割&#xff1a;确定点是否在分割区域内几何分析&am…

深入详解DICOMweb:WADO与STOW-RS的技术解析与实现

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…

20250530-C#知识:万物之父Object

C#知识&#xff1a;万物之父Object Object类&#xff08;即object&#xff09;是所有类的基类&#xff0c;这里面的方法还是需要好好了解一下。 1、Object类 是顶级父类&#xff0c;其他类默认都是Object类的子类&#xff08;自定义类也会默认继承Object类&#xff09;可以用O…

ollama国内安装使用

解决国内下载慢和安装卡住问题 docker安装-优先推荐 https://hub.docker.com/r/ollama/ollama/tags docker pull ollama/ollama:latestGitHub 镜像加速 改安装脚本、使用 GitHub 镜像和文件加速服务 https://defagi.com/ai-case/ollama-installation-guide-china/ modelsco…

阻塞队列的学习以及模拟实现一个阻塞队列

前言 今天上午学习了阻塞队列。之前在数据结构的时候&#xff0c;学过队列。把队列放在多线程中&#xff0c;对队列会有新的体会。我自己也实现了一个阻塞队列结合生产消费模型&#xff0c;希望对于大家有帮助~ 阻塞队列的相关知识 结语 本次的分享就结束啦。端午安康~

深度学习赋能图像识别:技术、应用与展望

论文&#xff1a; 一、引言​ 1.1 研究背景与意义​ 在当今数字化时代&#xff0c;图像作为信息的重要载体&#xff0c;广泛存在于各个领域。图像识别技术旨在让计算机理解和识别图像内容&#xff0c;将图像中的对象、场景、行为等信息转化为计算机能够处理的符号或数据 &am…

如何通过一次需求评审,让项目效率提升50%?

想象一下&#xff0c;你的团队启动了一个新项目&#xff0c;但需求模糊不清&#xff0c;开发到一半才发现方向错了&#xff0c;返工、加班、客户投诉接踵而至……听起来像噩梦&#xff1f;一次完美的需求评审就能避免这一切&#xff01;它就像项目的“导航仪”&#xff0c;确保…

粽叶飘香时 山水有相逢

粽叶飘香时 山水有相逢 尊敬的广大客户们&#xff1a; 五月初五&#xff0c;艾叶幽香。值此端午佳节&#xff0c;衡益科技全体同仁向您致以最诚挚的祝福&#xff01; 这一年我们如同协同竞渡的龙舟&#xff0c;在数字化转型的浪潮中默契配合。每一次技术对接、每轮方案优化&a…

【PyTroch学习-001】从一个简单示例开始:手写数字识别

一、PyTroch简介 PyTorch 是由 Meta&#xff08;原 Facebook&#xff09;开发的开源深度学习框架&#xff0c;以动态计算图和易用性著称&#xff0c;广泛应用于计算机视觉、自然语言处理等领域。其核心特性包括&#xff1a; ​动态计算图​&#xff1a;支持运行时灵活调整计算…

备战2025全国青少年信息素养大赛省赛—图形化编程—每一练——打开密码锁

备战2025全国青少年信息素养大赛省赛—图形化编程—每一练——打开密码锁 题目可看下方去处&#xff0c;支持在线编程&#xff0c;在线获取源码和素材&#xff5e; 打开密码锁_scratch_少儿编程题库学习中心-嗨信奥 题库收集了历届各白名单赛事真题和权威机构考级真题&#xf…

MPLS的基础配置

MPLS概念&#xff08;AI&#xff09; ‌MPLS&#xff08;多协议标签交换&#xff09;的工作原理是通过标签&#xff08;Label&#xff09;引导数据转发&#xff0c;将固定长度的短标签与数据分组封装&#xff0c;交换节点仅根据标签进行快速转发&#xff0c;从而提升网络传输效…

一篇文章玩转CAP原理

CAP 原理是分布式系统设计的核心理论之一&#xff0c;揭示了系统设计中的 根本性权衡。 一、CAP 的定义 CAP 由三个核心属性组成&#xff0c;任何分布式系统最多只能同时满足其中两个&#xff1a; 一致性&#xff08;Consistency&#xff09; 所有节点在同一时刻看到的数据完全…