Ansible实战YAML语言完成apache的部署,配置,启动全过程

🏡作者主页:点击! 

🏝️Ansible专栏:点击!

⏰️创作时间:2024年5月24日15点59分


目录

💯趣站推荐💯

🎊前言

✨️YAML语言回顾

🎆1.编写YAML文件

环境准备

编写YAML核心

检测语法

🎇2.客户端测试


💯趣站推荐💯

前些天发现了一个巨牛的🤖人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家,人工智能, 机器算法等......  点击跳转网页!icon-default.png?t=N7T8https://www.captainbed.cn/sis/

🎊前言

本教程将带领您从零开始,学习如何使用 Ansible 和 YAML 语言完成 Apache 的部署、配置和启动全过程。通过循序渐进的讲解和实战操作,您将掌握 Ansible 的基本用法,并能够将所学知识应用于实际工作中,提高运维效率,降低运维成本。

✨️YAML语言回顾

YAML 是一种可读性高,用来表达数据序列化的格式。它可以轻松地将数据序列化为可读的文本格式,并反之亦然,同时保留数据结构。YAML 通常用于配置文件、数据存储和应用程序配置等场景。

YAML 的主要优势包括:

  • 易用性:YAML 的语法简单易懂,学习成本低,即使是新手也能快速上手。
  • 可读性:YAML 数据格式清晰易读,即使是非程序员也能轻松理解数据内容。
  • 灵活性:YAML 支持多种数据结构和语言,能够满足各种应用场景的需求。
  • 扩展性:YAML 可以通过自定义数据类型和标签进行扩展,以满足特定需求。

YAML 的典型应用场景包括:

  • 配置文件:YAML 常用于编写配置文件,例如应用程序配置、数据库配置、服务器配置等。
  • 数据存储:YAML 可以用于存储数据,例如日志文件、缓存数据、配置文件等。
  • 应用程序配置:YAML 可以用于配置应用程序,例如定义参数、设置选项等。
  • 数据交换:YAML 可以用于在不同系统之间交换数据,例如将数据从数据库导出到文件或将数据从一个应用程序传输到另一个应用程序。

🎆1.编写YAML文件

环境准备

主机清单自行准备,我实验中host1就是目标主机(条件有限一台来做测试) 

首先你服务器也要下载apache,因为一些配置文件需要在服务器上去修改,上传。

[root@ansible ~]# mkdir apache
[root@ansible ~]# ls
anaconda-ks.cfg  apache  ble  hostlist
[root@ansible ~]# cd apache
[root@ansible apache]# ls
[root@ansible apache]# cp -rf /etc/httpd/conf/httpd.conf .	//把apache的配置文件复制过来一份
[root@ansible apache]# ls
httpd.conf

此命令将 Apache 配置文件 ( /etc/httpd/conf/httpd.conf ) 复制到当前目录 ( apache )。 cp 命令是一个文件复制实用程序,它将源文件路径和目标文件路径作为参数,并将源文件的内容复制到目标文件。 -r 标志告诉 cp 递归复制源目录的任何子目录。 -f 标志告诉 cp 覆盖目标目录中的任何现有文件。

总结

这些命令创建一个名为 apache 的目录,切换到该目录,将 Apache 配置文件复制到该目录,然后列出该目录的内容。这通常作为在 Linux 服务器上安装和配置 Apache 的过程的一部分来完成。配置文件包含 Apache 应如何运行的设置,例如要提供服务的虚拟主机以及侦听哪些端口。

查看端口号

httpd的默认端口号是80,现在我们把他改为8080

[root@ansible apache]# grep '^Listen' httpd.conf 
Listen 80
[root@ansible apache]# vim  httpd.conf 
[root@ansible apache]# grep '^Listen' httpd.conf 
Listen 8080

编写YAML核心
[root@ansible apache]# vim apache.yaml
[root@ansible apache]# cat apache.yaml 
- hosts: host1
  tasks:
  - name: install -y httpd 
    yum: name=httpd state=present
  - name: copy httpd.conf
    copy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf
  - name: run
    service: name=httpd state=started enabled=yes 

命令的详细解释:

- name: install -y httpd

  • 此任务使用 yum 模块安装 Apache 包 ( httpd ):
    • name :“install -y httpd” - 任务的人类可读名称。 -y 标志可能用于 yum 模块,并且可能会在安装过程中抑制提示(取决于模块版本)。
    • yum :指定将使用 yum 模块,该模块管理基于 RedHat 的系统上的包。
    • name=httpd :指示 yum 模块安装名为 httpd 的包。
    • state=present :确保 httpd 包安装在 host1 上。

- name: copy httpd.conf

  • 此任务使用 copy 模块复制配置文件:
    • name :“copy httpd.conf” - 任务的人类可读名称。
    • copy :指定将使用负责文件传输的 copy 模块。
    • src=./httpd.conf :定义源文件路径。 ./ 指的是 playbook 所在的当前目录。确保此目录中存在名为 httpd.conf 的文件。
    • dest=/etc/httpd/conf/httpd.conf :定义目标主机上的目标文件路径。这将替换 host1 上现有的 httpd.conf 文件(如果需要对原始文件进行修改,请小心)。

- name: run service

  • 此任务使用 service 模块管理 Apache 服务:
    • name :“运行服务” - 任务的人类可读名称。
    • service :指定将使用用于管理系统服务的 service 模块。
    • name=httpd :指示 service 模块管理名为 httpd 的服务(可能是 Apache Web 服务器)。
    • state=started :确保 Apache 服务在 host1 上启动。
    • enabled=yes :这告诉 Ansible 启用服务在系统启动时自动启动。

检测语法

检查语法是否出问题

[root@ansible apache]# ansible-playbook apache.yaml --syntax-check

列出剧本的任务都有哪些

[root@ansible apache]# ansible-playbook apache.yaml --list-tasks

列出目标主机

[root@ansible apache]# ansible-playbook apache.yaml --list-hosts

以下是没有编译错误正确的输出

[root@ansible apache]# ansible-playbook apache.yaml --syntax-check

playbook: apache.yaml
[root@ansible apache]# ansible-playbook apache.yaml --list-tasks

playbook: apache.yaml

  play #1 (host1): host1	TAGS: []
    tasks:
      install -y httpd	TAGS: []
      copy httpd.conf	TAGS: []
      run	TAGS: []
[root@ansible apache]# ansible-playbook apache.yaml --list-hosts

playbook: apache.yaml

  play #1 (host1): host1	TAGS: []
    pattern: [u'host1']
    hosts (1):
      host1

🎇2.客户端测试

首先查看是否安装成功,并且查看httpd的端口号

[root@localhost ~]# grep "^Listen" /etc/httpd/conf/httpd.conf
Listen 8080
这时候就是8080 表示我们整个流程是正确无误的

访问测试

测试3

我们在ansible服务器上把httpd的服务器端口修改为8090

在执行命令会怎么样呢???

[root@ansible apache]# ansible-playbook apache.yaml 

注意这边虽然配置文件修改了端口 但是正在运行的程序端口依然是8080,这个时候需要重启或者重载服务,但是Ansible中也有专门针对这个的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/640861.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式作业5

在函数main.c中初始化三种颜色的灯: gpio_init(LIGHT_BLUE, GPIO_OUTPUT, LIGHT_OFF); //蓝灯 gpio_init(LIGHT_GREEN, GPIO_OUTPUT, LIGHT_OFF); //绿灯 gpio_init(LIGHT_RED, GPIO_OUTPUT, LIGHT_OFF); //红灯 同时为了响应以上修改,进入isr。c…

低代码开发:拖拽式可视化构建工业物联网系统

什么是低代码? 低代码(Low Code)是一种可视化的软件开发方法,通过最少的手动编码可以更快地交付应用程序。低代码平台的图形用户界面和拖放功能可自动执行开发过程的各个方面,从而消除对传统计算机编程方法的依赖。 什么是低代码平台&#…

远程桌面连接不上远程服务器,如何有效的解决远程桌面连接不上远程服务器的问题

在解决远程桌面连接不上远程服务器的问题时,我们需要采取一种专业且系统的方法来排查和修复可能存在的故障。以下是一些建议和步骤,帮助用户更有效地解决此类问题。 首先,用户需要确认远程服务器的状态和网络连接是否正常。 这包括检查服务器…

一键批量提取TXT文档前N行,高效处理海量文本数据,省时省力新方案!

大量的文本信息充斥着我们的工作与生活。无论是研究资料、项目文档还是市场报告,TXT文本文档都是我们获取和整理信息的重要来源。然而,面对成百上千个TXT文档,如何快速提取所需的关键信息,提高工作效率,成为了许多人头…

014_C标准库函数之<stdio.h>

【背景】 今天这个主要说的是<stdio.h>头文件&#xff0c;大家众所周知&#xff0c;这个是我们学习C语言时第一个接触到的头文件了&#xff0c;那么为什么我不一开始就介绍这个头文件呢&#xff1f;我觉得有两个原因&#xff0c;如下&#xff1a; 1.一开始大家的编程思…

微信支付篇---用户支付订单

微信支付篇—用户支付订单 创建PayOrderForm.java Data ApiModel(value "订单付款的表单") public class PayOrderForm {ApiModelProperty(value "订单ID")Min(1)private Integer orderId;}编写WxController中的创建付款方法&#xff0c;用于创建支付订…

[手游] 正义对决3

《正义对决3联机版》是一款多人联机的竞技射击游戏&#xff0c;玩家将扮演警方和强盗两个不同的势力&#xff0c;展开一场在庞大都市中的正义之战。强盗一方将在城市内抢劫各处并藏匿&#xff0c;而警方则必须将所有罪犯绳之以法。游戏中&#xff0c;玩家可自由购买众多武器装备…

k8s——Pod详解

一、Pod基础概念 1.1 Pod定义 Pod是kubernetes中最小的资源管理组件&#xff0c;Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的&#xff0c;例如&#xff0c;用于管理Pod运行…

C#_库的引用

类库的引用 还可以自己引用类库&#xff1a;解决方案-添加-新建项目 主程序 using System; using System.Windows.Forms; using Tools;namespace ConsoleApp2 {class Program{static void Main(string[] args){//Console.WriteLine("helloword");// Form form ne…

北斗短报文终端 | 什么是北斗短报文功能?如何实现北斗短报文通信?

北斗短报文功能是指通过北斗卫星进行短报文通信的功能。这种功能允许用户在没有移动通信信号覆盖的偏远山区、海洋、沙漠等地带&#xff0c;通过北斗短报文终端发送和接收文本信息&#xff0c;进行基本的数据通信。 北斗短报文功能是指北斗卫星导航系统特有的双向报文通信功能。…

力扣654. 最大二叉树

Problem: 654. 最大二叉树 文章目录 题目描述思路复杂度Code 题目描述 思路 对于构造二叉树这类问题一般都是利用先、中、后序遍历&#xff0c;再将原始问题分解得出结果 1.定义递归函数build&#xff0c;每次将一个数组中的最大值作为当前子树的根节点构造二叉树&#xff1b;…

win11 wsl ubuntu24.04

win11 wsl ubuntu24.04 一&#xff1a;开启Hyper-V二&#xff1a;安装wsl三&#xff1a;安装ubuntu24.04三&#xff1a;桥接模式&#xff0c;固定IP四&#xff1a;U盘使用五&#xff1a;wsl 从c盘迁移到其它盘参考资料 一&#xff1a;开启Hyper-V win11家庭版开启hyper-v 桌面…

Python异常处理:打造你的代码防弹衣!

Hi&#xff0c;我是阿佑&#xff0c;上文咱们讲到——揭秘Python的魔法&#xff1a;装饰器的超能力大揭秘 ‍♂️✨&#xff0c;阿佑将带领大家通过精准捕获异常、使用with语句和上下文管理器、以及异常链等高级技巧来增强代码的健壮性。就像为代码穿上防弹衣&#xff0c;保护它…

【JavaScript】文件下载

文件下载的消息格式 服务器只要在响应头中加入 Content-Disposition: attachment; filename"kxx" 即可触发浏览器的下载功能其中&#xff1a; attachment 表示附件&#xff0c;浏览器看到此字段&#xff0c;触发下载行为&#xff08;不同的浏览器下载行为有所区别&…

AI原生嵌入式矢量模型数据库ChromaDB-部署与使用指南

在人工智能大模型领域&#xff0c; 离不开NLP技术&#xff0c;在NLP中词向量是一种基本元素&#xff0c;如何存储这些元素呢&#xff1f; 可以使用向量数据库ChromeDB Chroma Chroma 是 AI 原生开源矢量数据库。Chroma 通过为 LLM 提供知识、事实和技能&#xff0c;使构建 L…

Leetcode刷题笔记4:链表基础2

导语 leetcode刷题笔记记录&#xff0c;本篇博客记录链表基础2部分的题目&#xff0c;主要题目包括&#xff1a; 24 两两交换链表中的节点19 删除链表的倒数第N个节点160 链表相交142 环形链表II 链表的定义 Python中&#xff0c;对于一个链表的节点定义非常简单&#xff0…

【算法】前缀和算法——和为k的子数组之和

题解&#xff1a;和为k的子数组之和(前缀和算法) 目录 1.题目2.题解思路2.1前缀和 哈希表&#xff0c;算法步骤&#xff1a;2.2细节如下&#xff1a;2.3参考代码&#xff1a; 3.总结及思考 1.题目 题目链接&#xff1a;LINK 2.题解思路 暴力求解自然不用多说&#xff0c;时…

STM32电机驱动模块(L9110S)

一、L9110S简介 L9110S是一种常用的双通道H桥电机驱动器集成电路&#xff0c;用于控制直流电机的方向和速度。它可以同时控制两个电机&#xff0c;每个通道最大可输出800mA的电流。L9110S具有高效的电源管理和过流保护功能&#xff0c;可以保护电路免受电机反冲电流的损害。它…

产品推荐 | 基于Xilinx XCKU115的半高PCIe x8 硬件加速卡

一、板卡概述 本板卡系我公司自主研发&#xff0c;采用Xilinx公司的XCKU115-3-FLVF1924-E芯片作为主处理器&#xff0c;主要用于FPGA硬件加速。板卡设计满足工业级要求。如下图所示&#xff1a; 二、功能和技术指标 板卡功能 参数内容 主处理器 XCKU115-3-FLVF1924-E 板卡…

基于Matlab实现BP神经网络的手写数字识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 手写数字识别是计算机视觉和模式识别领域的一个经典问题&#xff0c;具有广泛的应用场景&…