当前位置: 首页 > article >正文

【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、单选题:关于建设工程中代理的说法,正确的是( &#xf…...

蓝桥·20264-祝福语--找连续字串的长度

#include <iostream> using namespace std; int main() {// 请在此输入您的代码//最小字典序&#xff0c;一定是全a&#xff0c;找s的最长字串a,结果就是该字串长度加1&#xff08;t不能是s的子串&#xff09;//所以这道题就变成了&#xff0c;找s中字串a出现的长度strin…...

条件概率、概率乘法公式、全概率公式和贝叶斯 (Bayes) 公式

定义 设 P ( A ) > 0 P(A) > 0 P(A)>0&#xff0c;若在随机事件 A A A发生的条件下随机事件 B B B发生的概率记作 P ( B ∣ A ) P(B|A) P(B∣A)&#xff0c;定义 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&#xff08;https://doc2x.noedgeai.com/&#xff09; Doc2X 是一个由 NoEdgeAI 提供的在线工具&#xff0c;主要用于将 PDF 文件&#xff08;尤其是学术论文、报告等文档&#xff09;转换为 LaTeX 格式。LaTeX 是一种高质量排版系统&#xff0c;广泛应用于学术界和出版…...

【Unity】Unity Transform缩放控制教程:实现3D模型缩放交互,支持按钮/鼠标/手势操作

【Unity 】Transform缩放控制教程&#xff1a;实现3D模型缩放交互&#xff0c;支持按钮/鼠标/手势操作 在Unity开发中&#xff0c;Transform组件承担着场景中物体的空间信息控制&#xff0c;包括位置、旋转和缩放。而缩放&#xff08;Scale&#xff09;操作&#xff0c;作为三…...

【Linux篇】缓冲区的工作原理:如何影响你程序的输入输出速度

从内存到磁盘&#xff1a;缓冲区如何提升文件I/O效率 一. 缓冲区1.1 什么是缓冲区1.2 为什么要引入缓冲区1.3 缓冲区类型1.4 FILE1.4.1 基本概念1.4.2 FILE 结构体的作用1.4.3 FILE 的工作机制 二. 最后 在程序开发中&#xff0c;缓冲区是一个经常被提及却不容易深入理解的概念…...

kotlin,Android,jetpack compose,日期时间设置

AI生成&#xff0c;调试出来学习&#xff0c;这些小组件会用了&#xff0c;就可以组合一个大点的程序了。 package com.example.mydatetimeimport android.app.AlertDialog import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.co…...

ASP.NET图书馆借阅系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 近些年来&#xff0c;随着科技的飞速发展&#xff0c;互联网的普及逐渐延伸到各行各业中&#xff0c;给人们生活带来了十分的便利&#xff0c;图书馆借阅系统利用计算机网络实现信息化管理&#xff0c;使图书信息、图书借阅、归还的管理发展和服务水平有显著提升。 本文拟…...

LeetCode算法题(Go语言实现)_35

题目 给你一棵根为 root 的二叉树&#xff0c;请你返回二叉树中好节点的数目。 「好节点」X 定义为&#xff1a;从根到该节点 X 所经过的节点中&#xff0c;没有任何节点的值大于 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核心机制:类加载×字节码引擎×垃圾回收机制

&#x1f680;前言 “为什么你的Spring应用启动慢&#xff1f;为什么GC总是突然卡顿&#xff1f;答案藏在JVM的核心机制里&#xff01; 本文将用全流程图解字节码案例&#xff0c;带你穿透三大核心机制&#xff1a; 类加载&#xff1a;双亲委派如何防止恶意代码入侵&#xff…...

opencv无法设置禁用RGB转换问题

树莓派连接摄像头,摄像头输出格式为YUYV(YUV422)。 通过执行 v4l2-ctl --list-formats --device/dev/video0 可以看的具体的摄像头的数据格式。 使用opencv获取视频流&#xff0c;通过cap.set(cv2.CAP_PROP_CONVERT_RGB, 0)设置禁用自动转换RGB格式&#xff0c;但是打印输出…...

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&#xff08;Model Context Protocol&#xff09;与Blender的结合是当前AI与3D建模领域的热门技术&#xff0c;它通过协议化的方式让Claude等AI模型直接控制Blender&#xff0c;实现自动化3D建模。 1. 功能与原理 • 核心能力&#xff1a;用户通过自然语言指令&#xff08;…...

什么是RACI矩阵,应用在什么场景?

一、什么是RACI RACI矩阵是一种用于明确项目或任务中角色与责任的管理工具&#xff0c;通过定义不同人员在任务中的参与程度来避免职责不清的问题。以下是其核心要点&#xff1a; ‌RACI的含义‌ ● ‌R&#xff08;Responsible&#xff09;执行者‌&#xff1a;直接完成任务…...

Selenium自动化:玩转浏览器,搞定动态页面爬取

嘿&#xff0c;各位爬虫爱好者和自动化达人们&#xff01;是不是经常遇到这种情况&#xff1a;信心满满地写好爬虫&#xff0c;requests一把梭&#xff0c;结果抓下来的HTML里&#xff0c;想要的数据空空如也&#xff1f;定睛一看&#xff0c;原来数据是靠JavaScript动态加载出…...

QAI AppBuilder 快速上手(8): 图像修复应用实例2

LaMa-Dilated模型旨在通过扩张卷积技术实现高效的图像擦除和修复。该模型采用先进的卷积神经网络架构&#xff0c;能够处理复杂的图像输入&#xff0c;并填补图像中的缺失部分&#xff0c;使修复后的图像更加自然和逼真。LaMa-Dilated不仅在图像编辑领域表现出色&#xff0c;还…...

`ConstantPositionProperty` 的使用与应用

ConstantPositionProperty 的使用与应用 1. 什么是 ConstantPositionProperty&#xff1f; ConstantPositionProperty 是 Cesium 中用于表示实体位置的属性类。它表示一个实体在三维空间中的位置是固定的&#xff0c;不会随时间变化。与动态位置属性&#xff08;如 SampledPo…...

【计网】作业4

一. 单选题&#xff08;共22题&#xff0c;64分&#xff09; 1. (单选题)主机甲采用停止-等待协议向主机乙发送数据&#xff0c;数据传输速率是4kb/s&#xff0c;单向传播时延为30ms&#xff0c;忽略确认帧的发送时延。当信道利用率等于80%时&#xff0c;数据帧的长度为&#…...

MPDrive:利用基于标记的提示学习提高自动驾驶的空间理解能力

25年4月来自南方科技大学、百度、英国 KCL和琶洲实验室&#xff08;广东 AI 和数字经济实验室&#xff09;的论文“MPDrive: Improving Spatial Understanding with Marker-Based Prompt Learning for Autonomous Driving”。 自动驾驶视觉问答&#xff08;AD-VQA&#xff09;…...

QTSql全解析:从连接到查询的数据库集成指南

概览 与数据库的有效集成是确保数据管理效率和应用性能的关键&#xff0c;Qt框架就提供了强大的QtSql模块&#xff0c;使得开发者能够轻松地进行数据库操作&#xff0c;包括连接、查询执行以及结果处理等 一、引入QtSql模块 首先&#xff0c;需要在项目中引入QtSql模块&…...

FreeRTOS临界区

在FreeRTOS中&#xff0c;临界区通过关闭可管理的中断来保护共享资源&#xff0c;具体关闭的中断层级由configMAX_SYSCALL_INTERRUPT_PRIORITY宏定义决定。以下是关键点解析&#xff1a; 中断优先级分类&#xff1a; 高优先级中断&#xff1a;数值低于configMAX_SYSCALL_INTERR…...

【学习笔记】HTTP和HTTPS的核心区别及工作原理

一、基础概念 HTTP&#xff08;超文本传输协议&#xff09;&#xff1a;明文传输数据&#xff0c;默认端口80&#xff0c;容易被窃听或篡改。 HTTPS&#xff08;HTTP SSL/TLS&#xff09;&#xff1a;通过加密传输数据&#xff0c;默认端口443&#xff0c;保障安全性。 二、…...

Dubbo的简单介绍

Dubbo的简单介绍 Dubbo 是一个高性能的 Java RPC 框架&#xff0c;最初由阿里巴巴开发&#xff0c;用于构建分布式服务。它主要用于提供服务间的通信&#xff0c;支持高效的远程调用和服务治理&#xff0c;常用于大规模分布式系统中。Dubbo 提供了以下几个核心功能&#xff1a…...

7.2 重复推送(每日、每周等)

1. 核心方法 使用 UNCalendarNotificationTrigger 的 dateMatching 参数配置日历组件&#xff08;DateComponents&#xff09;&#xff0c;结合 repeats: true 实现周期性触发。 2. 不同频率的重复推送配置 2.1 每日重复 每天固定时间触发&#xff08;如上午 10:00&#xff…...

【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&#xff1a;调用角色方法2&#xff1a;调用角色方法3&#xff1a; roles 中 tags 使用实战案例 Roles角色 角色是ansible自1.2版本引入的新特性&#xff0c;用于层次性、结构化…...