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'

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ中lazyqueue队列

lazyqueue队列非常强悍 springboot注解方式开启 // 使用注解的方式lazy.queue队列模式 非常GoodRabbitListener(queuesToDeclare Queue(name "lazy.queue",durable "true",arguments Argument(name "x-queue-mode",value "lazy&…

RocketMQ源码学习笔记:Broker启动流程

这是本人学习的总结,主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Broker启动流程2、一些重要的类2.1、MappedFile2.2、MessgeStore2.3、MessageStore的加载启动流程 3、技术亮点3.1、 内存映射3.1.1、简介3.1.2、源码 1、Broker启动流程 Broker启动流程…

upload-labs第14关

upload-labs第14关 第十四关一、源代码分析代码审计 二、绕过分析a. 制作图片码首先需要一个照片,然后其次需要一个eval.php。 b.上传图片码上传成功 c.结合文件包含漏洞进行访问访问:http://192.168.1.110/upload-labs-master/include.php?filehttp://…

【Spine学习16】之 人物面部绑定

1、创建头部骨骼 一根头骨 以头骨为父结点创建一个面部控制器face-holder 2、创建头发和face面部控制结点的变换约束 左右头发的约束指向为face结点 3、设定后发的变换约束,约束指向为face结点,反方向移动 设置参数为-100 同理,耳朵也依…

6.25C高级

终端输入两个数&#xff0c;判断两数是否相等&#xff0c;如果不相等&#xff0c;判断大小关系 #!/bin/bash if [ $1 -eq $2 ] thenecho $1$2 elif [ $1 -gt $2 ] thenecho "$1>$2" elseecho "$1<$2" fi 2.已知网址www.hqyj.com&#xff0c;使用e…

Java-day01--基础知识

1、计算机基础知识&#xff1a; 计算机主要是由硬件和软件组成&#xff0c;软件指的是特定顺序的计算机指令&#xff0c;硬件主要可以看成是系统软件和应用软件等。 目前java主流分成三种&#xff1a;javase&#xff08;标准版&#xff09;、javame&#xff08;小型版&#x…

TCP: 传输控制协议

TCP: 传输控制协议 TCP的服务TCP 的首部小结 本系列文章旨在巩固网络编程理论知识&#xff0c;后续将结合实际开展深入理解的文章。 TCP的服务 T C P和U D P都使用相同的网络层&#xff08;I P&#xff09;&#xff0c;T C P却向应用层提供与U D P完全不同的服务。 T C P提供一…

数据结构-----【链表:刷题】

-------------------------------------------基础题参照leetcode---------------------------------------------------------------------------------------------------------- 【2】两数相加 /*** Definition for singly-linked list.* struct ListNode {* int val;…

Midjourney 出图效果总比别人差?看看是不是这3点没做好!

前言 大家好&#xff0c;我是AI绘画咪酱~ 很多小伙伴都会在「优设 AI 绘画交流群」以及文章评论区中非常积极地和我探讨 Midjourney 的使用问题&#xff0c;我在帮助大家的同时自己也学到了不少新的技巧。今天就写一篇文章解释 3 个比较常见的疑问&#xff0c;希望对大家有帮…

vue项目无后台版本打包上传到服务器

打包项目 也可以在文件目录下npm run build 生成dist文件夹 将dist文件夹里的所有文件拷贝到站点的根目录&#xff0c;这里使用宝塔面板进行操作 前提你得先创建站点&#xff0c;域名绑定等操作

IIC学习笔记(立创STMF4开发板)

目录 #I2C涉及相关知识 #I2C相关介绍 欢迎指正&#xff0c;希望对你&#xff0c;有所帮助&#xff01;&#xff01;&#xff01; 个人学习笔记&#xff0c;参考文献&#xff0c;链接最后&#xff01;&#xff01;&#xff01; #I2C涉及相关知识 SDA串行数据线&#xff1a; Ser…

win11误删生物识别设备

不小心给删掉了&#xff0c;我当时删的时候没有打勾&#xff0c;解决方法如下&#xff1a; ************ 很简单&#xff0c; 1.点一下 设置 然后找到下面的界面&#xff0c; 2.找到圈出来的功能 3.再找 “可选更新”的功能点进去 4.一下界面可能有一个能勾选&#xff0c;也可…

怎么样才能让老旧的和颜色受损、丢失的照片重新上色呢?

怎么样才能让老旧的和颜色受损、丢失的照片重新上色呢&#xff1f;大家有时候在家中打扫卫生的时候&#xff0c;偶然发现了自己爸爸妈妈以前拍的照片&#xff0c;但是照片颜色已经受损的很严重了&#xff0c;几乎就是黑白的颜色&#xff0c;很难看清楚爸爸妈妈年轻时候的样子&a…

泵设备的监测控制和智慧运维

泵是一种输送流体或使流体增压的机械。它通过各种工作原理&#xff08;如离心、柱塞等&#xff09;将机械能转换为流体的动能或压力能&#xff0c;从而实现液体的输送、提升、循环等操作。 泵的一些具体应用场景&#xff1a; 1.智能水务&#xff1a;在城市供水管网中&#xff…

Lesson 39 Don‘t drop it!

Lesson 39 Don’t drop it! 词汇 front n. 前面 搭配&#xff1a;in front of … 在……前面&#xff08;外部&#xff09;    in the front of … 在……前面&#xff08;内部&#xff09; 例句&#xff1a;Bobby坐在Sam的前面。    Bobby is sitting in front of Sam…

mysql join on 与left join on

1.假如 有 a b 两个表&#xff0c;我们 用a表作为主表 &#xff0c;b表作为子表&#xff0c;在我们使用 left join on 查询的时候&#xff0c;如果右表没有查询到数据&#xff0c;那么右表会显示为null&#xff0c;而不是直接查询不到值 我们看例子就ok a 表 b表 我们可以看…

高考填报志愿,为何要优先考虑个人兴趣 ?

随着高考成绩纷纷出炉&#xff0c;考生又要面对人生另外一个重要的选择&#xff0c;那便是填报志愿&#xff0c;这关系到自己能否进入满意的学校和专业。如果考生对上述两个方面都不满意&#xff0c;那高考目的就没有达到。既然填报志愿如此重要&#xff0c;考生和家长在选择的…

vue3-openlayers marker 光晕扩散(光环扩散)(postrender 事件和 render 方法)

本篇介绍一下使用 vue3-openlayers marker 光晕扩散&#xff08;光环扩散&#xff09;&#xff08;postrender 事件和 render 方法&#xff09; 1 需求 marker 光晕扩散&#xff08;光环扩散&#xff09; 2 分析 marker 光晕扩散&#xff08;光环扩散&#xff09;使用 post…

three.js 第十一节 - uv坐标

// ts-nocheck // 引入three.js import * as THREE from three // 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入lil.gui import { GUI } from three/examples/jsm/libs/lil-gui.module.min.js // 导入tween import * as T…

PUBG绝地求生·阿童木透视自瞄免费辅助 v6.24

在享受电子游戏的精彩世界时&#xff0c;家庭用户的数据安全和系统稳定性是不容忽视的重要方面。为了确保在使用游戏辅助工具时既能获得愉悦的游戏体验&#xff0c;又能保障个人数据和系统的安全&#xff0c;这里有一些建议和操作指南需要大家注意。 对于家庭用户而言&#x…