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

 

🏡作者主页:点击! 

🐧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服务

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和修改了端口号以及启动服务

systemctl status httpd
netstat -nultp | grep httpd
tcp6       0      0 :::8080                 :::*                    LISTEN      3039/httpd

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

4.修改端口号8888

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

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

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

编写脚本

---
- 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.编写剧本(角色)

创建好所需文件夹

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

以下是完整路径

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基础设施的现代化。

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

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

神秘泣男子

  • 30
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神秘泣男子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值