目录
💯趣站推荐💯
🎊前言
✨️YAML语言回顾
🎆1.编写YAML文件
环境准备
编写YAML核心
检测语法
🎇2.客户端测试
本教程将带领您从零开始,学习如何使用 Ansible 和 YAML 语言完成 Apache 的部署、配置和启动全过程。通过循序渐进的讲解和实战操作,您将掌握 Ansible 的基本用法,并能够将所学知识应用于实际工作中,提高运维效率,降低运维成本。
YAML 是一种可读性高,用来表达数据序列化的格式。它可以轻松地将数据序列化为可读的文本格式,并反之亦然,同时保留数据结构。YAML 通常用于配置文件、数据存储和应用程序配置等场景。
YAML 的主要优势包括:
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
[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
首先查看是否安装成功,并且查看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中也有专门针对这个的。