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

Ansible简介

Ansible 是什么?

Ansible 是一个开源的 自动化运维和配置管理工具,主要用于:

  1. 配置管理:自动化安装软件、配置系统、修改配置文件等

  2. 应用部署:在多台服务器上同时部署应用

  3. 任务执行:批量执行命令或脚本

  4. 编排 Orchestration:跨多台主机协调任务,比如启动依赖服务、顺序执行任务


Ansible 的特点

  1. 控制端执行
  • 只需要在自己的电脑(控制节点) 写剧本(Playbook)或执行命令, 不需要登录每台服务器逐一操作。
  1. 通过 SSH 连接受管节点
  • Ansible 会自动通过 SSH 登录目标服务器(受管节点),执行你写的任务。
  • 不需要在目标服务器上安装客户端软件(Ansible 是 agentless,无代理)。
  1. 自动化执行
  • Ansible所有命令都是远程执行的,不用在服务器上手写命令。

Ansible 的安装

一、准备控制端(Ubuntu 子系统)

1. 安装 WSL 和 Ubuntu

PowerShell(管理员模式)里运行:

wsl --install -d Ubuntu

安装完后设置用户名和密码

检查 WSL 版本:

wsl -l -v

确保 Ubuntu 在 VERSION 2(WSL2)。


2. 在 Ubuntu 里安装 Ansible

进入 Ubuntu 子系统,执行:

sudo apt update
sudo apt install -y ansible sshpass

验证:

ansible --version

二、准备受管节点

至少需要一个 Linux 节点作为被控端,可以有三种选择:

  1. 在本机再装一个虚拟机(比如 VirtualBox/VMware 装个 Ubuntu/CentOS)。

  2. 用云主机(阿里云、腾讯云、AWS、Azure 都行)。

  3. 直接用你自己的另一台 Linux 设备(如果有的话)。

受管节点必须能被 控制端(WSL Ubuntu) 通过网络访问。

也可以使用Docker 容器模拟受管节点, 比较方便:

  • 轻量化:不用额外启动完整虚拟机,节省资源
  • 快速搭建:几条命令就能启动多台 Linux 容器
  • 易于重置:容器出了问题可以直接删除重建
  • 隔离性好:每个容器相当于一台独立的 Linux 主机

参考我的另一篇博客(在 WSL Ubuntu 上使用 Docker 搭建可被 Ansible 控制的受控节点环境-CSDN博客) 学习如何使用docker搭建受控节点


3. 确认受管节点安装了 SSH 和 Python3

在受管节点上:

sudo apt update
sudo apt install -y openssh-server python3

保证 SSH 服务在运行:

systemctl status ssh

4. 配置 SSH 免密登录

控制端 (WSL Ubuntu)

ssh-keygen -t rsa -b 4096

一路回车即可。然后复制公钥到受管节点:

ssh-copy-id user@192.0.2.50

user 换成受管节点的用户名,192.0.2.50 换成受管节点的 IP)

测试能否免密 SSH:

ssh user@192.0.2.50

如果直接登录成功(不用密码),说明配置好了。


🛠️ 三、写 Ansible 清单文件

控制端 (WSL Ubuntu) 创建目录:

mkdir -p ~/ansible_quickstart
cd ~/ansible_quickstart

创建 inventory.ini

nano inventory.ini

内容:

[myhosts]
192.0.2.50 ansible_user=user

192.0.2.50 换成你的受管节点 IP,user 换成用户名。


🛠️ 四、测试 Ansible

  1. 验证清单文件:
ansible-inventory -i inventory.ini --list
  1. Ping 受管节点:
ansible myhosts -m ping -i inventory.ini

如果返回 pong,说明环境成功跑通 🎉

WSL(Ubuntu 子系统)和 Windows 磁盘的映射关系

WSL 里,Windows 的每个盘符都会挂载到 /mnt/ 目录下:

Windows 盘符WSL 对应路径
C:/mnt/c/
D:/mnt/d/
E:/mnt/e/

所以 Windows 上的文件路径:

D:\ansible\ansible_quickstart\inventory.ini

在 WSL 里就是:

/mnt/d/ansible/ansible_quickstart/inventory.ini
路径书写规则
  1. 盘符小写D:/mnt/d/

  2. 反斜杠换成正斜杠\/

  3. 大小写敏感:WSL 目录名和文件名大小写敏感

  4. 空格处理:如果路径有空格,需要用引号或者转义,例如:

cd "/mnt/d/My Files/ansible_quickstart"

或者

cd /mnt/d/My\ Files/ansible_quickstart

一些概念:

概念作用 / 含义通俗理解 / 类比
控制节点 (Control Node)执行 Ansible 命令和剧本的机器开发者的电脑,你在这里写 Playbook、运行命令
受管节点 (Managed Node)被 Ansible 管理的服务器目标服务器,Ansible 会远程 SSH 登录执行操作
Inventory (清单/主机列表)配置哪些主机、登录用户等信息配置文件,告诉程序目标机器是谁、登录用户是谁
变量 (Variables)存储主机或组的参数,如 IP、端口、用户名可复用参数,不用在剧本里写死具体值
模块 (Modules)执行具体操作的插件功能函数,每条模块就是一行可执行操作,如安装软件、复制文件、重启服务
剧本 (Playbook)多条任务的集合,按顺序执行方法或流程,把任务按顺序写好自动在目标主机执行
Roles (角色)任务、变量、文件、模板的组织方式包/模块化,把相关剧本、变量、文件打包成可重用单元

文章转载自:

http://ZQ6Ia1aT.zfLrs.cn
http://hWoCeXKb.zfLrs.cn
http://jcBIndkC.zfLrs.cn
http://XapP25YB.zfLrs.cn
http://VJlbmsLD.zfLrs.cn
http://ENbepxKn.zfLrs.cn
http://DCyEhCUo.zfLrs.cn
http://QqxcL3ki.zfLrs.cn
http://PP8CLJmB.zfLrs.cn
http://C42752YK.zfLrs.cn
http://LaB0X45H.zfLrs.cn
http://bpkvJcHX.zfLrs.cn
http://xB232rUH.zfLrs.cn
http://ABH8GNEs.zfLrs.cn
http://YXmnnVMt.zfLrs.cn
http://Sn4B6XFj.zfLrs.cn
http://p2v5W1Tp.zfLrs.cn
http://jGQrFDEA.zfLrs.cn
http://pysrMIfa.zfLrs.cn
http://BRoleG2m.zfLrs.cn
http://WC8m6bHb.zfLrs.cn
http://2ZbcTZGj.zfLrs.cn
http://TVMrchVj.zfLrs.cn
http://evbvYdh6.zfLrs.cn
http://k2hgUiZV.zfLrs.cn
http://Vm6usdF0.zfLrs.cn
http://RjD0dO66.zfLrs.cn
http://jve5tLsG.zfLrs.cn
http://10x0X9bG.zfLrs.cn
http://rQcGAFtG.zfLrs.cn
http://www.dtcms.com/a/387531.html

相关文章:

  • pytest使用总结笔记
  • 在VSCode中设置Qt开发环境
  • 斜杠命令Slash Commands:Roo Code 的自动化利器
  • 大数据毕业设计选题推荐-基于大数据的慢性肾病数据可视化分析系统-Spark-Hadoop-Bigdata
  • 基于红尾鹰优化的LSTM深度学习网络模型(RTH-LSTM)的一维时间序列预测算法matlab仿真
  • TDengine IDMP 基本功能——数据可视化(2. 柱状图)
  • Python与Google Earth Engine (GEE) 实现地理空间数据自动化处理:高效分析与批量任务执行
  • Dify Agent + AntV 实战:从 0 到 1 打造数据可视化解决方案
  • 系统架构设计师备考第25天——软件测试
  • 十、vue3后台项目系列——登录页面的搭建
  • 在博主内容推送系统中,通过RabbitMQ异步解耦及消息持久化+重试机制,使推送效率提升300%,成功率提升至99.9%的原理及实现
  • 【FreeRTOS】二值信号量vs互斥量核心差异
  • 记一次golang结合前端的axios进行预签名分片上传遇到403签名错误踩坑
  • LeetCode 面试经典 150_哈希表_单词规律(41_290_C++_简单)
  • 微信小程序修改页面导航标题的方式
  • Torch-Rechub学习笔记-task1
  • LightTools照明光学系统设计
  • 从技术探索到社区共建:程宇翔的隐私计算开源之路
  • 【Redis】云原生时代Redis高可用新范式:多活架构+异地容灾 生成详细内容
  • JsonCpp: 一个好用且轻量级的JSON解析库
  • 【设计模式】桥接模式
  • ACP(五):优化提示词(Prompt),精细地控制大模型的输出
  • Egg.js 性能测试全解析:从压力测试到深度调优
  • 自制脚本,解决Ubuntu20.04 键盘会突然失灵、键盘延迟突然很大问题
  • 172.在vue3中使用openlayers:引用 hover 效果,展示各种鼠标 cursor 样式
  • SpringBoot Oracle
  • LLMs之IR:《MUVERA: Multi-Vector Retrieval via Fixed Dimensional Encodings》的翻译与解读
  • Redis与Java集成实战:从入门到高级应用
  • Chromium 138 编译指南 macOS篇:配置depot_tools(三)
  • qt QHXYModelMapper详解