Ansible自动化运维中剧本角色(roles)来完成apache服务操作

神秘泣男子 2024-08-15 16:37:01 阅读 63

 

🏡作者主页:点击! 

🐧Linux基础知识(初学):点击!

🐧Linux高级管理防护和群集专栏:点击!

🔐Linux中firewalld防火墙:点击!

Ansible自动化运维:点击!

⏰️创作时间:2024年8月8日8点8分


目录

1.编写YAML

2.执行剧本

2.测试结果

4.修改端口号8888

1.编写剧本(角色)

目录介绍

files:

tasks:

handlers:

templates:

编写脚本

总结


在现代IT运维中,自动化已经成为提升效率和降低错误率的关键手段。Ansible作为一种强大的自动化工具,通过剧本(Playbooks)和角色(Roles)使得复杂的配置管理变得简单而高效。本文将探讨如何利用Ansible的角色功能来实现Apache服务的自动化管理。我们将通过定义角色结构、编写剧本以及执行相关操作,展示如何轻松部署和管理Apache Web服务器,从而提高运维工作的灵活性和可维护性。无论是在开发环境还是生产环境,通过Ansible,我们都能实现快速、可靠的服务部署与管理。

 

以下分开来讲解首先就是 单独的步骤 最后才是使用定义角色目录的方式来完成一整套流程操作

1.编写YAML

实现要求

1.安装apache

2.修改端口号为8080

3.启动apache服务

<code>vim a.yaml

---

- hosts: web

remote_user: root

tasks:

  - name: install httpd

    yum:

      name: httpd

      state: present

    tags:

      - aaa

  - name: change apache port

    shell: sed -i 's/Listen 80/Listen 8080/' /etc/httpd/conf/httpd.conf

    tags:

      - bbb

  - name: start apache

    service:

      name: httpd

      state: started

      enabled: yes

    tags:

      - ccc

...

1.剧本结构

hosts:

指定了目标主机组为web,即所有在该组中的主机将会执行此剧本中的任务。

remote_user:

设置为root,表示以root用户身份连接目标主机,确保有足够的权限执行安装和配置操作。

2.任务列表

install httpd:

使用yum模块安装Apache HTTP服务器(httpd)。

state: present确保httpd包被安装。

tags: aaa允许在执行时通过标签选择性地运行此任务。

change apache port:

使用shell模块执行命令,修改Apache配置文件,将监听端口从80改为8080。

这个步骤是为了避免与其他服务的端口冲突。

tags: bbb同样允许通过标签选择性地执行此任务。

start apache:

使用service模块启动Apache服务,并设置为开机自启。

state: started确保服务正在运行,enabled: yes确保服务在系统启动时自动启动。

tags: ccc便于通过标签选择性地执行此任务。

使用ansible-playbook 来检测语法是否有问题

[root@localhost ~] ansible-playbook --syntax-check a.yaml

playbook: a.yaml

2.执行剧本

确认无误之后执行

ansible-playbook a.yaml

2.测试结果

回到客户端检测是否成功的下载了httpd和修改了端口号以及启动服务

<code>systemctl status httpd

netstat -nultp | grep httpd

tcp6       0     0 :::8080                 :::*                   LISTEN     3039/httpd

可以看到端口号确实为8080.

4.修改端口号8888

单独的修改端口号,大家都知道修改完成之后不会立即生效,需要重启服务或者重载才生效。

以下实验就成功的解决了找个问题

注意!之前我们用sed把80端口修改为8080 现在需要修改sed语句 8080修改为8888

编写脚本

<code>---

- hosts: web

remote_user: root

tasks:

  - name: change apache port

    shell: sed -i 's/Listen 8080/Listen 8888/' /etc/httpd/conf/httpd.conf

    notify: restart httpd server

handlers:

  - name: restart httpd server

    service:

      name: httpd

      state: restarted

...

检测语法

[root@localhost ~]# ansible-playbook --syntax-check a.yaml

playbook: a.yaml

[root@localhost ~]# ansible-playbook a.yaml

执行脚本

遇到问题先不要慌张一个个去排查,查看apache的报错日志

我发现是我这台主机的Selinux没有关闭导致无法启动成功

关闭重启以下即可解决成功

1.编写剧本(角色)

创建好所需文件夹

<code>mkdir -p /etc/ansible/roles/apache/{files,tasks,handlers,templates}

目录介绍

files:

存放静态文件,如配置文件、脚本或其他需要直接复制到目标主机的文件。 这些文件可以在剧本中通过 copy 或 template 模块进行引用。

tasks:

用于定义具体的任务,这些任务是剧本的核心部分。 通常会有一个 main.yml 文件,里面列出所有需要执行的操作,如安装软件、修改配置等。

handlers:

存放处理程序(handlers),这些是特殊的任务,仅在被其他任务触发时执行,例如在配置文件更改后重启服务。 也通常会有一个 main.yml 文件来定义这些处理程序。

templates:

用于存放Jinja2模板文件,这些模板可以动态生成配置文件。 在剧本中可以使用 template 模块渲染这些模板,并将结果复制到目标主机。

这是整体的文件夹结构树(主要看roles下的目录文件夹)

[root@localhost ansible]# tree

.

├── ansible.cfg

├── hosts

├── httpd.yml

└── roles

  └── apache

      ├── file

      ├── handlers

      │   └── main.yml

      ├── tasks

      │   └── main.yml

      └── templates

我们进入tasks目录编辑main.yml

以下是完整路径

<code>vim /etc/ansible/roles/apache/tasks/main.yml

---

- name: install apache # 安装 Apache HTTP 服务

yum:

name: httpd

state: present

- name: start apache # 启动 Apache 服务并设置为开机自启

service:

name: httpd

state: started

enabled: yes

- name: change apache Port # 修改 Apache 配置文件,将监听端口从 80 更改为 8080

shell: sed -i 's/Listen 80/Listen 8080/' /etc/httpd/conf/httpd.conf

notify:

- restart httpd # 通知重启 Apache 服务以应用更改

在 /etc/ansible/roles/apache/handlers/main.yml 文件中,定义了一个处理程序,用于重启Apache HTTP服务器。以下是该文件的详细介绍:

vim /etc/ansible/roles/apache/handlers/main.yml

---

- name: restart httpd

service:

name: httpd

state: restarted

...

name:

指定要管理的服务名称,这里是 httpd,即Apache HTTP服务器。

state:

设置为 restarted,表示在调用此处理程序时,会重启Apache服务。这通常在配置文件发生变化后调用,以使更改生效。

编写脚本

再编写一个执行剧本的脚本

vim httpd.yml

---

- hosts: web

remote_user: root

roles:

- apache

...

执行

进入到你创建的执行脚本目录

ansible-playbook httpd.yml

可以看到脚本执行完毕 实验结束

总结

本文介绍了如何利用Ansible实现Apache HTTP服务器的自动化管理。通过编写YAML剧本和定义角色,我们成功完成了Apache的安装、端口修改和服务启动。这个过程展示了Ansible的灵活性和高效性,使得运维工作更加简洁和可靠。通过自动化,我们能够提升工作效率,减少人为错误,推动IT基础设施的现代化。

成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

神秘泣男子



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。