初步利用Ansible实现批量服务器自动化管理

news2024/12/23 19:17:17

1.Ansible介绍

Ansible是一款开源的自动化运维工具, 在2012年由Michael DeHaan创建, 现在由Red Hat维护。Ansible是基于Python开发的,采用YAML语言编写自动化脚本playbook, 可以在Linux、Unix等系统上运行, 通过SSH协议管理节点, 无需在被管理节点安装agent。Ansible以其简单、高效、无agent成为广泛使用的自动化工具, 可以应用于配置管理、应用部署、任务调度等。

Ansible能够自动管理远程系统和控制它们的期望状态, 一个基础Ansible环境主要包含三大组件:

  • 控制节点 - 安装有Ansible的系统。我们可以在控制节点上运行Ansible命令,如ansibleansible-inventory

  • 管理节点 - Ansible控制的远程系统或主机。

  • 清单 - 在逻辑上组织起来的受控节点列表。在控制节点上创建清单,用来描述Ansible管理的主机部署。

架构如下:

2.Ansible安装和配置

在我实验的环境中, 我分配了四台虚拟机,IP地址分别为:192.168.201.202 -205, 其中192.168.201.202是主控端, 需要在该机器上安装Ansible; 另外从203-205的三台机器为受控端, 接收从202发来的指令。这里我安装的Linux系统为ubuntu 22.04.3 LTS版本,直接输入以下命令安装:

# apt install ansible

安装完成后输入命令: ansible --version查看版本号,如图:

接下来需要配置管理hosts, 在目标目录新建一个名为hosts的清单文件:/etc/ansible/hosts, 注意:如果/etc/下没有ansible目录,需要手动新建一个。

编辑hosts文件,输入以下格式内容,如图:

在标签名称下的三个IP地址是我的另外三台虚拟机,它们将接收ansible的统一管理。保存退出。

在命令行输入命令:

# ansible all --list-hosts

该命令将验证清单中的主机, 返回信息如下:

在控制节点192.168.201.202中, 我们需要生成一个SSH的密钥对,输入以下命令:

# ssh-keygen -t rsa

中间提示一律按回车键即可, 结束后将在~/.ssh目录下生成id_rsa和id_rsa.pub两个密钥文件,我们要将公钥id_rsa.pub文件发送到三台虚拟机上(192.168.201.203-205), 分别输入以下命令:

# ssh-copy-id root@192.168.201.203
# ssh-copy-id root@192.168.201.204
# ssh-copy-id root@192.168.201.205

执行结果如下:

接下来我们输入以下命令进行免密码登录验证:

此时, 我们可以输入以下命令进行批量主机管理测试:

# ansible all -m ping

返回结果如下:

可以看到, 三台受管理的主机已经全部Ping通。

3.创建清单

通过清单文件, Ansible可以通过单个命令管理大量主机, 且可以通过减少需要指定的命令行选项数量来帮助我们更有效地使用Ansible,例如:清单通常包含SSH用户, 因此在运行Ansible命令时可以不需要包含-u参数来指定用户名。

在任意目录创建一个名为inventory.yaml的文件, 这里我把清单文件建在目录: /home/inventory.yaml, 内容如下:

下面输入命令进行验证:

# ansible-inventory -i inventory.yaml --list

注意一下 -i 参数后面的yaml文件路径, 我这里是cd到yaml文件的当前目录了, 所以直接跟的文件名, 在实际应用过程中需要根据情况进行全路径和相对路径的选择。

该命令执行返回结果如下:

接下来对清单中的受管节点执行Ping操作, 执行命令:

# ansible virtualmachines -m ping -i inventory.yaml

返回结果如下:

4.创建剧本(playbook)

剧本是Ansible用来部署和配置受管节点的自动化蓝图,使用YAML格式编写。

下面先解释一下剧本的基本元素:

  • Play - 按顺序排列的任务列表,与inventory中受管节点对应映射。

  • 任务(task) - 定义Ansible要执行的一个或多个模块操作的列表。

  • 模块:Ansible在受管节点上运行的代码单元或二进制文件。Ansible的模块按集合组织,每个模块有一个完全限定的集合名称(Fully Qualified Collection Name, FQCN)。

在上面的操作中,我们使用了ansible命令来ping清单中的主机。现在创建一个playbook,它不仅可以ping主机,还可以打印“Hello world”消息。

继续在/home目录下创建一个名为playbook.yaml的文件, 输入以下内容:

在该配置文件中, 我们定义了一个剧本的名称、定义了hosts名称和具体的任务(tasks), 其中任务项这里包含两个: Ping主机和打印消息。

接下来我们看看剧本效果如何, 输入以下命令:

# ansible-playbook -i inventory.yaml playbook.yaml

返回结果如下:

从结果来看,一切都OK, 成功执行了我们的剧本并对三个目标主机进行了Ping操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1174409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 数据库安全性练习题

数据库安全性 一、实验目的 (1)熟悉通过MySQL对数据进行安全性控制 二、实验环境 Windows 11 MySQL Navicat 三、实验内容 今有以下两个关系模式: 职工(职工号,姓名,年龄,职务,工…

11.3递归建二叉树,二叉树函数规范化输入输出,一些二叉树性质,求叶子结点与树的高度

建树 ,递归建树 输入为 建立树 递归 函数参数表为引用或指针 void Creat(BiTree *T){char ch;scanf("%c",&ch);if(ch#){*TNULL;}else{*T(BiTree)malloc(sizeof(BiTNode));(*T)->datach;Creat(&(*T)->nextleft);Creat(&(*T)->nex…

标签识别中的数据泄露:关键分析

一、介绍 在数据驱动的决策时代,收集、处理和分析数据的过程在从医疗保健到金融,从营销到研究的各个领域都发挥着举足轻重的作用。数据分析的基本步骤之一是正确识别数据集中的标签或类别。然而,这项看似简单的任务可能充满挑战,尤…

springboot苍穹外卖实战:八、开发小程序准备工作+入门案例+小程序微信用户登录流程+商品浏览

开发小程序准备工作 官方网址:https://mp.weixin.qq.com/cgi-bin/wx?token&langzh_CN 1、微信小程序注册 注册地址:https://mp.weixin.qq.com/wxopen/waregister?actionstep1 2、 完善小程序信息 登录小程序后台:https://mp.weixin.…

前端框架Vue学习 ——(三)Vue生命周期

生命周期:指一个对象从创建到销毁的整个过程。 生命周期的八个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法(钩子) mounted:挂载完成,Vue 初始化成功,HTML 页面渲染成功…

Linux学习第33天:Linux INPUT 子系统实验(二):Linux 自带按键驱动程序的使用

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 本节笔记主要内容是学会如何使用Linux自带的按键驱动程序。 一、自带按键驱动程序源码简析 配置选项路径如下: -> Device Drivers ->…

内存学习(3):DRAM的基础存储结构(存储层级、读写过程,刷新与暂存)

1 DRAM背景简介 DRAM,全称为 Dynamic Random Access Memory ,中文名是“动态随机存取存储器”。所谓“动态”是和“静态”相对应的,芯片世界里还有一种 SRAM 静态随机存取存储器的存在。 笼统地说,DRAM 的结构比 SRAM 更简单&am…

UE5——源码阅读——2

这个是非常大的作用域,当程序离开这个东西,就会把它释放掉,设置了一个作用域把当前线程标记为主线程 插入了一个默认的Main,这个东西其实是标记点,这个标记是在UE内部有个性能分析工具可以看到这个标记点,主要是确定位…

【java学习—十三】处理流之三:标准输入输出流(3)

文章目录 1. 相关概念2. 举例与练习2.1. 举例2.2. 练习 1. 相关概念 System.in 和 System.out 分别代表了系统标准的输入和输出设备,默认输入设备是键盘,输出设备是显示器。     System.in 的类型是 InputStream     System.out 的类型是 PrintS…

SpringMvc从菜鸟到大拿完成蜕变

SpringMvc从菜鸟到大拿完成蜕 介绍 Why springmvc Servlet缺点: servlet中的service:方法一次只能处理一类请求;单拿用户表来说,得需要创建五个Servlet;在url中输入的是urlpattern;默认只访问service方法;如何减少Servlet的个数呢? 增加了一个method参数;其他人有可能会喜欢…

腾讯云CVM S5服务器优惠价格表,买一年送3个月

腾讯云服务器CVM标准型S5有活动,CVM 2核2G S5优惠价280.8元一年自带1M带宽,15个月313.2元、2核4G配置748.2元15个月、4核8G配置1437.24元15个月、8核16G优惠价3048.48元15个月,公网带宽可选1M、3M、5M或10M,腾讯云服务器网txyfwq.…

【算法练习Day39】单词拆分多重背包的介绍

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 单词拆分多重背包总结&…

[BUUCTF NewStar 2023] week5 Crypto/pwn

最后一周几个有难度的题 Crypto last_signin 也是个板子题,不过有些人存的板子没到,所以感觉有难度,毕竟这板子也不是咱自己能写出来的。 给了部分p, p是1024位给了922-101位差两头。 from Crypto.Util.number import * flag b?e 655…

Winform 实现俄罗斯方块游戏(一)

第一步,先用GDI绘制小正方形方块,其它形状的用这个方块合成 如何绘制一个方块?先绘制两个正方形,如下: 然后四周用梯形填充,内部颜色用渐变,这样更有立体感,下篇介绍如何实现。

D-link未授权访问以及远程代码执行

随便输入一个错误密码,会跳转到页面: /page/login/login.html?errorfail继续访问有效页面漏洞url: /Admin.shtml然后访问管理页面去更改管理密码 直接构造payload访问漏洞url: /cgi-bin/execute_cmd.cgi?cmdid执行命令&#…

2023年11月5日网规考试备忘

早上题目回忆: pki体系 ipsec,交换安全(流量抑制) aohdlc bob metclaf —ethernet pon tcp三次握手 OSPF lsa?交换机组ospf配置问题,ping网关可通,AB不通 raid6 300G*8 网络利用率 停等协议10…

腾讯云CVM S5服务器4核8G配置性能测评和优惠价格表

腾讯云4核8G服务器CVM标准型S5实例性能测评,包括CPU型号、内存、系统盘、CVM实例规格性能测评,腾讯云4核8G租用优惠价格表,腾讯云服务器网txyfwq.com分享腾讯云4核8G服务器CVM S5性能测评和优惠价格表: 腾讯云4核8G服务器CVM S5性…

dupeGuru 清理微信重复文件

本文摘录于:https://www.bilibili.com/video/BV13p4y1G75Y/?spm_id_from333.337.search-card.all.click&vd_source483e5c52353ea59d1a5eadac7737591a只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 微信用了七八年,文件…

Java异常你还没有了解吗?

🤷‍♀️🤷‍♀️🤷‍♀️ 今天和大家一起学习一下Java中的异常! 清风的CSDN博客个人主页 🌂c/java领域新星创作者 🎉欢迎👍点赞✍评论❤️收藏 😛😛😛希望我…

【JavaScript】window 对象、location 对象、navigator 对象和 history 对象

1. window 对象 BOM (Browser Object Model ) 是浏览器对象模型: window对象是一个全局对象,也可以说是JavaScript中的顶级对象像document、alert()、console.log()这些都是window的属性,基本BOM的属性和方法都是window的所有通过var定义在全…