需要同时控制几十台服务器?ansible帮助我们轻松搞定!

需要同时控制几十台服务器?ansible帮助我们轻松搞定!

接到一个需求,需要到几十台目标服务器上执行测试任务,并汇总数据,想想看我们操作几台服务器还可以,几十台就有点效率低了,不要怕,ansible就是专门干这个的!

使用Ansible可以方便地批量执行命令或任务。下面是一个简单的示例,演示如何使用Ansible批量在多台服务器上执行fio命令:

安装Ansible:

老规矩,先看你的服务器是什么系统,
centos:yum install ansible
Ubuntu:
sudo apt update
sudo apt install ansible

编写Ansible Playbook:

创建一个Ansible Playbook来执行命令。
例如以fio示范:创建一个名为fio_playbook.yml的文件,内容如下:

- name: Install fio and create directories on servershosts: serversbecome: yestasks:- name: Install fio packageapt:name: fiostate: presentupdate_cache: yes- name: Create directoriescommand: cd /data && mkdir -p /test/fio-test/testdir

servers:需要在/etc/ansible/hosts中定义好
例如:
[servers]
100.0.0.1
100.0.0.2

服务器做免密登录

我们安装ansible的服务器称为控制端,先生成控制端的sshkey:
执行:ssh-keygen
然后复制到被控端的服务器,执行
vim .ssh/authorized_keys

echo 你的key >> .ssh/authorized_keys (>>千万不要写成一个>,不然会把authorized_keys里面之前的内容都覆盖掉)

检测服务器的连通性

ansible all -i /etc/ansible/hosts -m ping
测试成功的返回:
目标主机ip | SUCCESS => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python3”
},
“changed”: false,
“ping”: “pong”
}

运行Ansible Playbook:

ansible-playbook -i /etc/ansible/hosts fio_playbook.yml
这将使用你的inventory文件中定义的主机组,在每台服务器上执行命令。

注意事项:

一般这个流程走下来是没问题的,遇到问题最多的是和远端的连接问题:

Permission denied (publickey):

vi /etc/ssh/sshd_config修改下面的参数
PubkeyAuthentication yes
PasswordAuthentication yes

配置上建议的修改

报错:UNREACHABLE! =>

{“changed”: false, “msg”: “Failed to connect to the host via ssh: Host key verification failed.”, “unreachable”: true}
有几种办法可以自行百度,我都尝试过后发现最简单粗暴最有效的:
vi /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False

并发控制

[defaults]
forks = 10
这个值默认是5,所以要同时执行几十台服务器的测试,和性能有关系的,一定要修改为比你的并发要大的值,比如你要同时控制100台,那就改为100或者大于100的数字

其他功能

拷贝被控机器生成的测试结果,用fetch

- hosts: servertasks:- name: Fetch test.log from each target machinefetch:src: /test/test.logdest: /test/logs/{{ ansible_host.replace('.', '-') }}.logflat: yes

然后可以把获取到的结果通过Python或者其他工具,根据你的需求进行数据清洗和汇总。

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

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

相关文章

人工智能大模型开发之远程服务器编写代码IDE,我选Jetbrains Gateway,弃用VS Code

应用背景: 我们在大模型等抹模型训练的时候,需要Ubuntu服务器,或者Windows WSL子系统,这个时候你可能会考虑VS Code中的remote ssh插件来实现,但是VS Code的界面以及操作我不是很喜欢,但是使用Pycharm,我就觉得倍感亲切,而且最新版的2024.1版本的Jetbrains所有产品均支…

判断一个对象数组中的是否有属性为空

项目场景: 判断一个对象数组中的是否有属性为空 代码描述 hasEmptyProperty(objArray) {return Object.values(objArray).some(obj > {return Object.values(obj).some(value > value );});

Python 发送钉钉消息(markdown格式)

send.py import requests import json from config import *def sendDing():"""给钉钉发送消息,使用markdown格式在发送的消息后,需要手动一次"""text msg .join([f"{i}" for i in at_list])data {"m…

MATLAB数值类型

MATLAB 数值 MATLAB支持各种数字类,包括有符号和无符号整数以及单精度和双精度浮点数。默认情况下,MATLAB将所有数值存储为双精度浮点数。 您可以选择将任何数字或数字数组存储为整数或单精度数字。 所有数值类型都支持基本数组运算和数学运算。 转换…

pyqt拖入图片并显示

pyqt拖入图片并显示 介绍效果代码 介绍 像拖入文本一样,把图片拖入到窗体中显示。 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout from PyQt5.QtGui import QPixmap, QDragEnterEvent, QDropEvent from PyQt5.Q…

顺序二叉树的删除(第二版本)

大家好我是新生小白&#xff0c;由于前面文章出版了bug所以在这个文章进行更新。主要错误地方为判断树里是否有要删除的元素的判断函数&#xff08;look&#xff09;出现错误&#xff0c;look里面循环条件出现错误&#xff01; 以下是全新代码&#xff1a; #include<iostr…

Ollama配置webui连接大预言模型

Ollama配置Web UI连接大预言模型 默认ollama安装后&#xff0c;chat对话只有命令行界面&#xff0c;交互体验较差。借助open-webui可以通过web界面连接ollama&#xff0c;从而实现类似chatgpt式的web交互体验。 使用家用PC实践记录如下&#xff1a; 1. 环境配置 本次使用的操作…

笔记-mathtype公式在PDF或打印出来显示不全

原文中的公式&#xff1a; 纸质版打印出来的公式有缺失 问题描述&#xff1a;mathtype公式编辑器所编辑的公式转成PDF或者打印出来有缺失 以下是解决方法的具体描述。 目录 一、准备工作二、操作步骤 一、准备工作 1、工具&#xff1a;mathtype、微软word 二、操作步骤 …

html如何实现按钮跳转,以及访问随机跳转

html如何实现按钮跳转&#xff0c;以及访问随机跳转。 <!DOCTYPE html> <html> <head><title>访问者跳转模拟</title><script type"text/javascript">function redirectToPort() {// 基于时间或随机数生成端口号var basePort …

数据可视化在不同行业中有哪些应用?

数据可视化即通过图表的形式将数据的内在信息有逻辑性地呈现给用户&#xff0c;使用户更容易发现数据中蕴藏的规律&#xff0c;找出问题&#xff0c;进而做出决策&#xff1b;另一方面&#xff0c;数据可视化项目也是一张重要的名片&#xff0c;是企业数字化建设效果的呈现。本…

el-select下拉框修改背景色

效果图&#xff1a; 1.el-select标签添加teleported属性&#xff0c;并设置为false 2.设置css样式

c++ 原子操作

虽然原子操作通常被称为“无锁”&#xff0c;但实际上它们在内部可能使用了锁来保证操作的原子性。然而&#xff0c;与传统的锁相比&#xff0c;原子操作通常具有更轻量级的实现&#xff0c;因为它们只涉及一个共享变量&#xff0c;而不需要对整个临界区进行加锁。 原子操作通…

go的反射操作reflect实践

通过反射机制&#xff0c;找到相应的Left或者Right广告 type SearchAdsObj struct {Left PositionAdsObj json:"left"Right PositionAdsObj json:"right" }func getFieldByName(obj SearchAdsObj, fieldName string) (interface{}, error) {fmt.Pr…

偏微分方程算法之九点紧差分法

目录 一、研究目标 二、理论推导 三、算例实现 四、结论 一、研究目标 我们已经在专栏中介绍了椭圆型偏微分方程的五点菱形差分格式&#xff0c;这里我们继续以该方法为背景&#xff0c;探讨如何提高五点法的精度&#xff0c;即从二阶精度提升到四阶精度。 研究目标现继续以…

qt5-入门-2D绘图-基础

参考&#xff1a; QPainter_w3cschool https://www.w3cschool.cn/learnroadqt/k7zd1j4l.html C GUI Programming with Qt 4, Second Edition 本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt 5.12 代码已经测试通过。其他例子日后更新。 目录 基础知识penb…

高德地图API入门使用vue

文章目录 最终效果一、在高德的开放平台申请key二、下载依赖&#xff1a;三、完整代码 最终效果 页面显示高德地图 一、在高德的开放平台申请key 在高德的开放平台申请key&#xff1a; https://console.amap.com/dev/key/app 申请的类型为web端&#xff08;js api&#xff…

LeetCode45:跳跃游戏Ⅱ

题目描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 nums[n …

如何防止源代码泄露?6种企业防泄密解决方案

在数字化转型浪潮中&#xff0c;源代码成为企业宝贵的核心资产&#xff0c;其安全性直接关系到企业的生存和发展。源代码泄露不仅会导致商业秘密外泄&#xff0c;还可能造成严重的经济损失和品牌信誉下降。为此&#xff0c;采用高效的防泄密措施&#xff0c;如华企盾DSC数据防泄…

Redis使用手册之字符串

《Redis使用手册字符串设置》 目录 **《Redis使用手册字符串设置》**** SET&#xff1a;为字符串键设置值**** GETSET&#xff1a;获取旧值并设置新值**** MSET&#xff1a;一次为多个字符串键设置值**MGET&#xff1a;一次获取多个字符串键的值**** MSETNX&#xff1a;只在键不…