当前位置: 首页 > news >正文

32.Ansible平台搭建

Ansible平台搭建

Ansible 通过 SSH 和简单易读的 YAML 脚本,实现了基础设施即代码,让运维工作变得自动化、标准化和可重复

主要用途

  • 配置管理:像 Chef, Puppet 一样,确保服务器的配置一致且符合预期。
  • 应用部署:自动将应用程序(代码)部署到测试、生产环境。
  • 任务自动化:执行日常任务,如重启服务、采集日志、打包文件等。
  • 编排:按照一定顺序在多个服务器上执行复杂的流程,例如先部署数据库,再部署应用服务器,最后更新负载均衡配置。

核心组件

  • 控制节点:安装并运行 Ansible 的机器。
  • 受管节点:被 Ansible 管理的服务器。
  • Inventory:一个主机列表文件,定义了你的受管节点,并可以将它们分组(如 [web_servers], [db_servers])。
  • Playbook:Ansible 的自动化脚本,由一个或多个Play组成,每个Play包含一系列Task
  • Module:Ansible 执行的独立功能单元(如上面例子中的 yumservice 模块)。
  • Task:调用一个模块并指定其参数,这就是一个任务。
  • Role:一种更高级的组织形式,将变量、任务、文件等打包,便于共享和复用

Ansible的特点

  1. 无代理架构:这是它最大的亮点。传统的自动化工具需要在每台要管理的服务器上安装一个“客户端”软件。而 Ansible 不需要!它直接通过最常见的 SSH(管理 Linux/Unix)和 WinRM(管理 Windows)协议连接服务器并执行任务。这极大地简化了部署和维护。
  2. 简单易读:它的核心配置文件叫做 Playbook,采用 YAML 格式编写。YAML 非常接近自然语言和列表格式,几乎可以自我解释

Ansible的核心

Core Modules: ansible自带的模块

Custom Modules: 核心模块功能不足时,用户可以添加扩展模块

Plugins: 通过插件来实现记录日志,发送邮件或其他功能

Playbooks: 剧本,YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能

Connection Plugins: ansible基于连接插件连接到各个主机上,默认是使用ssh

Host Inventory: 记录由Ansible管理的主机信息,包括端口、密码、ip等

ad-hoc模式(点对点模式)

使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。

playbook模式(剧本模式)

是Ansible主要管理方式,也是Ansible功能强大的关键所在。playbook通过多个task集合完成一类功能,如Web服务的安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件

工作流程是首先执行ansible命令,然后读取ansible的配置文件,配置文件里面会定义主机清单的位置,然后看主机清单去匹配,调用ansible的模块将命令打包成. py类型的脚本文件,然后通过ssh将脚本传输到受控主机对应执行用户的家目录,然后会自动给脚本文件加上x权限能够执行脚本,执行脚本之后不论成功失败,都会返回给ansible,然后删除脚本文件

ansible的部署

前置条件:1.安装rhel9版本的虚拟机

2.配置本地yum源

[root@ansible yum.repos.d]# vim server.repo

在这里插入图片描述

3.安装软件包

[root@ansible ~]# yum group install "Virtualization Client" "Virtualization Hypervisor" "Virtualization Tools" -y

4.重启libvirtd服务

[root@ansible ~]# systemctl restart libvirtd
[root@ansible ~]# systemctl enable libvirtd

5.通过filezilla将本地的rhel9.2的镜像上传到虚拟机

6.安装1台master主机,然后克隆5台名为node1,node2,node3,node4,node5的主机,配置6台主机的ip,master为192.168.122.100,其他为从10-50

[root@ansible ~]#virt-manager

7.ip配置完后编辑/etc/hosts,内容为所有主机的ip+主机名+别名

[root@master ~]# vim /etc/hosts

在这里插入图片描述

8.将/etc/exports下的内容转发给其他主机

[root@master ~]# for i in node{1..5}; do scp /etc/hosts root@$i:/etc/hosts ; done

9.配置主机的免密登录,root用户和student用户都需要配置(student用户为普通用户)

[root@master ~]# ssh-keygen
[root@master ~]# for i in node{1..5}; do ssh-copy-id -i ~/.ssh/id_rsa.pub root@$i; done
[root@master ~]# for i in node{1..5}; do ssh-copy-id -i ~/.ssh/id_rsa.pub student@$i; done
[satudent@master ~]# ssh-keygen
[student@master ~]# for i in node{1..5}; do ssh-copy-id -i ~/.ssh/id_rsa.pub root@$i; done
[student@master ~]# for i in node{1..5}; do ssh-copy-id -i ~/.ssh/id_rsa.pub student@$i; done

10.在ansible上配置本地yum仓库之后,安装httpd服务

[root@ansible ~]# yum install httpd -y

将需要的文件通过filezilla上传到/var/www/html的目录下,然后重启httpd服务,并且关闭防火墙和selinux

在这里插入图片描述

11.在master主机中部署yum仓库

[root@master ~]# vim /etc/yum.repos.d/server.repo

在这里插入图片描述

12.安装vim编辑器及相关软件

[root@master ~]# yum install vim bash-completion net-tools -y

13.给student用户提权

[root@master ~]# vim /etc/sudoers.d/student

在这里插入图片描述

然后发给其他主机

[root@master ~]# for i in node{1..5}; do scp /etc/sudoers.d/student root@$i:/etc/sudoers.d/; done

14.切换到student用户然后安装ansible

[student@master ~]$ sudo yum install ansible-core   ansible-navigator

15.配置ansible目录

在student用户的加目录下创建ansible目录

在这里插入图片描述

在ansible目录下生成新的ansible配置文件

[student@master ansible]$ ansible-config init --disabled > ansible.cfg

配置相关文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在ansible目录下编辑主机清单inventory,新建roles,collections
[student@master ansible]$ vim inventory

在这里插入图片描述

[student@master ansible]$ mkdir roles
[student@master ansible]$ mkdir collections

配置ssh登录不需要确认密钥

[student@master ansible]$ vim ansible.cfg

在这里插入图片描述

在这里插入图片描述

测试ansible命令能否ping 通所有主机

[student@master ansible]$ ansible all -m ping

在这里插入图片描述

在这里插入图片描述

http://www.xdnf.cn/news/1367011.html

相关文章:

  • 1424. 对角线遍历 II
  • 2024年Engineering SCI2区,面向工程管理的无人机巡检路径与调度,深度解析+性能实测
  • 计算机毕业设计 java 药店药品信息管理系统 基于 Java 的药店药品管理平台Java 开发的药品信息系统
  • 设计模式:原型模式(Prototype Pattern)
  • 如何通过虚函数实现多态?
  • 实现自己的AI视频监控系统-第二章-AI分析模块2
  • 【git使用场景】本地仓库与远程仓库存在独立历史
  • ​Visual Studio + UE5 进行游戏开发的常见故障问题解决
  • 系统开发 Day4
  • 音视频学习(五十六):单RTP包模式和FU-A分片模式
  • Linux驱动开发笔记(七)——并发与竞争(上)——原子操作
  • 深度学习-----《PyTorch深度学习核心应用解析:从环境搭建到模型优化的完整实践指南》
  • 链表OJ习题(2)
  • 操作系统中,进程与线程的定义与区别
  • 似然函数对数似然函数负对数似然函数
  • Ant Design for UI 选择下拉框
  • BIO、NIO 和 AIO
  • 2025.8.25回溯算法-集合
  • Typora + PicList + Gitee 图床完整配置教程
  • 【ElasticSearch】json查询语法和可用的客户端
  • ESP32开发WSL_VSCODE环境搭建
  • Mysql系列--8、索引
  • Java延迟任务实现方案详解:从DelayQueue到实际应用
  • 2.3零基础玩转uni-app轮播图:从入门到精通 (咸虾米总结)
  • 【Docker基础】Docker-compose进阶配置:健康检查与服务就绪
  • K8s Pod驱逐机制详解与实战
  • C++ extern 关键字面试深度解析
  • 开源 C++ QT Widget 开发(六)通讯--TCP调试
  • 安全合规:AC(上网行为安全)--下
  • vue 一键打包上传