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

🏡作者主页:点击!

🏝️Ansible专栏:点击!

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


目录

💯趣站推荐💯

🎊前言

✨️YAML语言回顾

🎆1.编写YAML文件

环境准备

编写YAML核心

检测语法

🎇2.客户端测试


💯趣站推荐💯

前些天发现了一个巨牛的🤖人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家,人工智能, 机器算法等...... 点击跳转网页!https://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,因为一些配置文件需要在服务器上去修改,上传。

html 复制代码
[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

html 复制代码
[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核心
html 复制代码
[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 启用服务在系统启动时自动启动。

检测语法

检查语法是否出问题

html 复制代码
[root@ansible apache]# ansible-playbook apache.yaml --syntax-check

列出剧本的任务都有哪些

html 复制代码
[root@ansible apache]# ansible-playbook apache.yaml --list-tasks

列出目标主机

html 复制代码
[root@ansible apache]# ansible-playbook apache.yaml --list-hosts

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

html 复制代码
[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的端口号

html 复制代码
[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中也有专门针对这个的。

相关推荐
上海文顺负载箱12 分钟前
如何评估焊机测试负载均衡性能
运维·负载均衡
铁锤妹妹头发多1 小时前
新手用docker真**难受
运维·docker·容器
超栈1 小时前
HCIP(11)-期中综合实验(BGP、Peer、OSPF、VLAN、IP、Route-Policy)
运维·网络·网络协议·计算机网络·web安全·网络安全·信息与通信
Cachel wood1 小时前
Github配置ssh key原理及操作步骤
运维·开发语言·数据库·windows·postgresql·ssh·github
编程一生1 小时前
回调数据丢了?
运维·服务器·前端
徐浪老师2 小时前
OSPF动态路由配置实验:实现高效网络自动化
网络·自动化·智能路由器
华为云PaaS服务小智2 小时前
华为大咖说 | 浅谈智能运维技术
运维·华为·华为云
娃哈哈_4 小时前
基于Testng + Playwright的H5自动化巡检工具
测试开发·测试工具·自动化·html5·可用性测试·testng·playwright
2401_857600954 小时前
SpringBoot框架的企业资产管理自动化
spring boot·后端·自动化
z千鑫4 小时前
【人工智能】利用大语言模型(LLM)实现机器学习模型选择与实验的自动化
人工智能·gpt·机器学习·语言模型·自然语言处理·自动化·codemoss