首页 > 其他分享 >初步利用Ansible实现批量服务器自动化管理

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

时间:2023-11-22 18:32:19浏览次数:25  
标签:批量 ansible yaml Ansible inventory 清单 服务器 节点

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管理的主机部署。

架构如下:

初步利用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查看版本号,如图:

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

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

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

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

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

在命令行输入命令:

# ansible all --list-hosts

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

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

在控制节点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 [email protected]
# ssh-copy-id [email protected]
# ssh-copy-id [email protected]

执行结果如下:

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

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

初步利用Ansible实现批量服务器自动化管理_清单文件_06

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

# ansible all -m ping

返回结果如下:

初步利用Ansible实现批量服务器自动化管理_清单文件_07

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

3.创建清单

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

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

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

下面输入命令进行验证:

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

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

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

初步利用Ansible实现批量服务器自动化管理_清单文件_09

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

# ansible virtualmachines -m ping -i inventory.yaml

返回结果如下:

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

4.创建剧本(playbook)

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

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

  • Play - 按顺序排列的任务列表,与inventory中受管节点对应映射。
  • 任务(task) - 定义Ansible要执行的一个或多个模块操作的列表。
  • 模块:Ansible在受管节点上运行的代码单元或二进制文件。Ansible的模块按集合组织,每个模块有一个完全限定的集合名称(Fully Qualified Collection Name, FQCN)。

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

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

初步利用Ansible实现批量服务器自动化管理_清单文件_11

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

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

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

返回结果如下:

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

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

5.总结

在本篇文章中, 主要对Ansible组件的安装和配置进行了探索, 并通过自行创建一个简单的清单和剧本完成了对三台虚拟机服务器的简单批量管理任务, 在后面的任务中, 将继续探索一些更复杂的任务来熟悉Ansible的更多强大功能。


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


标签:批量,ansible,yaml,Ansible,inventory,清单,服务器,节点
From: https://blog.51cto.com/u_12788968/8519182

相关文章

  • 恒创科技:美国云服务器CN2/纯国际/高防线路介绍
    ​谈到国外云服务器,美国云服务器必有一席之地。但是,一般来说使用美国云服务器,线路质量是一个重要的考虑因素。如果线路选择不合理,就有可能造成速度减慢或者安全隐患问题产生。本文将介绍美国云服务器的CN2/纯国际/高防三种线路,帮助读者更好地了解其特点和优势。精品CN2......
  • 数据库服务器开启内存大页优化及机制
    一、背景在一次Oracle数据库健康检查报告中,显示PageTables所占用内存过大,建议配置大页PageTables(页表):用于将内存的虚拟地址翻译成物理地址,随着内存地址分配得越来越多,这个需要从Linux分页了解起二、Linux分页在计算机操作系统中,内存分页是一种内存管理方案,也是现代操作系统......
  • 服务器性能参数查询(top、free、uptime等其他)
    Linux常用的性能指标命令原创 Reathin 沐雨花飞蝶 2023-11-2008:20 发表于江西收录于合集#linux7个#linux系统2个沐雨花飞蝶一位咸鱼Coder的学习、生活与见闻102篇原创内容公众号 uptimeuptime命令用于显示系统的运行时间和平均负载。......
  • Web服务器搭建网站
    Web服务器配置(windowssever2008)1.在此之前确保CD/DVD已经使用ISO文件2.下一步选择Web服务器(IIS)3.由此这里要搭建动态脚本语言于是勾选应用程序开发4.然后继续下一步、安装5.Win+r输入inetmgr来到这个界面可以进入到IIS后台查看配置的网站 6.添加一个网站,如果不指......
  • 19.python 创建一个本地web服务器
    编写一个server.py文件1importhttp.server2importsocketserver34PORT=800056Handler=http.server.SimpleHTTPRequestHandler78withsocketserver.TCPServer(("",PORT),Handler)ashttpd:9print("Serverstartedatlocalhos......
  • 递归批量替换当前文件夹下的文件的指定内容
    find./-typef-execgrep-q"被替换的字符串"{}\;-execsed-i's/被替换的字符串/新字符串/g'{}+这个命令的含义是:find./-typef:在当前目录及其子目录下查找所有文件。-execgrep-q"被替换的字符串"{}\;:对每个文件执行grep命令,检查是否包含"被替换的字符串......
  • Python在使用pandas时内存使用过大导致服务器宕机,有哪些优化方法?
    当使用pandas处理大规模数据时,内存使用量可能会迅速增加,导致服务器宕机。为了解决这个问题,可以采用以下几个优化方法:数据类型优化:使用更小的数据类型,例如将int64转换为int32或int16,节省内存空间。对于字符串类型,尽量使用'category'类型,它会使用更少的内存。分块处理:使......
  • 9.轻量级本地服务器
    1.http-server需要安装node环境管理员权限下全局安装:npminstallhttp-server-g开启服务:在你需要运行的文件夹下开启http-server如果报错:http-server之后不断的提示http-server不是内部或外部命令需要添加环境变量,查看当前node的安装包路径输入npmconfigls查看npm安......
  • wxid批量转换微信号接口工具,自动转换二维码,开源API分享!
    这个是今天客户定制的,就是从微信群导出了很多WXID,然后实现通过WXID加好友,我就直接调用了微信的接口,说明一下这是微信公开的接口,不存在HOOK或者是逆向技术存在的,公开接口,任何人都可以调用,我就是把接口通过易语言实现了批量生成的功能效果。界面图:  WXID添加效果,不是微信号,是......
  • 高防服务器和普通服务器之间的区别是什么
    高防服务器和普通服务器之间的区别是什么何谓服务器?服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高......