Ansible简介
环境
- 控制节点:Ubuntu 22.04
- Ansible 2.10.8
- 管理节点:CentOS 8
组成
Ansible环境主要由三部分组成:
- 控制节点(Control node):安装Ansible的节点,在此节点上运行Ansible命令
- 管理节点(Managed node):Ansible所控制的节点
- 主机清单(Inventory):我们一般通过Ansible来管理多个远程节点,那么就需要把所有的节点在逻辑上组织起来,比如按照功能划分为若干个组。控制节点通过inventory来管理远程节点
官网( https://docs.ansible.com/ansible/latest/getting_started/index.html )提供的架构如下图所示:

特点
用途:
- 消除重复,简化流程
- 管理维护系统配置
- 持续部署复杂软件
- 零宕机滚动更新(rolling update)
优点:
- 无代理架构:远程节点无需安装额外的软件,维护的开销很小(主控节点通过SSH访问远程节点)
- 简单性:playbook使用YAML语法
- 伸缩性和灵活性:简易且快速
- 幂等性和可预测性:playbook可多次运行,如果系统已处于目标状态,则再次运行也没有变化
安装
apt install ansible
环境搭建
注:下面都是使用root用户。
首先需要一个inventory文件,默认文件为 /etc/ansible/hosts ,也可以使用 -i 参数来显式指定。
创建文件 /etc/ansible/hosts ,内容如下:
[myvms]
192.168.1.55
运行 ansible all --list-hosts ,如下:
➜ ansible ansible all --list-hostshosts (1):192.168.1.55
接下来,和远程节点建立SSH连接。
把主控节点的private key(一般是 ~/.ssh/id_rsa 文件)复制到远程节点的 ~/.ssh/authorized_keys/ 目录下(如果本地没有就用 ssh-keygen -t rsa 生成一下),可以用 ssh-copy-id root@<host> 来复制。
注:ansible可用 -u 参数指定登录用户名。
测试一下 ssh root@192.168.1.55 ,确保可以免密登录。
注: root@ 可以省略,但本地必须是root用户(因为复制时两端都使用的root用户)。
接下来用 ansible all -m ping 测试连通性:
➜ ~ ansible all -m ping
192.168.1.55 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}
命令行(ad-hoc)和playbook
命令行(ad-hoc)
其语法为:
ansible [pattern] -m [module] -a "[module options]"
下面是一个“Hello World”例子:
➜ ~ ansible all -m debug -a "msg='hello world'"
192.168.1.55 | SUCCESS => {"msg": "hello world"
}
Playbook
- Playbook:由一系列play组成
- Play:由一系列task组成
- Task:由一系列module组成
- Module:Ansible运行的代码单元,每个module有一个Fully Qualified Collection Name (FQCN)
其语法为:
ansible-playbook -i /path/to/my_inventory_file -u my_connection_user -k -f 3 -T 30 -t my_tag -M /path/to/my_modules -b -K my_playbook.yml
其中:
-i:指定inventory文件-u:指定SSH连接用户名-k:询问SSH连接密码-f:指定N个fork-T:设置超时时间(秒)-t:只运行指定tag的task-M:从指定路径载入本地module-b:executes with elevated privileges (uses become)-K:prompts the user for the become password.
例:
创建 playbook1.yml 文件,内容如下:
- name: Hello ansiblehosts: alltasks:- name: PingPingPingansible.builtin.ping:- name: Say helloansible.builtin.debug:msg: Hello world
运行:
➜ ansible ansible-playbook playbook1.ymlPLAY [Hello ansible] *******************************************************************************TASK [Gathering Facts] *****************************************************************************
ok: [192.168.1.55]TASK [PingPingPing] ********************************************************************************
ok: [192.168.1.55]TASK [Say hello] ***********************************************************************************
ok: [192.168.1.55] => {"msg": "Hello world"
}PLAY RECAP *****************************************************************************************
192.168.1.55 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
帮助
方法1:官网
https://docs.ansible.com/ansible/latest/index.html
方法2:命令行
ansible -h:查看ansible用法ansible-doc <plugin>:查看指定plugin用法,例如ansible-doc ping
注:可用ansible-doc -h查看ansible-doc用法。
相关文章:
Ansible简介
环境 控制节点:Ubuntu 22.04Ansible 2.10.8管理节点:CentOS 8 组成 Ansible环境主要由三部分组成: 控制节点(Control node):安装Ansible的节点,在此节点上运行Ansible命令管理节点ÿ…...
Tomcat+nginx负载均衡和动静分离
Nginx实现负载均衡和动静分离的原理 Nginx实现负载均衡是通过反向代理实现Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发。 但是不是把所有的web请求转发,而是将静态页面请求Ncinx服务器自己来处理,…...
全景环视AVM标定
目录 一、前言 二、鱼眼模型 三、标定流程 四、角点提取 4.1 亚像素坐标计算...
【JavaScript】leetcode链表相关题解
【JavaScript】leetcode链表相关题解 一、什么是链表?二、Javascript中的链表三、leetcode相关链表2.两数相加237.删除链表中的节点206.反转链表 💎个人主页: 阿选不出来 💎个人简介: 大三学生,热爱Web前端,随机掉落学…...
洞察运营机会的数据分析利器
这套分析方法包括5个分析工具: 用“描述性统计”来快速了解数据的整体特点。用“变化分析”来寻找数据的问题和突破口。用“指标体系”来深度洞察变化背后的原因。用“相关性分析”来精确判断原因的影响程度。用“趋势预测”来科学预测未来数据的走势,...
使用Python实现文字的声音播放
winsound 是 Python 的一个内置模块,它提供了访问 Windows 操作系统的声音播放功能的接口。这个模块可以用来播放简单的声音,例如提示音或者短促的音效。 # Author : 小红牛 # 微信公众号:WdPython import win32com.client import winsound#…...
gulp自动化构建
什么是Gulp? Gulp是一种前端开发过程中广泛使用的自动化构建工具,它是基于Node.js构建的,能够极大地提高开发效率和代码质量。Gulp的主要功能包括文件的压缩、合并、重命名等,同时它也支持文件监听和浏览器自动刷新等功能。使用Gulp&#x…...
java时间解析生成定时Cron表达式工具类
Cron表达式工具类CronUtil 构建Cron表达式 /****方法摘要:构建Cron表达式*param taskScheduleModel*return String*/public static String createCronExpression(TaskScheduleModel taskScheduleModel){StringBuffer cronExp new StringBuffer("");if(…...
JavaEE 网络原理——TCP的工作机制(末篇 其余TCP特点)
文章目录 一、滑动窗口二、流量控制三、拥堵控制四、延时应答五、捎带应答六、面向字节流七、异常情况八、总结 其余相关文章: JavaEE 网络原理——TCP的工作机制(中篇 三次握手和四次挥手) 本篇文章衔接的是前面两篇文章的内容,在这里继续解释 TCP 的内…...
【软件测试】了解JUnit单元测试框架常用注解
目录 1、认识JUnit 2、Junit中常见的注解 1、Test 2、Disabled 3、BeforeAll和AfterAll 4、BeforeEach和AfterEach 5、 ParameterizedTest:参数化 6、order 3、断言 1、断言相等【Assertions.assertEquals(预期,比较值)】;相等测试通…...
【广州华锐互动】三维全景3D消防科普展馆
在我们的日常生活中,火灾安全是一个不容忽视的重要问题。然而,由于缺乏对火灾的了解和应对技巧,许多人在面对火灾时往往感到无助和恐慌。为了解决这个问题,广州华锐互动开发了三维全景3D消防科普展馆,它是一个以虚拟现…...
某大型车企:加强汽车应用安全防护,开创智能网联汽车新篇章
某车企是安徽省最大的整车制造企业,致力于为全球消费者带来高品质汽车产品和服务体验,是国内最早突破百万销量的汽车自主品牌。该车企利用数字技术推动供应链网络的新型互动,加快数字化转型,持续进行场景创新、生态创新…...
LLVM学习笔记(50)
4.1.4. DAG合并与合法化 来自SelectionDAGBuilder的SelectionDAG输出还不能进行指令选择,必须通过额外的转换——显示在上图。在指令选择前应用的遍序列如下: 匹配一组节点,在有利时使用更简单的构造来替换它们,DAG合并遍优化Se…...
rpc入门笔记0x01
syntax "proto3"; // 这是个proto3的文件message HelloRequest{ // 创建数据对象string name 1; // name表示名称,编号是1 }生成python文件 安装grpcio和grpcio-tools库 pip install grpcio #安装grpc pip install grpcio-tools #安装grpc tools生成…...
web - Tomcat服务器
文章目录 目录 文章目录 前言 一 . CS和BS的异同 二 . 什么是Tomcat 二 . Tomcat安装 四 . Tomcat目录结构 bin目录: 用于存放二进制的可执行文件 config目录 server.xml:配置整个服务器信息。例如修改端口号。默认HTTP请求的端口号是:8080 lib目录 log…...
后端接口返回常见的状态码
2开头 (请求成功)表示成功处理了请求的状态代码 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。 201 (已创建) 请求成功并且服务器创建了新的资源。 202 …...
50.MongoDB快速入门实战
MongoDB概念 MongoDB是一个文档数据库(以 JSON 为数据模型),由C语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。 原则上 Oracle 和 MySQL 能做的事情,MongoDB 都能做(包括 ACID 事务&#x…...
一款功能强大的音乐曲谱软件Guitar Pro 8 .1.1for Mac 中文破解版
Guitar Pro 8 .1.1for Mac 中文破解版是一款功能强大的音乐曲谱软件,非常适合学习如何玩,改进技巧,重现喜爱的歌曲或陪伴自己。可以帮助我们进行吉他的学习、绘谱与创作,它包含了几乎所有的吉他现有指法及音色,在做弹拨…...
图论基础和表示
一、概念及其介绍 图论(Graph Theory)是离散数学的一个分支,是一门研究图(Graph)的学问。 图是用来对对象之间的成对关系建模的数学结构,由"节点"或"顶点"(Vertex)以及连接这些顶点的"边"(Edge&a…...
STM32 音频ADC转wav格式
STM32 音频ADC DAC测试方法_stm32 adc 音频-CSDN博客 STM32--vs1053 WAV录音实现(保存在SD卡)_vs1053 多字节读取-CSDN博客 单片机内部AD实现录音wav文件_adc语音信号采样_天外飞仙CUG的博客-CSDN博客 PCM编码格式_pcm格式-CSDN博客 用ADC编码PCM数据…...
d2s-editor:突破暗黑破坏神2存档修改限制的网页解决方案
d2s-editor:突破暗黑破坏神2存档修改限制的网页解决方案 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor是一款基于Vue.js开发的网页版暗黑破坏神2存档编辑器,它通过浏览器端即开即用的特性消除…...
OmenSuperHub:基于WMI BIOS控制的惠普暗影精灵硬件管理终极指南
OmenSuperHub:基于WMI BIOS控制的惠普暗影精灵硬件管理终极指南 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub OmenSuperHub是一款专为惠普暗…...
计算机三级嵌入式30天高效备考攻略——从零基础到通关秘籍
1. 零基础如何30天攻克计算机三级嵌入式? 第一次接触计算机三级嵌入式考试的同学,往往会被"嵌入式"三个字吓到。其实这个考试更像是"嵌入式系统知识入门认证",完全不需要硬件开发经验。我当年也是零基础备考,…...
如何高效配置无人机电子调速器:专业级ESC配置工具实战指南
如何高效配置无人机电子调速器:专业级ESC配置工具实战指南 【免费下载链接】esc-configurator A Web-App to flash your BLHeli_S and AM32 based ESCs from the browser using the Web-Serial API. 项目地址: https://gitcode.com/gh_mirrors/es/esc-configurato…...
Scientific Reports论文返修后,从接受到正式上线的完整时间线与关键节点(附校样避坑指南)
Scientific Reports论文从接受到正式上线的全流程解析与实战指南 当你收到那封梦寐以求的"Accept"邮件时,兴奋之余是否也对后续流程感到迷茫?从论文接受到正式上线,Springer Nature的生产流程看似标准却暗藏诸多细节。本文将为你拆…...
基于逻辑回归与XGBoost的冠心病风险预测模型比较研究——以UCI Heart Disease数据集为例
基于逻辑回归与XGBoost的冠心病风险预测模型比较研究——以UCI Heart Disease数据集为例 摘要 冠心病是当前全球范围内致死率最高的心血管疾病之一,早期准确识别高危人群对于降低发病率和死亡率具有重要意义。本研究以UCI Heart Disease数据集为基础,系统比较了逻辑回归与X…...
DeepSeek kubernetes-1.35.3/api/api-rules/sample_apiserver_violation_exceptions.list 源码分析
我来分析 Kubernetes API 规则文件 sample_apiserver_violation_exceptions.list。这个文件是 Kubernetes API 合规性检查的一部分,用于管理 API 规则违规的例外情况。 文件概述 该文件位于 Kubernetes 源码的 api/api-rules/ 目录下,用于记录 API 规则检…...
重磅更新!Pydantic AI 引入在线 Eval 与 MCP 控制,Agent 落地难的问题正在被解决
Agent 开发进入“深水区”:pydantic-ai v1.74.0 释放了什么信号?在 AI 应用开发的圈子里,一直存在一个尴尬的现象:写一个能跑的 Chatbot Demo 只需要一下午,但要把这个 Demo 变成稳定可靠的生产级应用,可能…...
7大实战技巧精通DLT Viewer:汽车电子日志分析权威指南
7大实战技巧精通DLT Viewer:汽车电子日志分析权威指南 【免费下载链接】dlt-viewer Diagnostic Log and Trace viewing program 项目地址: https://gitcode.com/gh_mirrors/dl/dlt-viewer 一、认知:揭开DLT Viewer的神秘面纱 在现代汽车电子系统…...
微软UDOP-large应用案例:跨境电商发票处理效率提升300%
微软UDOP-large应用案例:跨境电商发票处理效率提升300% 1. 引言:跨境电商财务的“效率之痛” 如果你在跨境电商公司待过,一定对财务部门的发票处理流程印象深刻。每天,来自亚马逊、Shopify、速卖通等平台的订单发票,…...
