【Ansible自动化运维】一、初步了解,开启自动化运维之旅
在当今数字化时代,随着企业 IT 基础设施规模的不断扩大,传统的手工运维方式逐渐显得力不从心。自动化运维技术应运而生,其中 Ansible 凭借其简洁易用、功能强大的特点,成为众多运维工程师和开发人员的首选工具。本篇文章将从基础概念到简单的实际操作,让你快速上手自动化运维!

一、Ansible 是什么
Ansible 是一个基于 Python 开发的自动化运维工具,它的设计理念是简单、高效、无代理。与其他一些自动化工具不同,Ansible 不需要在被管理的目标主机上安装额外的代理软件,这大大降低了部署和维护的复杂性。通过 SSH 协议,Ansible 可以直接与目标主机进行通信,执行各种管理任务,如配置管理、软件部署、任务编排等。
Ansible 在自动化运维领域有着广泛的应用场景。例如,在一个拥有大量服务器的云计算环境中,使用 Ansible 可以快速实现所有服务器的统一配置,包括操作系统初始化、软件安装、安全设置等。对于开发团队来说,Ansible 可以帮助他们自动化应用的部署流程,确保开发、测试和生产环境的一致性。
二、安装与环境搭建
2.1 在 Linux 系统上安装 Ansible
大多数 Linux 发行版都可以通过包管理器轻松安装 Ansible。以 CentOS 为例,执行以下命令:
# 更新系统软件包
sudo yum update -y
# 安装Ansible
sudo yum install ansible -y
在 Ubuntu 系统上,安装命令如下:
# 更新系统软件包
sudo apt update
# 安装Ansible
sudo apt install ansible -y
2.2 在 Windows 系统上安装 Ansible(通过 WSL)
如果你的 Windows 系统安装了适用于 Linux 的 Windows 子系统(WSL),也可以在 WSL 环境中安装 Ansible。首先,打开 Windows 应用商店,搜索并安装你喜欢的 Linux 发行版,如 Ubuntu。安装完成后,打开 WSL 终端,按照上述 Linux 系统的安装步骤进行安装。
2.3 配置 Ansible 环境
Ansible 的主要配置文件是ansible.cfg,通常位于/etc/ansible/目录下。虽然 Ansible 在安装后有默认配置,但根据实际需求,我们可能需要对其进行一些修改。例如,修改inventory参数,指定主机清单文件的路径。主机清单文件用于定义 Ansible 要管理的目标主机。默认情况下,Ansible 使用/etc/ansible/hosts作为主机清单文件。
[defaults]
# 指定主机清单文件路径
inventory = /etc/ansible/hosts
2.4 主机清单配置
主机清单文件/etc/ansible/hosts用于列出 Ansible 要管理的所有目标主机。可以按组对主机进行分类,方便批量操作。例如,我们有一组 Web 服务器和一组数据库服务器,在hosts文件中可以这样配置(组名的合理编写更加有助于我们后期对节点的控制和修改):
[web_servers]
web1.example.com
web2.example.com[db_servers]
db1.example.com
db2.example.com
你还可以为每个主机指定连接参数,如 SSH 端口、用户名等。例如:
[web_servers]
web1.example.com ansible_port=22 ansible_user=ubuntu
web2.example.com ansible_port=22 ansible_user=ubuntu[db_servers]
db1.example.com ansible_port=22 ansible_user=centos
db2.example.com ansible_port=22 ansible_user=centos
三、Ansible 核心组件解析
3.1 连接插件
连接插件负责 Ansible 与目标主机之间的通信。默认情况下,Ansible 使用 SSH 连接插件,通过 SSH 协议与目标主机建立连接。这也是 Ansible 无需在目标主机安装代理的原因之一。除了 SSH,Ansible 还支持其他连接方式,如local(用于在本地主机执行任务)、docker(用于在 Docker 容器中执行任务)等。
3.2 主机清单
如前文所述,主机清单是 Ansible 管理目标主机的核心组件。通过主机清单,Ansible 可以知道要对哪些主机执行任务,并且可以按组对主机进行分类管理,大大提高了管理效率。
3.3 模块
模块是 Ansible 执行具体任务的工具。Ansible 内置了大量丰富的模块,涵盖了系统管理、软件安装、网络配置等各个方面。例如,ping模块用于检查目标主机的连通性,yum模块用于在 CentOS 等系统上安装软件包,apt模块用于在 Ubuntu 等系统上安装软件包。
我们可以通过命令行直接调用模块。例如,使用ping模块检查web1.example.com的连通性:
ansible web1.example.com -m ping
上述命令中,ansible是 Ansible 的命令行工具,web1.example.com是目标主机(也可以是IP地址),-m参数指定要使用的模块为ping。
3.4 Playbook
Playbook 是 Ansible 的核心组件之一,它是一个由 YAML 语言编写的文件,用于定义一系列的任务和执行这些任务的顺序。Playbook 可以理解为一个剧本,Ansible 按照剧本中的步骤依次在目标主机上执行任务。通过 Playbook,我们可以实现复杂的自动化流程,如应用的完整部署过程。
四、第一个 Ansible 任务
现在,我们来尝试执行第一个 Ansible 任务,使用ping模块检查目标主机的连通性。假设我们的主机清单文件/etc/ansible/hosts中已经配置了web1.example.com主机。
执行以下命令:
ansible web1.example.com -m ping
执行结果如下:
web1.example.com | SUCCESS => {"changed": false,"ping": "pong"
}
结果说明:
- web1.example.com:目标主机名。
- SUCCESS:表示任务执行成功。
- "changed": false:表示该任务没有对目标主机进行任何修改,只是检查连通性。
- "ping": "pong":这是ping模块返回的结果,证明目标主机可达。
接下来,我们使用shell模块在目标主机上执行一个简单的命令,如查看当前目录下的文件列表。命令如下:
ansible web1.example.com -m shell -a "ls -l"
上述命令中,-a参数用于传递模块的参数,这里传递给shell模块的参数是要在目标主机上执行的命令ls -l。
执行结果类似如下:
web1.example.com | CHANGED | rc=0 >>
total 0
-rw-r--r-- 1 ubuntu ubuntu 0 Apr 8 10:00 file1.txt
-rw-r--r-- 1 ubuntu ubuntu 0 Apr 8 10:01 file2.txt
结果说明:
- CHANGED:表示任务执行后目标主机的状态发生了改变(这里执行了一个命令,虽然只是查看文件列表,但也算状态改变)。
- rc=0:表示命令执行成功,返回码为 0。
- >>后面的内容是命令在目标主机上的执行结果,即当前目录下的文件列表。
通过以上简单的示例,你已经初步体验了 Ansible 的使用流程。从安装配置到执行简单任务,Ansible 展现出了其简洁易用的特点。随着对 Ansible 的深入学习,你将发现它在自动化运维领域的强大功能,能够帮助你轻松应对各种复杂的运维场景。
相关文章:
【Ansible自动化运维】一、初步了解,开启自动化运维之旅
在当今数字化时代,随着企业 IT 基础设施规模的不断扩大,传统的手工运维方式逐渐显得力不从心。自动化运维技术应运而生,其中 Ansible 凭借其简洁易用、功能强大的特点,成为众多运维工程师和开发人员的首选工具。本篇文章将从基础概…...
AI日报 - 2025年4月9日
🌟 今日概览(60秒速览) ▎🤖 AGI突破 | DeepSeek AI推出自我原则批判调优(SPCT)新方法 通过GRMs自我创建和批判原则,性能媲美671B参数大模型 ▎💼 商业动向 | NVIDIA发布Llama-Nemotron-Ultra 253B模型 开放权重和训练数据&#x…...
2025年二级建造师考前冲刺题库
二建考前冲刺练习通常会涵盖考试的重点和高频考点,考生在做题过程中可以加深对这些知识点的理解和记忆,提高对重点知识的掌握程度。 建设工程法规及相关知识 1、单选题:关于建设工程中代理的说法,正确的是( …...
蓝桥·20264-祝福语--找连续字串的长度
#include <iostream> using namespace std; int main() {// 请在此输入您的代码//最小字典序,一定是全a,找s的最长字串a,结果就是该字串长度加1(t不能是s的子串)//所以这道题就变成了,找s中字串a出现的长度strin…...
条件概率、概率乘法公式、全概率公式和贝叶斯 (Bayes) 公式
定义 设 P ( A ) > 0 P(A) > 0 P(A)>0,若在随机事件 A A A发生的条件下随机事件 B B B发生的概率记作 P ( B ∣ A ) P(B|A) P(B∣A),定义 P ( B ∣ A ) P ( A B ) P ( A ) P(B|A) \frac{P(AB)}{P(A)} P(B∣A)P(A)P(AB) 则称 P ( B ∣ A ) …...
pdf转latex
Doc2X(https://doc2x.noedgeai.com/) Doc2X 是一个由 NoEdgeAI 提供的在线工具,主要用于将 PDF 文件(尤其是学术论文、报告等文档)转换为 LaTeX 格式。LaTeX 是一种高质量排版系统,广泛应用于学术界和出版…...
【Unity】Unity Transform缩放控制教程:实现3D模型缩放交互,支持按钮/鼠标/手势操作
【Unity 】Transform缩放控制教程:实现3D模型缩放交互,支持按钮/鼠标/手势操作 在Unity开发中,Transform组件承担着场景中物体的空间信息控制,包括位置、旋转和缩放。而缩放(Scale)操作,作为三…...
【Linux篇】缓冲区的工作原理:如何影响你程序的输入输出速度
从内存到磁盘:缓冲区如何提升文件I/O效率 一. 缓冲区1.1 什么是缓冲区1.2 为什么要引入缓冲区1.3 缓冲区类型1.4 FILE1.4.1 基本概念1.4.2 FILE 结构体的作用1.4.3 FILE 的工作机制 二. 最后 在程序开发中,缓冲区是一个经常被提及却不容易深入理解的概念…...
kotlin,Android,jetpack compose,日期时间设置
AI生成,调试出来学习,这些小组件会用了,就可以组合一个大点的程序了。 package com.example.mydatetimeimport android.app.AlertDialog import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.co…...
ASP.NET图书馆借阅系统(源码+lw+部署文档+讲解),源码可白嫖!
摘要 近些年来,随着科技的飞速发展,互联网的普及逐渐延伸到各行各业中,给人们生活带来了十分的便利,图书馆借阅系统利用计算机网络实现信息化管理,使图书信息、图书借阅、归还的管理发展和服务水平有显著提升。 本文拟…...
LeetCode算法题(Go语言实现)_35
题目 给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。 「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。 一、代码实现 func goodNodes(root *TreeNode) int {if root nil {return 0}return d…...
vi/vim常用快捷键
那么今天我们继续昨天没有介绍完的vi编辑器,来看看常用的一些快捷键,方便我们对文件的编辑. 1.拷贝当前行yy,拷贝当前行向下的5行5yy,并粘贴(输入p) 2.删除当前行dd,删除当前行向下的5行5d 3.在文件中查找某个单词[命令模式/关键字,回车查找,输入n就是查找下一个] ⭐️&…...
JVM核心机制:类加载×字节码引擎×垃圾回收机制
🚀前言 “为什么你的Spring应用启动慢?为什么GC总是突然卡顿?答案藏在JVM的核心机制里! 本文将用全流程图解字节码案例,带你穿透三大核心机制: 类加载:双亲委派如何防止恶意代码入侵ÿ…...
opencv无法设置禁用RGB转换问题
树莓派连接摄像头,摄像头输出格式为YUYV(YUV422)。 通过执行 v4l2-ctl --list-formats --device/dev/video0 可以看的具体的摄像头的数据格式。 使用opencv获取视频流,通过cap.set(cv2.CAP_PROP_CONVERT_RGB, 0)设置禁用自动转换RGB格式,但是打印输出…...
k8s 1.30.6版本部署(使用canal插件)
#系统环境准备 参考 https://blog.csdn.net/dingzy1/article/details/147062698?spm1001.2014.3001.5501 #配置下载源 curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/deb/Release.key |gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyri…...
GZ036区块链卷一 EtherStore合约漏洞详解
题目 pragma solidity >0.8.3;contract EtherStore {mapping(address > uint) public balances;function deposit() public payable {balances[msg.sender] msg.value;emit Balance(balances[msg.sender]);}function withdraw() public {uint bal balances[msg.sender…...
MCP+Blender创建电力塔
MCP(Model Context Protocol)与Blender的结合是当前AI与3D建模领域的热门技术,它通过协议化的方式让Claude等AI模型直接控制Blender,实现自动化3D建模。 1. 功能与原理 • 核心能力:用户通过自然语言指令(…...
什么是RACI矩阵,应用在什么场景?
一、什么是RACI RACI矩阵是一种用于明确项目或任务中角色与责任的管理工具,通过定义不同人员在任务中的参与程度来避免职责不清的问题。以下是其核心要点: RACI的含义 ● R(Responsible)执行者:直接完成任务…...
Selenium自动化:玩转浏览器,搞定动态页面爬取
嘿,各位爬虫爱好者和自动化达人们!是不是经常遇到这种情况:信心满满地写好爬虫,requests一把梭,结果抓下来的HTML里,想要的数据空空如也?定睛一看,原来数据是靠JavaScript动态加载出…...
QAI AppBuilder 快速上手(8): 图像修复应用实例2
LaMa-Dilated模型旨在通过扩张卷积技术实现高效的图像擦除和修复。该模型采用先进的卷积神经网络架构,能够处理复杂的图像输入,并填补图像中的缺失部分,使修复后的图像更加自然和逼真。LaMa-Dilated不仅在图像编辑领域表现出色,还…...
`ConstantPositionProperty` 的使用与应用
ConstantPositionProperty 的使用与应用 1. 什么是 ConstantPositionProperty? ConstantPositionProperty 是 Cesium 中用于表示实体位置的属性类。它表示一个实体在三维空间中的位置是固定的,不会随时间变化。与动态位置属性(如 SampledPo…...
【计网】作业4
一. 单选题(共22题,64分) 1. (单选题)主机甲采用停止-等待协议向主机乙发送数据,数据传输速率是4kb/s,单向传播时延为30ms,忽略确认帧的发送时延。当信道利用率等于80%时,数据帧的长度为&#…...
MPDrive:利用基于标记的提示学习提高自动驾驶的空间理解能力
25年4月来自南方科技大学、百度、英国 KCL和琶洲实验室(广东 AI 和数字经济实验室)的论文“MPDrive: Improving Spatial Understanding with Marker-Based Prompt Learning for Autonomous Driving”。 自动驾驶视觉问答(AD-VQA)…...
QTSql全解析:从连接到查询的数据库集成指南
概览 与数据库的有效集成是确保数据管理效率和应用性能的关键,Qt框架就提供了强大的QtSql模块,使得开发者能够轻松地进行数据库操作,包括连接、查询执行以及结果处理等 一、引入QtSql模块 首先,需要在项目中引入QtSql模块&…...
FreeRTOS临界区
在FreeRTOS中,临界区通过关闭可管理的中断来保护共享资源,具体关闭的中断层级由configMAX_SYSCALL_INTERRUPT_PRIORITY宏定义决定。以下是关键点解析: 中断优先级分类: 高优先级中断:数值低于configMAX_SYSCALL_INTERR…...
【学习笔记】HTTP和HTTPS的核心区别及工作原理
一、基础概念 HTTP(超文本传输协议):明文传输数据,默认端口80,容易被窃听或篡改。 HTTPS(HTTP SSL/TLS):通过加密传输数据,默认端口443,保障安全性。 二、…...
Dubbo的简单介绍
Dubbo的简单介绍 Dubbo 是一个高性能的 Java RPC 框架,最初由阿里巴巴开发,用于构建分布式服务。它主要用于提供服务间的通信,支持高效的远程调用和服务治理,常用于大规模分布式系统中。Dubbo 提供了以下几个核心功能:…...
7.2 重复推送(每日、每周等)
1. 核心方法 使用 UNCalendarNotificationTrigger 的 dateMatching 参数配置日历组件(DateComponents),结合 repeats: true 实现周期性触发。 2. 不同频率的重复推送配置 2.1 每日重复 每天固定时间触发(如上午 10:00ÿ…...
【STL】list介绍(附与vector的比较)
文章目录 1.关于list2.使用2.1 list的构造2.2 list 迭代器的使用2.3 list 容量操作2.3.1 size()2.3.2 empty()2.3.3 resize() 2.4 list 元素访问2.4.1 front()2.4.2 back() 2.5 list 修改操作2.5.1 push_front()2.5.2 pop_front()2.5.3 push_back()2.5.4 pop_back()2.5.5 inser…...
Ansible:roles角色
文章目录 Roles角色Ansible Roles目录编排Roles各目录作用创建 roleplaybook调用角色调用角色方法1:调用角色方法2:调用角色方法3: roles 中 tags 使用实战案例 Roles角色 角色是ansible自1.2版本引入的新特性,用于层次性、结构化…...
