自动化运维工具——ansible安装及模块介绍
目录
一、ansible——自动化运维工具
1.1 Ansible 自动运维工具特点
1.2 Ansible 运维工具原理
二、安装ansible
三、ansible命令模块
3.1 command模块
3.2 shell模块
3.3 cron模块
3.4 user模块
3.5 group 模块
3.6 copy模块
3.7 file模块
3.8 ping模块
3.9 service模块
3.10 script模块
3.11 yum模块
3.12 setup模块
一、ansible——自动化运维工具
1.1 Ansible 自动运维工具特点
- Ansible 与 Saltstack 均是基于 Python 语言开发,Ansible 只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为 Ansible 是基于 SSH 远程管理,而Linux服务器大都离不开SSH,所以Ansible不需要为配置工作添加额外的支持。
- Ansible 安装使用非常简单,而且基于上千个插件和模块实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。很多读者在使用 Ansible 工具时,认为 Ansible比 Saltstatck 执行效率慢,其实不是软件本身慢,是由于 SSH 服务慢,可以优化 SSH 连接速度及使用 Ansible 加速模块,满足企业上万台服务器的维护和管理。
1.2 Ansible 运维工具原理
- Ansible分为控制端和被控端,主要是基于SSH协议去管理客户端,被控端是无需安装Agent插件的,Ansible会读取控制端hosts文件,根据文件中定义IP列表信息,调取本地的各个模块对被控端机器实现批量、并发的配置管理和维护,如果任务比较复杂可以写成PlayBook剧本进行分发管理;
Ansible 自动运维管理工具优点:
- 轻量级,更新时,只需要在操作机上进行一次更新即可;
- 采用 SSH 协议;
- 不需要去客户端安装 agent;
- 批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
- 使用 python 编写的,维护更简单;
- 支持 sudo 普通用户命令;
- 去中心化管理。
二、安装ansible
#192.168.19.2
hostname ansible
su#192.168.19.3
hostname webserver
su#192.168.19.4
hostname mysql
susystemctl stop firewalld
setenforce 0
#安装epel扩展源
yum -y install epel-release
yum -y install ansible
#树型查询工具
yum -y install treetree /etc/ansible
vim /etc/ansible/hosts#配置主机清单
[webservers]
192.168.19.3
[dbservers]
192.168.19.4
#生成密钥对
ssh-keygen -t rsa
123123
123123ssh-copy-id root@192.168.19.3
ssh-copy-id root@192.168.19.4
每次查询都需要输入密钥
#可以使用ssh-agent代理
ssh-agent bash
ssh-add
123123ansible webserver -m command -a 'date'
三、ansible命令模块
3.1 command模块
命令格式:ansible [主机] [-m 模块] [-a args]#列出所有已安装的模块,按q退出
ansible-doc -l #所有主机执行data命令,其中all可以换成IP或者分类名称,例:192.168.19.2 / webserver
ansible all -m command -a 'date' #不加-m模块,则默认使用command模块
ansible all -a 'date'
ansible all -a 'ls /'//常用的参数:
chdir:在远程主机上运行命令前提前进入目录
creates:判断指定文件是否存在,如果存在,不执行后面的操作
removes:判断指定文件是否存在,如果存在,执行后面的操作ansible all -m command -a "chdir=/home ls ./"
3.2 shell模块
//在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令(支持管道符号等功能)
ansible-doc -s shellansible dbservers -m shell -a 'echo 123456 | passwd --stdin test'
ansible dbservers -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print $2}") | cut -d " " -f2'
ansible dbservers -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print \$2}")'
3.3 cron模块
//在远程主机定义任务计划。其中有两种状态(state):present表示添加(可以省略),absent表示移除。
ansible-doc -s cron #按 q 退出//常用的参数:
minute/hour/day/month/weekday:分/时/日/月/周
job:任务计划要执行的命令
name:任务计划的名称ansible webservers -m cron -a 'minute="*/1" job="/bin/echo helloworld" name="test crontab"'
ansible webservers -a 'crontab -l'
ansible webservers -m cron -a 'name="test crontab" state=absent' #移除计划任务,假如该计划任务没有取名字,name=None即可
3.4 user模块
user模块是请求三条指令,useradd,userdel,usermod#模块信息
ansible-doc -s user#创建用户
ansible all -m user -a 'name=yh'#查看用户账户信息
ansible all -m 'command' -a 'tail -1 /etc/passwd'#移除指令
ansible all -m user -a 'name="yh" state=absent'
3.5 group 模块
//用户组管理的模块
ansible-doc -s groupansible dbservers -m group -a 'name=mysql gid=306 system=yes' #创建mysql组
ansible dbservers -a 'tail /etc/group'
ansible dbservers -m user -a 'name=test01 uid=306 system=yes group=mysql' #将test01用户添加到mysql组中
ansible dbservers -a 'tail /etc/passwd'
ansible dbservers -a 'id test01'
3.6 copy模块
对文件进行有效的复制ansible-doc -s copyansible dbservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.back'ansible dbservers -a 'ls /opt'
ansible dbservers -a 'cat /opt/fstab.back'ansible dbservers -m copy -a 'content="hello lic" dest=/opt/test.txt'
ansible dbservers -a 'cat /opt/test.txt'
3.7 file模块
ansible-doc -s fileansible dbservers -m user -a 'name=mysql system=yes'ansible dbservers -m file -a 'owner=mysql group=mysql mode=600 path=/opt/test.txt'
ansible dbservers -a 'ls -l /opt/test.txt'#创建
#ansible dbservers -m file -a 'path=/opt/abc.txt state=touch'ansibledbservers -m file -a 'src=/opt/test.txt path=/opt/test.txt.link state=link'
ansible dbservers -a 'ls -l /opt'#移除文件/opt/test.txt
ansible dbservers -m file -a 'path=/opt/test.txt state=absent'
3.8 ping模块
ansible all -m ping
3.9 service模块
ansible-doc -s service#192.168.19.3执行yum -y install httpd
ansible webserver -a 'systemctl status httpd'ansible webserver -m service -a 'enabled=true name=httpd state=started'systemctl status httpd
systemctl is-enabled httpd
3.10 script模块
ansible-doc -s scriptvim test.sh
#!/bin/bash
echo 'hello ansible from script' > /opt/script.txtchmod +x test.sh
ansible all -m script -a 'test.sh'
3.11 yum模块
ansible-doc -s yumansible dbservers -m yum -a 'name=httpd'
ansible dbservers -a 'rpm -q httpd'ansible dbservers -m yum -a 'name=httpd state=absent'
ansible dbservers -a 'rpm -q httpd'
3.12 setup模块
ansible-doc -s setup#获取MySQL组主机的facts信息ansible dbservers -m setup
相关文章:

自动化运维工具——ansible安装及模块介绍
目录 一、ansible——自动化运维工具 1.1 Ansible 自动运维工具特点 1.2 Ansible 运维工具原理 二、安装ansible 三、ansible命令模块 3.1 command模块 3.2 shell模块 3.3 cron模块 3.4 user模块 3.5 group 模块 3.6 copy模块 3.7 file模块 3.8 ping模…...

Qt XML文件解析 QDomDocument
QtXml模块提供了一个读写XML文件的流,解析方法包含DOM和SAX,两者的区别是什么呢? DOM(Document Object Model):将XML文件保存为树的形式,操作简单,便于访问。 SAX(Simple API for …...

Vue2向Vue3过度Vuex状态管理工具快速入门
目录 1 Vuex概述1.是什么2.使用场景3.优势4.注意: 2 需求: 多组件共享数据1.创建项目2.创建三个组件, 目录如下3.源代码如下 3 vuex 的使用 - 创建仓库1.安装 vuex2.新建 store/index.js 专门存放 vuex3.创建仓库 store/index.js4 在 main.js 中导入挂载到 Vue 实例…...

生产制造型企业BOM搭建分析
导 读 ( 文/ 2358 ) 在上几篇文章中,我们讲到了基础的物料管理方法,在生产制造中,物料作为原材料,通过加工,结构组装成产品。那么加工、组装的依据将来源于设计人员出具的零件清单,也就是我们常说的BOM。 …...

大数据课程K11——Spark的数据挖掘机器学习
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的概念——数据挖掘; ⚪ 了解Spark的概念——机器学习; ⚪ 了解Spark的概念——深度学习; ⚪ 了解Spark的概念——人工智能; ⚪ 了解Spark的概念——数据挖掘体系; ⚪ 掌…...

【PHP面试题81】php-fpm是什么?它和PHP有什么关系
文章目录 🚀一、前言,php-fpm是什么🚀二、php-fpm与PHP之间的关系🚀三、php-fpm解决的问题🔎3.1 进程管理🔎3.2 进程池管理🔎3.3 性能优化🔎3.4 并发处理 🚀四、php-fpm常…...

MyBatis分页查询与特殊字符处理
目录 目录 一、引言 1.1 简介Mybatis 1.2分页查询的重要性 1.3MyBatis特殊字符处理的挑战 挑战1:SQL注入漏洞 挑战2:查询结果异常 挑战3:数据完整性问题 挑战4:跨平台兼容性 挑战5:用户体验 如何应对挑战 二…...

Docker Desktop 笔记
https://blog.csdn.net/qq_39611230/article/details/108641842 https://blog.csdn.net/KgdYsg/article/details/118213499 1、修改配置 {"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://…...
VS2022 C++修改Window系统DNS源代码V2.0
这是自己使用VS2022 C++编写开发的Window系统下修改DNS脚本程序第2个版本,适合Win10系统和Win7系统。cfg.txt文件存放要修改的DNS,最多4个。 详细源代码如下: setdns.cpp /* 1.全部清空DNSstring strParameter;strParameter = "netsh interface ip delete dns name=\…...
科技的成就(五十)
389、"IBM 提交给哈佛大学" "1944 年 8 月 7 日,“哈佛马克一号”正式由 IBM 提交给哈佛大学。“哈佛马克一号”最初的概念是由霍华德艾肯在 1937 年 11月向 IBM 提出的,经过 IBM 工程师的可行性研究,大约在签订第一份合约 7年…...
一文讲明白C++中的结构体Struct和类Class的区别以及使用场景
一文讲明白C中的结构体Struct和类Class的区别以及使用场景 文章目录 一文讲明白C中的结构体Struct和类Class的区别以及使用场景一、C中的结构体Struct二、C中的类Class三、结构体Struct和类Class之间的区别以及各自使用场景 一、C中的结构体Struct 在C中,结构体&…...
etcd学习入门
etcd有哪些独特的特性 etcd作为一个分布式键值存储系统,具有一些独特的特性,使其在分布式系统中得到广泛应用。以下是etcd的一些独特特性: 一致性: etcd使用Raft一致性算法来确保数据的一致性和可靠性。Raft算法能够处理网络分区、节点故障和…...
pyqt点击按钮执行脚本
class NineGridApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle(测试常见的操作) self.setGeometry(100, 100, 1800, 1800) layout QGridLayout() # 创建一个3x3的二维数组 rows 3 cols 3 array_2d [[0 for _ …...

9.oracle中sign函数
在Oracle/PLSQL中, sign 函数返回一个数字的正负标志. 语法如下:sign( number ) number 要测试标志的数字. If number < 0, then sign returns -1. If number 0, then sign returns 0. If number > 0, then sign returns 1. 应用于: Oracle 8i, Oracle …...

LVS DR模式搭建
目录 一、DR模式概述 一、与NET模式的区别 二、操作命令图 三、搭建流程 一、首先配置三台虚拟机并配置环境(关闭防火墙,宽容模式) 二、ping通百度 三、在115.3的(lvs)虚拟机上安装 ipvsadm 四、调整ARP参数 五…...

jmeter传参base64卡顿如何解决
部分接口需要传图片base64格式参数,但是输入转为base64格式的图片参数,jmeter直接卡死,甚至电脑也卡死,此时,只需要去掉文件头描述:data:image/jpeg;base64, 即可...

JAVA-编程基础-10-集合
Lison <dreamlison163.com>, v1.0.0, 2023.04.23 JAVA-编程基础-10-集合 文章目录 JAVA-编程基础-10-集合List、Set、Map、队列全面解析ListArrayList创建ArrayList 向ArrayList中添加元素 List、Set、Map、队列全面解析 Java 集合框架可以分为两条大的支线:…...

Unity实现倒计时和获取系统时间
一:创建UGUI 1.创建Canvas画布组件,调节Canvas画布的分辨率等其他设置。我们可以把视图设置为2D模式下。 2.创建Text文本组件,取名为Timer计时器,我们调整Text文本组件的大小,用锚点设置Text文本组件的位置,并且设置好Text文本组件的颜色。 3.我们再创建一个Text文…...

Unity 之 Time.deltaTime 的详细介绍以及用法
文章目录 Time.deltaTime 是什么?Time.deltaTime 有什么用?移动游戏对象:控制动画播放速度:实现平滑的计时器和延时: Time.deltaTime 是什么? “DeltaTime”(也被称为 “Delta Time”ÿ…...
十四、Ubuntu中如何更换pip国内镜像源?以及设置软链接
前言:在配置之前,一定要给虚拟机拍照,以防万一!!! 1、安装pip3 输入: sudo apt-get install python3-pip2、建立软链接 输入: sudo ln -s /usr/bin/pip3 /usr/bin/pip一般会出现…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...