当前位置: 首页 > 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.dtcms.com/a/350837.html

相关文章:

  • 2024年09月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • NFC线圈设计计算
  • 力扣热题——前K个高频元素
  • 记一次Arrays.asList集合删除的错误
  • Java vs Kotlin 在实际开发中的主要区别与面试题总结
  • 太阳光模拟器在国防军工中的应用
  • k8s-容器化部署论坛和商城服务(小白的“升级打怪”成长之路)
  • K8s Pod驱逐机制详解与实战
  • SpringBoot防重放攻击的5种实现方案
  • 什么是数据库?现代数据库类型、示例与应用(2025)
  • 深入理解 iptables:Linux 防火墙从入门到精通
  • Vue3使用 DAG 图(AntV X6)
  • 2024年12月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • Spring Boot 3.5 新特性
  • C++ namespace
  • 国内外大模型体验与评测:洞察智能时代的核心驱动力一、引言
  • DataX HdfsWriter 插件文档
  • 实现自己的AI视频监控系统-第二章-AI分析模块2
  • Java全栈开发面试实战:从基础到微服务的完整技术解析
  • Oracle数据库如何修改字段中的两个字符
  • CF2133C 下界(The Nether)
  • 敏捷价值实证:亚马逊如何用敏捷破解技术项目的“价值迷雾”?
  • 学习做动画3.八方移动
  • SW - 增加导出STL数据中的三角面数,增加别人逆向建模的难度
  • Excel比较两列的值是否相同
  • ViT系列网络系统性分析:从架构创新到未来趋势
  • SSH 反向隧道:快速解决服务器网络限制
  • Frida JavaScript API 总结
  • 【数据库】dbeaver 查询clickhouse,表内时间与真实时间差8小时
  • 基于Springboot + vue3实现的宿舍管理系统