Linux集群自动化维护-Ansible

1.1Ansible概述

  • 自动化运维:批量管理,批量分发,批量执行,维护。。
  • 是python写的

批量管理工具:

Ansible(无客户端):无客户端,基于ssh进行管理与维护

Saltstack (python写的) : 需要安装客户端,基于ssh进行管理,与ansible

terraform (公有云-管理系统,比如创建100台阿里服务器/多少个磁盘,多少个系统) :批量管理基础设施(tf批量创建有100台公有云)github去下载软件

1.2环境架构准备

  • Inventory 主机清单:被管理主机的ip列表,分类
  • ad-hoc模式:命令行批量管理(使用ans模块),临时任务
  • playbook剧本模式:类似于把操作写出脚本,可以重复运行这个脚本
    在这里插入图片描述

部署及配置

yum install -y ansible

修改配置文件关闭主机Host_key_checking .

修改配置文件开启日志功能

.[root@m01 ~]# egrep -vn '^$|#'
/etc/ansible/ansible.cfg
10:[defaults]
71:host_key_checking = False
111:log_path = /var/log/ansible.log
327:[inventory]340:[privilege_escalation]
346:[paramiko_connection]370:[ssh_connection]
431:[persistent_connection]
445:[accelerate]
460:[selinux]
469:[colors]
485:[diff]

ansible必会模块

  • ansible模块概述:ansible中模块类似于linux中的命令,我们通过Linux命令管理系统,通过ansible模块实现批量管理

  • ansible中模块一般相当于Linux中一些命令,yum模块,file模块,user模块

  • ansible中的模块拥有不同的选项这些选项一般是一些单词,拥有自己记得格式与要求

模块分类

命令和脚本模块

  • command模块 ansible默认的模块 执行简单的命令,不支持特殊符号

  • shell模块 执行命令 支持特殊符号

  • script模块 分发脚本并执行

文件

  • file 创建目录,文件,软链接
  • copy 远程分发文件,修改权限,所有者,备份

服务

  • systemd 服务管理
  • service 服务管理(了解)

软件包

  • yun源 yum_repository
  • yum命令

系统管理

  • get_url下载软件
  • mount模块 挂载
  • cron模块 定时任务

用户管理

  • group模块 管理用户组
  • user模块 该你了用户
  • 压缩解压(unarchive),rsync模块(synchronize),数据库模块(mysql_db,mysql_user)…

ansible-doc -l 查看

[root@m01 ~]#ansible-doc -l |wc -l
3387

命令脚本模块

command模块

  • 是ans默认的模块。适用于简单的命令,不支持特殊符号
  • 批量获取所有的主机的主机名

执行hostname命令

ansible

[root@m01 ~]#vim /etc/ansible/hosts

在这里插入图片描述
主机清单必会格式:

主机清单格式:[分类或分组的名字] #注意分类要体现出服务器的作用

ip地址或主机名或域名 #注意主机名要能解析才行

案例:对主机分组并进行连接测试

[root@m01 ~]# cat/etc/ansible/hosts
[web]
172.16.1.7
[backup]
172.16.1.41
[nfs]
172.16.1.31
[root@m01 ~]# ansible all  -m ping172.16.1.31 | SUCCESS => {  "ansible_facts": {    "discovered_interpreter_python":"/usr/bin/python"},
changed": false,"ping": "pong"
}
172.16.1.41 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python":
"
/usr/bin/python"
},"changed": false,"ping": "pong"
}
172.16.1.7 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python":
"
/usr/bin/python"
},"changed": false,"ping": "pong"
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 批量删除/tmp/目录下的所有内容

[root@m01 ~]#ansible all -m shell -a ‘rm -fr /tmp/*’

shell模块虽然和modle模块相似,但是shell支持特殊命令
在这里插入图片描述
ll /tmp/可以进行查看

  • 批量获取ip地址

[root@m01 ~]#ip a s ens33

[root@m01 ~]#ip a s ens33 |awk -F’[/ ]+’ ‘NR==5{print $3}’
在这里插入图片描述
测试:

[root@m01 ~]#ansible all -m shell -a "ip a s ens33 |awk -F'[/  ]+' 'NR==5{print \$3}'"

在这里插入图片描述
shell模块不推荐使用执行较为复杂的指令,如果需要执行放到脚本中进行执行

避免因为特殊符号与引号进行导致问题

script模块

  • 执行流程:分发脚本(传输脚本),在被管理端运行脚本

在m01管理机上进行编写脚本:
在这里插入图片描述
在这里插入图片描述
进行检查

[root@m01 ~]#ansible all -m script -a’/server/scripts/xunjian.sh’
在这里插入图片描述
查看python及ansible进程号
在这里插入图片描述
这里查看进程,只看到了ansible控制进程,这是因为ansible在这里进行了串行

(除非使用并行功能),并且通过ssh连接到远程主机进行执行命令

若为串行,需要登录到各个分别的服务器登录查看ansible相关进程信息

若ansible剧本包含其任务,不仅为script模块,它们的进程也有可能在后台进行运行,不会直接显示在ansible的控制进程中

在这里插入图片描述
ansible会等待一个主机上的脚本执行完毕后再开始下一个主机的脚本执行(但是并不意味着ansible)并不意味着ansible控制进程本身上脚本执行创建单独的进程可以使用

ansible all -m script -a '/server/scripts/xunjian.sh' --forks 10
forks进行会同时最多连接10个本地进程,它会创建足够多多进程管理进行连接

在管理机m01上进行ll /root/.ansble/tmp/

查看为0

在进行运行脚本,查询会看到相关的信息,然后可以cat进行查询巡检脚本内容

文件相关模块

file模块

  • file模块不仅可以管理文件,还可以管理目录,及软链接
  • file模块相当于touch,mkdir,rm ,ln -s命令相结合的模块

path 路径(目录文件会写)

src 源文件一般用于link(创建软链接模式,并且指定源文件)

state:状态(模式)具体要做什么,删除/创建/操作文件,目录;state=directory床啊金目录,state=file(默认)state=linl创建软链接;state touch创建文件

state=absent删除(如果是目录递归删除目录)

mode=755创建并修改权限

owner=root

group=root

创建文件

ansible all -m file -a 'path=/wulin/a/b/c/d/ state=directory'

在这里插入图片描述
在这里插入图片描述
创建软链接

[root@m01 ~]#ansible all -m file -a 'path=/opt/hosts src=/etc/hosts  state=link'

在这里插入图片描述
创建/ans-backup/目录结果是wulin

[root@m01 ~]#ansible all -m file -a 'path=/ans-backup mode=700 group=root  owner=wulin  state=directory'

在这里插入图片描述
在这里插入图片描述
删除文件或目录

[root@m01 ~]#ansible all -a 'ls-l /wulin/'

在这里插入图片描述
copy模块

  • 批量分发:scp,1个节点()发送文件或压缩包到所有被管理者端,copy是单向传输

src source源文件,管理端的某一个文件

dest destination 目标被管理者端的目录/文件

backup backup=yes 会在覆盖前进行备份

mode修改权限

owner修改为指定所有者

group修改为指定用户组

[root@m01 ~]#ansible all -m copy -a ‘src=/etc/hosts dest=/etc/hosts backup=yes’

[root@m01 ~]#ansible all -m yum -a 'name=tree,lrzsz update_cache=yes state=present'

在这里插入图片描述

[root@m01 ~]#ansible all -m get_url -a 'url="https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent-6.0.13-release1.el7.x86_64.rpm" dest=/tmp/'

在这里插入图片描述
在这里插入图片描述

[root@m01 ~]#ansible all -m get_url -a 'url="https://tengine.taobao.org/download/tengine-2.3.3.tar.gz" dest=/app/tools/'

在这里插入图片描述
[root@m01 ~]#wget [root@m01 ~]#ansible all -m get_url -a ‘url=“https://tengine.taobao.org/download/tengine-2.3.3.tar.gz” dest=/app/tools/’

[root@m01 ~]#cat /etc/resolv.conf

Generated by NetworkManager

search localdomain
nameserver 192.168.28.2

ping192.168.28.2(测试是否拿到淘宝nameserver地址)
在这里插入图片描述
在这里插入图片描述给web服务器配置yum源

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[root@m01 ~]#ansible web -m yum_repository -a 'name=ngx description="nginx repo" baseurl="http://nginx.org/packages/centos/$releasever/$basearch/" gpgcheck=no enabled=yes'

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
批量创建用户

[root@m01 ~]#ansible all -m user -a 'name=www-ans uid=2000 shell=/sbin/nologin create_home=no state=present'

在这里插入图片描述
更多内容关注小编!!!

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

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

相关文章

Python武器库开发-武器库篇之ThinkPHP 2.x 任意代码执行漏洞(六十三)

Python武器库开发-武器库篇之ThinkPHP 2.x 任意代码执行漏洞(六十三) PHP代码审计简介 PHP代码审计是指对PHP程序进行安全审计,以发现潜在的安全漏洞和风险。PHP是一种流行的服务器端脚本语言,广泛用于开发网站和Web应用程序。由…

探索Linux的奇妙世界:第二关---Linux的基本指令1

1. xshell与服务器的连接 想必大家在看过上一期视频时已经搭建好了Linux的环境了并且已经下好了终端---xshell了吧?让我来带大家看一看下好了是什么样子的: 第一次登陆会让你连接你的服务器,就是我们买的云服务器,买完之后需要把公网地址ip复制过来进行链接,需要用户名和密码连…

React hydrateRoot如何实现

React 服务器渲染中,hydrateRoot 是核心,它将服务器段的渲染与客户端的交互绑定在一起,我们知道 React 中 Fiber Tree 是渲染的的核心,那么 React 是怎么实现 hydrateRoot 的呢?首先我们验证一下,hydrateRo…

Python基础教程(三十):math模块

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

基于vue3 + ant-design 使用阿里图标库iconfont.cn

对于使用 iconfont.cn 的用户&#xff0c;通过设置 createFromIconfontCN 方法参数对象中的 scriptUrl 字段&#xff0c; 即可轻松地使用已有项目中的图标。 组件封装 IconFont <template><IconFont :type"iconType" /> </template><script se…

Web应用和Tomcat的集成鉴权1-BasicAuthentication

作者:私语茶馆 1.Web应用与Tomcat的集成式鉴权 Web应用部署在Tomcat时,一般有三层鉴权: (1)操作系统鉴权 (2)Tomcat容器层鉴权 (3)应用层鉴权 操作系统层鉴权包括但不限于:Tomcat可以和Windows的域鉴权集成,这个适合企业级的统一管理。也可以在Tomcat和应用层独立…

湖南(市场调研)源点咨询 新产品上市前市场机会调研与研究分析

湖南源点调研认为&#xff1a;无论是创业公司&#xff0c;还是在公司内部探索新的项目或者新的产品线等&#xff0c;首先都要做“市场机会分析与调研“&#xff0c;要真正思考并解答以下疑问&#xff1a; 我们的目标客户群体是谁&#xff0c;他们如何决策&#xff1f; 我们所…

windows下mysql修改 my.ini的datadir后 `Access denied`

1. 背景 window安装mysql数据库时&#xff0c;不能指定数据文件存放位置&#xff08;默认安装路径 "C:/ProgramData"&#xff09;。 只能通过修改mysql.ini来更改数据文件存放目录。 2. 问题&#xff1a; 修改mysql.ini后&#xff0c;mysql 出现 "Access den…

Python爬虫学习 | Scrapy框架详解

一.Scrapy框架简介 何为框架&#xff0c;就相当于一个封装了很多功能的结构体&#xff0c;它帮我们把主要的结构给搭建好了&#xff0c;我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据&#xff0c;提取数据的框架&#xff0c;我们熟知爬虫总共有四大部分&am…

【Java】已解决java.lang.NoSuchMethodException异常

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.lang.NoSuchMethodException异常 在Java编程中&#xff0c;java.lang.NoSuchMethodException是一个常见的运行时异常&#xff0c;它通常表示尝试通过反射调用一个不存在…

耳夹式佩戴的舒适体验,拥有AI功能的生活助手,塞那Z50耳夹耳机上手

在数码产品层出不穷的今天&#xff0c;一款能够脱颖而出的耳机&#xff0c;不仅要有出色的音质&#xff0c;更要有人性化的设计和独特的功能。最近我就发现了这么一款很有趣的耳机&#xff0c;它是来自sanag塞那Z50耳夹耳机&#xff0c;这款耳机有着新颖的佩戴方式和动听的音质…

「动态规划」如何求子数组中等差数列的个数?

413. 等差数列划分https://leetcode.cn/problems/arithmetic-slices/description/ 如果一个数列至少有三个元素&#xff0c;并且任意两个相邻元素之差相同&#xff0c;则称该数列为等差数列。例如&#xff0c;[1,3,5,7,9]、[7,7,7,7]和[3,-1,-5,-9]都是等差数列。给你一个整数…

win10环境配置ollama-ui运行llama3模型

先说我的笔记本电脑配置intel-i7-11390h,4核8处理器&#xff0c;内存16G。显卡NVIDA GeFroce MX450&#xff0c;2G显存&#xff0c;这是一台5000元左右的电脑。 我用它跑roop、sd1.5、ffusion2、ChatTTs还有pythonpytorch的自定义模型&#xff0c;现在用来跑llama3。当然&…

Redis-数据类型-Bit的基本操作-getbit-setbit-Bitmap

文章目录 0、Bitmaps&#xff08;位图&#xff09;1、查看redis是否启动2、通过客户端连接redis3、切换到db7数据库4、设置&#xff08;或覆盖&#xff09;一个键&#xff08;key&#xff09;的值&#xff08;value&#xff09;5、获取存储在给定键&#xff08;key&#xff09;…

32.基于分隔符解决黏包和半包

LineBasedFrameDecoder 基于换行/n (linux)或回车换行/r/n(windows)进行分割。 使用LIneBasedFrameDecoder构造方法,需要设定一个最大长度。 如果超过了最大长度,还是没有找到换行符,就这位这个数据段太长了,抛出ToolLongFrameException DelimiterBasedFrameDecoder …

YOLOv8白皮书-第Y7周:训练自己的数据集

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、环境 语言&#xff1a;Python3、Pytorch开发环境电脑系统&#xff1a;Windows 10语言环境&#xff1a;Python 3.9.2编译器&#xff1a;VS Code显卡&#…

上交商汤联合提出一种虚拟试穿的创新方法,利用自监督视觉变换器 (ViT) 和扩散模型

上交&商汤联合提出一种虚拟试穿的创新方法&#xff0c;利用自监督视觉变换器 (ViT) 和扩散模型&#xff0c;强调细节增强&#xff0c;通过将 ViT 生成的局部服装图像嵌入与其全局对应物进行对比。虚拟试穿体验中细节的真实感和精确度有了显着提高&#xff0c;大大超越了现有…

Honeyview图片查看:从未如此流畅

名人说&#xff1a;一点浩然气&#xff0c;千里快哉风。 ——苏轼 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、软件介绍1、Honeyview2、核心特点 二、下载安装1、下载2、安装 三、使用方法1、图片打开2、自…

FP7195做大功率钓鱼灯应用方案,0.1%深度无极无频闪调光调色应用,调光曲线顺滑无突兀

文章目录 文章目录 方案背景 一、夜钓灯电路框架 二、FP7195芯片介绍 芯片参数 总结 方案背景 目前夜钓正在逐渐变得时尚起来&#xff0c;随着夜钓群体的年轻化&#xff0c;人们对于夜钓灯的审美要求也越来越高。夜钓灯作为夜间钓鱼的重点装备&#xff0c;不仅仅需要高质量的光…

RIP路由协议汇总、版本兼容、定时器、协议优先级配置(华为)

#交换设备 RIP路由协议汇总 一、原理概述 当网络中路由器的路由条目非常多时&#xff0c;可以通过路由汇总&#xff08;又称路由汇聚或路由聚合&#xff09;来减少路由条目数&#xff0c;加快路由收敛时间和增强网络稳定性。路由汇总的原理是&#xff0c;同一个自然网段内的…