一文了解Ansible原理以及常见使用模块
ansible使用手册
1. 简述
Ansible 是一种开源的自动化工具,主要用于配置管理、应用程序部署和任务自动化。
它使用简单的 YAML 语言来定义自动化的任务【playbook】,使得配置和部署变得更加直观和易于管理。
基于SSH协议连接到远程主机来执行指令。
2. ansible特性
1.丰富的模块化管理
2.通过yaml格式 编写playbok批量部署服务
3.基于OpenSSH服务相对比较安全,它不需要在被管理的主机上安装代理软件。
4.一个任务执行一次和执行多次的结果相同
5.管理模式容易,一条命令可以影响上千台主机
3. 架构
● 控制节点:运行 Ansible 的机器。
● 被管理节点:需要被配置或管理的机器。
● 清单文件:定义了 Ansible 要管理的主机和主机组。
● Playbook:用 YAML 编写的配置文件,定义了如何配置和管理主机。
● 角色:组织 Playbook 的一种方式,可以将任务、变量和文件等封装在一个模块中。

4. Ansible 基本概念
●清单(Inventory):列出所有被管理的主机或主机组的文件。默认位置是 /etc/ansible/hosts,可以自定义路径。
vim /opt/ansible/Inventory/all_hosts
[hosts]
10.127.192.5
10.127.192.195[node]
10.127.192.195[webservers]
10.127.192.5[all:vars]
# root可以直连
#ansible_ssh_user="root"
#ansible_ssh_pass="xxxxx"# 非root用户sudo
ansible_user=dev01
ansible_ssh_pass='d5qAPDG^F6rA*C9p'
ansible_become=True
ansible_become_method=sudo
●Playbook:定义任务的执行步骤,使用 YAML 格式。每个 Playbook 可以包含多个 plays,每个 play 针对一组主机执行任务。
例如:如下,利用ansible-playbook安装apache服务
vim install_apache.yml
---
- name: Install and configure Apachehosts: webserversbecome: yestasks:- name: Install Apache packageapt:name: apache2state: presentupdate_cache: yes- name: Ensure Apache is running and enabledservice:name: apache2state: startedenabled: yes- name: Copy a custom index.html filecopy:src: index.htmldest: /var/www/html/index.htmlowner: www-datagroup: www-datamode: '0644'
执行ansible-playbook指令
ansible-playbook -i ./inventory/all_hosts install_apache.yml
●任务(Task):在 Playbook 中定义的具体操作步骤,如安装软件、启动服务等。
●角色(Role):用来组织 Playbook,使其更具可重用性和模块化。每个角色包含任务、处理程序、文件、模板等。
5.常用的Ansible模块
5.1. 文件模块
copy:将文件从本地复制到远程主机
template:将本地文件复制到远程主机上,并进行变量替换
file:管理文件和目录,如创建、删除、修改等操作
fetch:从远程主机上获取文件
5.2. 系统模块
command:在远程主机上执行命令
shell:在远程主机上执行 shell 命令
5.3. 包管理模块
yum:管理CentOS和RedHat等Linux系统上的软件包
5.4. 服务模块
service:管理系统服务,如启动、停止、重启、重载等操作
firewalld:管理防火墙中的服务和端口
5.5. 用户模块
user:管理系统用户和用户组,如创建、删除、修改等操作
group:管理系统用户组,如创建、删除、修改等操作
5.6. 调试和测试类模块
ping:ping 一下你的远程主机,如果可以通过Ansible连接成功,那就范围 pong。
debug:用于调试的模块,只是打印一些简单消息,有点像Linux的 echo命令
6. 模拟测试
6.1. 测试网络连接连接
ansible all -m ping
ansible hosts -m ping
6.2. 命令测试
1. shell模块
ansible -i ./inventory/ hosts -m shell -a "ls"
2. command模块
ansible -i ./inventory/ hosts -m command -a "ls"
command模块和shell模块不同之处
command模块不支持"&&“和”>>"
如下可显示:

3. yum模块
ansible -i ./inventory/ hosts -m yum -a "name=rsync state=present"
4. copy模块
使用Ansible的copy模块复制文件到远程主机:
ansible all -m copy -a 'src=/etc/hosts dest=/tmp/hosts'
5. service模块
使用Ansible的service模块管理服务:
ansible all -m service -a 'name=httpd state=started'
6. user模块
使用Ansible的user模块管理用户:
创建user用户
ansible all -m user -a 'name="testuser" state=present'
删除用户
ansible all -m user -a 'name="testuser" state=absent'
6.3. playbook测试
ansible-playbook -i ./inventory/all_hosts apache.yaml
利用ansible-playbook部署完后,可用如下检测是否安装成功
ansible -i ./inventory/ hosts -m shell -a "systemctl status httpd"
相关文章:
一文了解Ansible原理以及常见使用模块
ansible使用手册 1. 简述 Ansible 是一种开源的自动化工具,主要用于配置管理、应用程序部署和任务自动化。 它使用简单的 YAML 语言来定义自动化的任务【playbook】,使得配置和部署变得更加直观和易于管理。 基于SSH协议连接到远程主机来执行指令。 2…...
JavaEE从入门到起飞(九) ~Activiti 工作流
工作流 当一道流程逻辑需要用到多个表单的提交和多个角色的审核共同完成的时候,就可以使用工作流。 工作流一般使用的是第三方技术,也就是说别人帮你创建数据库表和service层、mapper层,你只需要注入工具接口即可使用。 原理:一…...
微服务的保护
一、雪崩问题及解决方案 1.雪崩问题 微服务之间,一个微服务依赖多个其他的微服务。当一个微服务A依赖的一个微服务B出错时,微服务A会被阻塞,但其他不依赖于B的微服务不会受影响。 当有多个微服务依赖于B时,服务器支持的线程和并…...
2024前端面试题-网络篇
1.跨域问题 同源策略:需要协议、域名、端口号相同跨域原因:不符合同源策略便会产生跨域问题解决跨域:JSONP、配置代理、通过CORS解决 2.RPC和HTTP的区别 主要区别是序列化和反序列化,RPC通过二进制高效传输,HTTP是j…...
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——6.vector
1.杨辉三角 . - 力扣(LeetCode) 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 class Solution { public:vector<vector<int>> generate(int numRows) {vector<vector<int>> arr;int i 0;int j 0;for (i…...
设计模式---简单工厂模式
简单工厂模式(Simple Factory Pattern) 是一种创建型设计模式,它定义了一个工厂类,通过这个工厂类可以创建不同类型的对象。简单工厂模式的主要目的是将对象的创建逻辑集中在一个地方,简化客户端的代码,使得…...
Vue | Vue 中的 refInForde 用法
refInFor:如果你在渲染函数中给多个元素都应用了相同的 ref 名,那么 $refs.myRef 会变成一个数组。 vue中的refInFor属性是Vue框架中用于在循环渲染的元素上设置引用的一种方式。 在Vue中,ref属性通常用于给元素或子组件注册引用信息&am…...
【原创】java+swing+mysql房屋租赁管理系统设计与实现
个人主页:程序员杨工 个人简介:从事软件开发多年,前后端均有涉猎,具有丰富的开发经验 博客内容:全栈开发,分享Java、Python、Php、小程序、前后端、数据库经验和实战 文末有本人名片,希望和大家…...
Django 中render、redirect 和 HttpResponse的区别
在 Python 的 Web 框架 Django 中,render, redirect 和 HttpResponse 是用于处理 HTTP 响应的不同函数,它们各自有不同的用途: HttpResponse: HttpResponse 是 Django 中最基本的响应对象,用于返回给客户端的 HTTP 响应…...
CRYPTO 2020
分类文章编号安全模型1-6公钥加密,功能加密,见证加密7-12后量子密码13-20密码分析21-31最佳论文32-34多方安全计算35-49真实应用50-55零知识证明56-62格和相关难题63-68泄露和外包加密69-74非交互式零知识证明,共识和延迟函数75-79构建80-85Security Models 1. Handling Ad…...
java 函数接口Consumer简介与示例【函数式编程】【Stream】
Java 8 中的 消费者接口Consumer 是一个函数接口,它可以接受一个泛型 类型参数,它属于java.util.function包。我们来看看Java函数接口库中的定义: FunctionalInterface public interface Consumer<T> {/*** Performs this operation o…...
黑神话:悟空-配置推荐
显卡推荐(按类别整理) 1. GTX 10系列、GTX 16系列: 如果希望体验光线追踪,建议根据预算升级到RTX 40系列显卡。对于1080p分辨率,至少需要RTX 4060才能流畅运行。 2. RTX 20系列: RTX 2060、RTX 2070&#…...
Android14 蓝牙设备类型修改
Android14 蓝牙设备类型设置修改设置 文章目录 Android14 蓝牙设备类型设置修改设置一、前言二、修改蓝牙设备类型1、蓝牙设备类型和对应的属性2、Debug设备设置和获取蓝牙设备类型3、系统源码中设置蓝牙设备类型4、Java代码中设置蓝牙prop属性可行吗? 三、其他1、A…...
vue3 语法糖<script setup>
在 Vue 3 中,<script setup>是一种新的语法糖,它极大地简化了组件的编写方式。 <script setup> 是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖。当同时使用 SFC 与组合式 API 时该语法是默认推荐。 基本概念 简洁的语法…...
微服务设计原则——高性能:异步与并发
文章目录 1.异步1.1 调用异步1.2 流程异步1.3 数据流异步1.4 小结 2.并发2.1 请求并发2.2 冗余请求2.3 小结 参考文献 1.异步 对于处理耗时长的任务,如果采用同步等待的方式,会严重降低系统的吞吐量,可以采用异步化进行解决。 异步…...
机器学习——决策树,朴素贝叶斯
一.决策树 决策树中的基尼系数(Gini Index)是用于衡量数据集中不纯度(或混杂度)的指标。基尼系数的取值范围在0到0.5之间,其中0表示数据完全纯(同一类别),0.5表示数据完全混杂。 基…...
C语言基础(十)
编译预处理命令: 预编译命令在C语言中用于在编译前进行一些特定的处理和控制,帮助程序员更灵活地管理源代码和控制编译过程。 C语言常用的预编译命令: #include:用于包含头文件,将另一个文件的内容插入到当前文件中…...
人像比对-人证比对-人脸身份证比对-人脸身份证实名认证-人脸三要素对比-实人认证
人脸身份证实名认证是一种基于生物识别技术的身份验证方式,主要依托证件OCR识别技术、活体检测、人脸比对等技术手段,对用户身份信息真实性进行核验,确保用户为真人且为本人。以下是关于人脸身份证实名认证的详细解析: 一、认证流…...
Android 上下滑隐藏显示状态栏
一、DisplayPolicy类中监听滑动事件,然后发送广播事件 Android12类路径: frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.javamSystemGestures new SystemGesturesPointerEventListener(mUiContext, mHandler,new SystemGest…...
USBCAN-II/II+使用方法以及qt操作介绍
一.USBCAN-II/II介绍 USBCAN-II/II 是一款常用的 USB-CAN 转换器,广泛应用于汽车电子、工业自动化等领域。以下是使用该设备的一般步骤和方法: 1. 硬件连接 连接设备:将 USBCAN-II/II 的 USB 接口连接到计算机的 USB 端口。 连接 CAN 网络…...
OpenClaw智能剪贴板:GLM-4.7-Flash增强复制粘贴功能
OpenClaw智能剪贴板:GLM-4.7-Flash增强复制粘贴功能 1. 为什么我们需要更聪明的剪贴板 作为一个每天要和大量文本打交道的技术写作者,我经常陷入这样的困境:从网页复制的内容带着乱七八糟的格式,从PDF摘录的段落夹杂着换行符和乱…...
IT运维监控/可观测性
?? 前言:为什么选择 OpenClaw 对接企业微信? 在2026年的企业数字化办公浪潮中,OpenClaw(曾用名 Clawdbot、Moltbot)已成长为国内领先的开源AI自动化代理工具。凭借其“自然语言驱动、插件化拓展、多平台无缝集成”的…...
IDEA插件开发实战:手把手教你开发首个效率工具(附GitHub源码)
IDEA插件开发实战:从零打造你的专属效率工具 JetBrains系列IDE的强大之处不仅在于其核心功能,更在于其开放的插件生态系统。作为一名Java开发者,你是否曾想过为IDEA添加一个能提升自己工作效率的专属工具?本文将带你从零开始&…...
OpenClaw跨平台部署:nanobot镜像在mac/Windows双系统实测
OpenClaw跨平台部署:nanobot镜像在mac/Windows双系统实测 1. 为什么选择nanobot镜像 第一次听说nanobot这个轻量级OpenClaw镜像时,我正被本地部署大模型的资源消耗问题困扰。作为一个经常在macOS和Windows双系统切换的开发者,我需要一个能在…...
nRF51822 RTC1深度睡眠唤醒与80μA低功耗优化
1. nRF51822低功耗唤醒系统深度解析:RTC1驱动的深度睡眠唤醒机制与80μA电流优化实践1.1 项目背景与工程痛点定位nRF51_WakeUp项目聚焦于nRF51822 SoC在超低功耗场景下的精准唤醒能力构建,其核心目标是通过RTC1(Real-Time Counter 1ÿ…...
STM32智能甲鱼养殖系统设计与实现
基于STM32的智能甲鱼养殖系统设计与实现1. 项目概述1.1 系统背景现代水产养殖行业正面临从传统人工管理向智能化转型的关键时期。甲鱼作为对水质环境敏感的特种水产品,其养殖过程中需要持续监测多项水质参数并保持稳定环境。传统人工监测方式存在响应滞后、精度不足…...
当你能证明你的代码能带来流量时,你就永远不会被视为“垃圾”。
在商业世界里,代码本身没有价值,代码产生的结果才有价值。 如果你写的代码逻辑完美、架构优雅、注释清晰,但用户不用、业务不增长,那它在老板眼里就是“成本”,甚至是“垃圾”。如果你写的代码哪怕有些粗糙、用了“笨办…...
RGBLEDBlender:嵌入式RGB LED色彩混合与动态控制框架
1. RGBLEDBlender 库深度解析:面向嵌入式系统的 RGB 色彩混合与动态控制框架RGBLEDBlender 是一个轻量级、面向硬件的 RGB LED 色彩混合库,专为资源受限的微控制器平台(尤其是 Arduino 生态)设计。该库由 Erik Sikich 于 2016 年 …...
语音播报实时
目录 GPT-SoVITS(强烈推荐) Fish Speech-1.5 GPT-SoVITS(强烈推荐) RVC-Boss/GPT-SoVITS: 1 min voice data can also be used to train a good TTS model! (few shot voice cloning) Fish Speech-1.5 追求极致流畅的实时对话&a…...
Flink技术实践-超时异常踩坑与优化
一、背景介绍在Flink实时计算的生产环境中,最令人头疼的往往不是复杂的业务逻辑,而是那些突如其来的“超时异常”。这些异常就像是系统中的“幽灵”,通常在业务高峰期或网络抖动时出现,导致作业重启、数据延迟甚至数据丢失。最近几…...
