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: host1tasks:- name: install -y httpd yum: name=httpd state=present- name: copy httpd.confcopy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf- name: runservice: 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-checkplaybook: apache.yaml
[root@ansible apache]# ansible-playbook apache.yaml --list-tasksplaybook: apache.yamlplay #1 (host1): host1	TAGS: []tasks:install -y httpd	TAGS: []copy httpd.conf	TAGS: []run	TAGS: []
[root@ansible apache]# ansible-playbook apache.yaml --list-hostsplaybook: apache.yamlplay #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中也有专门针对这个的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos 安装nginx 并配置https ssl

进入你要安装的目录 一般是/usr/local/ wget https://nginx.org/download/nginx-1.24.0.tar.gz解压安装包:使用以下命令解压下载的Nginx安装包: tar -zxvf nginx-1.24.0.tar.gz在编译和安装Nginx之前,确保您的系统上已安装了必要的编译工具和…

flume channel和interceptor简介及官方用例

一、Flume Channels channel是在代理上暂存事件的存储库。Source 添加事件,Sink 将其删除。 1、Memory Channel 事件存储在具有可配置最大大小的内存中队列中。它非常适合需要更高吞吐量的流,但在agent发生故障时会丢失暂存数据 Property Name Defau…

k近邻和kd树

K近邻 选取k值的时候可以采用交叉验证的方法 一般采用欧氏距离 kd树 采用树这个特殊的数据结构来实现k近邻算法 先假设是二维的情况 下面讲解kd树的完整构造过程 找这个中位数是按照每棵子树来创建的 前提是已经有了一棵kd树,然后来一个实例点

java组合设计模式Composite Pattern

组合设计模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和组合对象的使用具有一致性。 // Component - 图形接口 interface Graphic {void draw()…

Python UDP编程简单实例

TCP是建立可靠的连接,并且通信双方都可以以流的形式发送数据。 相对于TCP,UDP则是面向无连接的协议,不需要建立连接,只需要知道对方IP地址和端口号,就可以直接发送数据包。但是只管发送不保证到达。 虽然UDP传输数据…

Docker快速部署Seata的TC服务以及微服务引入Seata教程

目录 一、使用docker部署Seata的TC服务 1、拉取TC服务镜像 2、创建并运行容器 ​3、修改配置文件 4、在Nacos中添加TC服务的配置 5、重启TC服务 二、微服务集成Seata 1、引入依赖 2、修改配置文件 Seata是阿里的一个开源的分布式事务解决方案,能够为分布…

STM32学习和实践笔记(31):输入捕获实验

1.输入捕获介绍 在定时器中断实验章节中我们介绍了通用定时器具有多种功能,输入捕获就是其中一种。STM32F1除了基本定时器TIM6和TIM7,其他定时器都具有输入捕获功能。输入捕获可以对输入的信号的上升沿,下降沿或者双边沿进行捕获,…

【博客主页】博客主旨 精华

前言 与博客园不同, 最近CSDN在进行资本化的转型.其一部分的VIP代码和小册我也有相关消费, 个人认为是一部分做的比较成过, 另一部分又不是特别成功. 其CSDN博客已经失去其原本技术交流的意义, 变成一种免费的知识引流和收费交流. 这其实与我们的开源社区背道而驰, 但是又吸引…

世界电信日 | 紫光展锐以科技创新支撑数字经济可持续发展

专注科技创新,打造全球数字经济技术基石 紫光展锐坚持科技创新,为数字经济蓬勃发展提供基石力量。 面对5G-A技术的巨大潜力,紫光展锐与众多生态伙伴紧密合作,积极推动5G-A的商用进程。紫光展锐提出的两项R18 eRedCap演进方案已被3GPP标准采…

为什么要实现设备之间的互通?

设备之间的互通是电信设备的普遍性要求,特别是在接入网领域中,不同厂商的局端设备与用户端(终端)设备之间的互通显得尤其重要。 一、互通能为产业链的各个环节带宽积极影响。 (1)对用户而言,互…

安装新版的Ubuntu WSL以使能BBR拥塞控制算法

【多次尝试成功的方案】通过> wsl - -list -online列出可以安装的版本,用命令> wsl --install -d Ubuntu-24.04 安装。 【未成功的方案】通过挂在ubuntu24.04.iso到E盘后,用命令> wsl --import Ubuntu24.04 C:\WSL\Ubuntu24.04\ E:\ --versio…

Redis系统架构中各个处理模块是干什么的?no.19

Redis 系统架构 通过前面的学习,相信你已经掌握了 Redis 的原理、数据类型及访问协议等内容。本课时,我将进一步分析 Redis 的系统架构,重点讲解 Redis 系统架构的事件处理机制、数据管理、功能扩展、系统扩展等内容。 事件处理机制 Redis…

API-BigInteger、BigDecimal

BigInteger: demo1: package BigInteger;import java.math.BigInteger; import java.util.Random;public class demo1 {public static void main(String[] args) {//获取一个随机最大整数BigInteger bd1 new BigInteger(5, new Random());System.out.println(bd1…

SSMP整合案例第一步 制作分析模块创建与开发业务实体类

制作分析 我们要实现一个模块的增删改查 实际开发中mybatisplus用的不多,他只能对没有外键的单表进行简单的查询 但在这个案例中我们还是选择mybatisplus开发 模块创建 我们把所有服务器都放在一起 就不用前后端分离 我们尝试用后端开发进行全栈开发 新建项目添…

macos brew安装多版本protobuf,切换指定版本protobuf 为默认版本方法

protobuf 不同的版本语法相差很大, 而在不同的项目中可能使用的protobuf版本也不同,所以我们的电脑就可能需要安装多个版本的protobuf, 下面介绍macos下如何通过brew安装多版本和设置想要的默认版本的方法 安装,则可以先执行 bre…

Thinkphp3.2.3网站后台不能访问如何修复

我是使用Thinkphp3.2.3新搭建的PHP网站,但是网站前台可以访问,后台访问出现如图错误: 由于我使用的Hostease的Linux虚拟主机产品默认带普通用户权限的cPanel面板,对于上述出现的问题不清楚如何处理,因此联系Hostease的…

(3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)

目录 一、磁共振快速采集技术基础 1.K空间的基本特点 2.快速成像的理由: 3.快速成像的硬件要求: 二、磁共振快速采集技术 1.采集更少的相位编码线 2.平行采集技术PAT 3.其他与快速采集有关的技术 1)部分回波技术 2)频率…

java实现一个动态监控系统,监控接口请求超时的趋势

目录 整体思路案例实现1. 数据收集2. 数据聚合3. 趋势分析4. 异常检测5. 异常处理定时任务 整体思路 理想情况下,你可以实现一个简单的动态监控算法来检测渠道请求的响应时间趋势,并在发现频繁超时的情况下进行处理。以下是一个可能的算法框架&#xff…

Oracle表关联更新几种方法

1、测试表及数据准备 create table T_update01(ID int ,infoname varchar2(32),sys_guid varchar2(36)); create table T_update02(ID int ,infoname varchar2(32),sys_guid varchar2(36));insert into T_update01 select 1,N1_updateName,sys_guid() from dual union select …

java如何获取IP和IP的归属地?

在Java中,获取IP地址通常指的是获取本地机器的IP地址或者通过某种方式(如HTTP请求)获取的远程IP地址。代码案例如下: 而要获取IP的归属地(地理位置信息),则通常需要使用第三方IP地址查询服务,我…