ansble
ansble概述
Ansible是一款自动化运维工具,基于Python开发,具有批量系统配置,批量程序部署, 批量运行命令等功能。
Ansible的很多模块在执行时都会先判断目标节点是否要执行任务,所以,可以放心大胆地让Ansible去执行任务,重复执行某个任务绝大多数时候不会产生任何副作用。同时ansible的剧本(playbooks) 可使用YAML语言进行编写。易于维护和扩展。
anisble 工作机制
ansibe 机制
ansible:核心组件,核心程序
hostinventory:记录由ansible管理的主机信息 (包括端口、IP、密码等)
playbook:"剧本"
YAM格式文件,多个任务定义在一个文件中,定义主机需要哪些模块来完成的功能
core modules:核心模块 主要操作是通过调用核心模块来管理任务
custom modlues:自动定义模块,来完成核心无无法完成的功能,支持多个语言
connection Plugins:连接插件ansible和HOST通信使用
ansible特点
1、部署简单,只需在主控端部署Ansible环境, 被控端无需做任何操作
2、默认使用SSH协议设备进行管理;
3、主从集中化管理
4、配置简单、功能强大、扩张性强;
5、支持API及自定义模块,可以通过Pyhton轻松扩展
6、通过playbooks 来定制强大的配置、状态管理
7、对云计算平台、大数据都有很好的支持
日志模块
ansible 命令格式
ansible <组名> -m <模块> -a <参数列表>
ansible-doc -1 列出所有已安装的模块按a退出
ansible-doc -s 模块名 指导模块使用方法
操作模块
1、command 模块
在远程主机执行命令,不支持管道,重定向等shell的特性。
ansible 192.168.10.14 -m command -a 'date' #指定 ip 执行 date
ansible all -m command -a 'date' #all 代表所有 hosts 主机
ansible all -a 'ls /' #如省略 -m 模块,则默认运行 command 模块
2、shell 模块
在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令,模拟用户在主机上执行操作(支持管道符号等功能)。
ansible dbservers -m shell -a 'echo 123456 | passwd --stdin test'
3、cron模块
在远程主机定义任务计划。其中有两种状态(state):present表示添加(可以省略),absent表示移除。
常用的参数:
minute/hour/day/month/weekday:分/时/日/月/周
job:任务计划要执行的命令
name:任务计划的名称
ansible webservers -m cron -a 'minute="*/1" job="/bin/echo helloworld" name="test crontab"'
ansible webservers -m cron -a 'name="test crontab" state=absent' #移除计划任务,假如该计划任务没有取名字,name=None即可
4、user模块
用户管理的模块
常用的参数:
name:用户名,必选参数
state=present|absent:创建账号或者删除账号,present表示创建,absent表示删除
system=yes|no:是否为系统账号
uid:用户uid
group:用户基本组
shell:默认使用的shell
move_home=yse|no:如果设置的家目录已经存在,是否将已经存在的家目录进行移动
password:用户的密码,建议使用加密后的字符串
comment:用户的注释信息
remove=yes|no:当state=absent时,是否删除用户的家目录ansible dbservers -m user -a 'name="test01"' #创建用户test01
ansible dbservers -m user -a 'name="test01" state=absent' #删除用户test01
5、group 模块
用户组管理的模块
ansible dbservers -m group -a 'name=mysql gid=306 system=yes' #创建mysql组
ansible dbservers -m user -a 'name=test01 uid=306 system=yes group=mysql' #将test01用户添加到mysql组中
6、copy 模块
用于复制指定主机文件到远程主机
常用的参数:
dest:指出复制文件的目标及位置,使用绝对路径,如果是源目录,指目标也要是目录,如果目标文件已经存在会覆盖原有的内容
src:指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录
mode:指出复制时,目标文件的权限
owner:指出复制时,目标文件的属主
group:指出复制时,目标文件的属组
content:指出复制到目标主机上的内容,不能与src一起使用ansible dbservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak owner=root mode=640'
ansible dbservers -m copy -a 'content="helloworld" dest=/opt/hello.txt' #将helloworld写入/opt/hello.txt文件中
7、file 模块
设置文件属性
ansible dbservers -m file -a 'owner=test01 group=mysql mode=644 path=/opt/fstab.bak' #修改文件的属主属组权限等
ansible dbservers -m file -a 'path=/opt/fstab.link src=/opt/fstab.bak state=link' #设置/opt/fstab.link为/opt/fstab.bak的链接文件
ansible dbservers -m file -a "path=/opt/abc.txt state=touch" #创建一个文件
ansible dbservers -m file -a "path=/opt/abc.txt state=absent" #删除一个文件
8、hostname 模块
用于管理远程主机上的主机名
ansible dbservers -m hostname -a "name=mysql01"
9、ping 模块
检测远程主机的连通性
ansible all -m ping
10、yum 模块
在远程主机上安装与卸载软件包
ansible webservers -m yum -a 'name=httpd' #安装服务
ansible webservers -m yum -a 'name=httpd state=absent' #卸载服务
11、service/systemd 模块
用于管理远程主机上的管理服务的运行状态
常用的参数:
name:被管理的服务名称
state=started|stopped|restarted:动作包含启动关闭或者重启
enabled=yes|no:表示是否设置该服务开机自启
runlevel:如果设定了enabled开机自启去,则要定义在哪些运行目标下自启动ansible webservers -a 'systemctl status httpd' #查看web服务器httpd运行状态
ansible webservers -m service -a 'enabled=true name=httpd state=started' #启动httpd服务
12、script 模块
实现远程批量运行本地的 shell 脚本
vim test.sh
#!/bin/bash
echo "hello ansible from script" > /opt/script.txtchmod +x test.sh
ansible webservers -m script -a 'test.sh'
ansible webservers -a 'cat /opt/script.txt'
13、setup 模块
facts 组件是用来收集被管理节点信息的,使用 setup 模块可以获取这些信息
ansible webservers -m setup #获取mysql组主机的facts信息
ansible dbservers -m setup -a 'filter=*ipv4' #使用filter可以筛选指定的facts信息
主机清单
Inventory变量名 含义
ansible_host ansible连接节点时的IP地址
ansible_port 连接对方的端口号,ssh连接时默认为22
ansible_user 连接对方主机时使用的主机名。不指定时,将使用执行ansible或ansible-playbook命令的用户
ansible_password 连接时的用户的ssh密码,仅在未使用密钥对验证的情况下有效
ansible_ssh_private_key_file 指定密钥认证ssh连接时的私钥文件
ansible_ssh_common_args 提供给ssh、sftp、scp命令的额外参数
ansible_become 允许进行权限提升
ansible_become_method 指定提升权限的方式,例如可使用
sudo/su/runas等方式
ansible_become_user 提升为哪个用户的权限,默认提升为root
ansible_become_password 提升为指定用户权限时的密码
相关文章:

ansble
ansble概述 Ansible是一款自动化运维工具,基于Python开发,具有批量系统配置,批量程序部署, 批量运行命令等功能。 Ansible的很多模块在执行时都会先判断目标节点是否要执行任务,所以,可以放心大胆地让Ansible去执行任务…...
git常见命令(持续更新)
判断是否为git项目 一个repo可以由多个git项目组成,一般每个git项目的根目录下都会有**.git**的文件夹;使用任何git命令前都需要打开到git项目文件下面。 git log 不带参数 // 查看本次commit修改的地方 git log-p // 可以查看FileName从建立到现在…...
Python基础入门例程23-NP23 删除好友(列表)
最近的博文: Python基础入门例程22-NP22 删除简历(列表)-CSDN博客 Python基础入门例程21-NP21 增加派对名单(二)(列表)-CSDN博客 Python基础入门例程20-NP20 增加派对名单(一&#x…...
识别鼠标选中actor_vtkInteractorStyleTrackballActor
开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码目的:学习与总结 demo解决问题:通过自定义vtkInteractorStyle类中成员函数OnLeftButtonDown,判断鼠标当前选中的是哪个…...
C++ Qt关于启动可执行文件存在的问题
如果软件具有管理员权限。请略过 使用QProcess 如果不具有管理员权限 启动可执行文件,在Debug和Release中没有问题,但是如果可执行文件启动需要管理员权限,调用函数startDetached,win10/11去要在点击用户账户控制弹窗 当使用I…...

微信定时发圈,快人一步不落索
现在的社交媒体运营已经成为了私域流量获取的重要手段,而微信作为最大的社交平台之一,更是吸引了众多使用者。但是,你是否曾经感叹过每天手动发朋友圈的繁琐?是否希望能够事先设置好定时发送的功能,让你的朋友圈自动更…...
数据分析在程序员职业中的重要性及实践应用
一、引言 在当今信息化社会的快速发展中,数据分析已经成为一项重要的职业技能。不论是从事哪个行业,都需要具备一定的数据分析能力。对于程序员而言,掌握数据分析技能不仅能够提升自身在职场中的竞争力,更能够在职业生涯中获得更…...

计算机网络_04_传输层
文章目录 1.什么是传输层2.传输层提供了什么服务3.传输层协议TCP 1.什么是传输层 传输层是OSI七层体系架构中的第四层, TCP/IP四层体系架构中的第二层, 从通信和信息处理两方面来看,“传输层”既是面向通信部分的最高层,与下面的三层一起共同构建进行网…...

3 ALS算法的优化
3.1引入时间遗忘曲线 3.2引入物品特征 3.3时间特征和物品特征加权融合 ALS优化算法的执行步骤 将式(12)对原始评分矩阵进行优化,再代入 式(3)得到了优化后的ALS算法。该算法步骤如下: 第一步:读取数据集,初始化用户-物品评分...

lvsDR模式
LVS-DR模式 是最常用的LVS负载方式 直接路由模式 Lvs调度器 只负责请求和转发 转发到真实服务器 但是响应结果 由后端服务器直接转发给客户端 不需要经过调度器处理 可以减轻Lvs调度器的负担 提高系统性能和稳定性 工作原理: 客户端发送请求到vipLVS调度器接受请求…...

Linux系统下配置王爽汇编语言环境
【步骤一】 先打开命令行,进入root模式,输入如下语句: sudo apt-get install dosbox 该语句的作用主要是安装dosbox 【步骤二】 安装完成之后,命令行输入dosbox 会进入dosbox页面: 【步骤三】 在你的主机中&…...
scss下解决父组件中使用::v-deep修改样式穿透到子组件的问题
开发中经常会用到深度选择器来修改第三方组件库等子组件的样式,这时候就用到样式穿透(style Penetration) 样式穿透的方式有:>>>、 /deep/、::v-deep这三种 使用中发现了一个问题,就是当在父组件使用了v-deep修改自身组件或者第三方…...
Redis的瓶颈在哪里?
Redis是一个开源的非常快速且高效的内存键值存储数据库,常用作缓存、消息队列、会话存储等。 Redis之所以被认为是一个快速的数据库,主要是由于以下几个方面的设计和实现: 基于内存存储: Redis是一个基于内存存储的数据库&#x…...
如何在spark中使用scikit-learn和tensorflow等第三方python包
目录 1 打包需要的python包2 修改spark配置文件 1 打包需要的python包 首先我们用conda包管理工具对我们需要的python包进行虚拟环境创建: conda create -n python37 --copy -y -q python3.7 --prefix /your/workspace/path scikit-learn tensorflow下面是对每个参…...

JS中call()、apply()、bind()改变this指向的原理
大家如果想了解改变this指向的方法,大家可以阅读本人的这篇改变this指向的六种方法 大家有没有想过这三种方法是如何改变this指向的?我们可以自己写吗? 答案是:可以自己写的 让我为大家介绍一下吧! 1.call()方法的原理…...

BUUCTF 镜子里面的世界 1
BUUCTF:https://buuoj.cn/challenges 题目描述: 下载附件,解压得到一张.png图片。 密文: 解题思路: 1、材料只有一张图片,题目提示“镜子里面的世界”结合图片中的英文“look very closely”(翻译为“仔…...

【MySQL--->内置函数】
文章目录 [TOC](文章目录) 一、日期函数二、字符串函数三、数学函数四、其他函数 一、日期函数 current_date();当前日期 current_time();当前时间 current_timestamp();当前时间戳 now();当前时间 date(‘date’);日期 date_sub(date,interval number second/minute/hour/d…...
FFmpeg 从视频流中抽取图片
抽取单个图片 使用 FFmpeg 进行截图:在终端或命令提示符下,使用以下命令进行截图: ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 output.jpg其中, -i input.mp4:指定输入的 H.264 文件路径和名称。 -ss 00:00:05&a…...
Oracle RU 19.21及 datapatch -sanity_checks
参考文档: Oracle Database Patch 35643107 - Database Release Update 19.21.0.0.231017 Datapatch User Guide (Doc ID 2680521.1) datapatch fails with ORA-04061/ORA-4065/ORA-04045/ORA-04067 due to Golden Gate triggers. (Doc ID 2301658.1) 在19.21的…...
云原生周刊:ingress2gateway 发布 | 2023.10.30
开源项目推荐 m9sweeper m9sweeper 是一个免费且简单的 Kubernetes 安全平台。它将行业标准的开源实用程序集成到一站式 Kubernetes 安全工具中,该工具可以帮助大多数 Kubernetes 管理员保护 Kubernetes 集群以及集群上运行的应用程序。 Kairos Kairos 是在 Kub…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...