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

如何快速上手 Ansible?

Ansible 适合希望通过 SSH 协议实现无代理自动化运维的场景,控制节点安装后即可管理支持 SSH 的目标主机,无需在被管节点安装客户端。

先说结论:Ansible 核心优势在于无代理架构和 YAML 语法,适合配置管理、应用部署及任务编排,新手建议从静态清单和 ad-hoc 命令入手。

  • 适合:系统管理员、DevOps 工程师及需要管理多台服务器的技术人员,尤其是希望避免在目标机安装代理的场景。
  • 先看:主机清单(Inventory)配置、SSH 免密连接设置及 ansible.cfg 核心配置文件优先级。
  • 建议:先在测试环境验证 playbook 幂等性,推荐使用完全限定集合名称(FQCN)调用模块以避免冲突。

环境准备与安装

控制节点支持 Linux、macOS 或 Windows(通过 WSL)。确保控制节点已安装 Python 3。以下是主流系统的具体安装命令:

# Ubuntu/Debian
sudo apt update
sudo apt install ansible# CentOS/RHEL
sudo yum install ansible# 通用 pip 安装
pip3 install ansible# 验证安装版本及配置路径
ansible `--version`

配置 SSH 免密连接

Ansible 默认通过 SSH 连接被管节点,建议配置公钥认证以避免每次输入密码。在控制节点执行以下命令将公钥分发到目标主机:

ssh-copy-id user@192.168.1.10

若提示权限错误,可手动将控制节点的~/.ssh/id_rsa.pub 内容追加到目标主机的~/.ssh/authorized_keys,并确保权限为 600。

主机清单与配置

默认清单文件为/etc/ansible/hosts,支持 INI 格式。建议在项目目录自定义清单,通过-i 或`--inventory` 指定路径。格式示例:

[webservers]
192.168.1.10
192.168.1.11

配置文件 ansible.cfg 有优先级(项目目录 > 用户主目录 > 系统默认),可用 ansible `--version` 查看当前生效配置路径。

命令速用与 Playbook 实战

以下是快速验证环境可用的基础命令,直接在控制节点执行:

# 测试所有主机连通性
ansible all -m ping# 查看主机清单列表
ansible-inventory `--list`# 运行临时命令查看远程主机 uptime
ansible all -m command -a "uptime"

编写 Playbook 时,YAML 文件以---开头,仅用空格缩进(禁止 tab),同级元素缩进一致。任务调用 Ansible 模块实现功能,示例:

---
- name: 创建指定 UID 的用户hosts: webserverstasks:- name: 确保 newbie 用户存在ansible.builtin.user:name: newbieuid: 4000state: present

验证方法

执行 playbook 后,观察命令输出中的 changed 和 ok 状态。若多次运行同一 playbook,changed 数量应为 0,表明幂等性生效。使用 ansible-inventory `--list` 可查看主机列表,使用 ansible-inventory `--graph` 可查看组结构。对于具体任务,如创建用户,可在目标主机执行 id newbie 确认用户及 UID 是否符合预期。

常见问题排查(Troubleshooting)

  • SSH 连接失败:检查控制节点到目标节点的网络连通性,确认 SSH 服务已启动,端口是否为 22,或是否在 ansible.cfg 中指定了正确端口。
  • 权限拒绝(Permission Denied):若任务需要 root 权限,需在 Playbook 任务中添加 become: true,或命令行添加`--become`。
  • Python 版本问题:被管节点需安装 Python 2.6+ 或 3.5+,若目标机为最小化安装,可能需要先手动安装 Python。
  • YAML 语法错误:缩进必须使用空格,禁止使用 tab 键,冒号后必须加空格,列表项以 - 开头。
  • 模块名称冲突:推荐使用完全限定集合名称(如 ansible.builtin.user),避免不同集合间模块名冲突。

参考来源

  • Ansible 官方文档
  • Ansible 入门指南

原文链接:https://www.zjcp.cc/ask/11136.html

http://www.jsqmd.com/news/820267/

相关文章:

  • 高级安卓开发工程师:性能与功耗优化技术深度解析
  • GitHub 日榜第 2、13k Star,AI to Earn 火了——我用 Claude Code 三天搓了一个自己的
  • Overture开源框架:快速部署生产级大语言模型API服务
  • 嵌入式项目必备:PCF8523实时时钟模块硬件连接与Arduino/CircuitPython驱动指南
  • 2026年佛山冬至家庭围餐,这家占据全网海鲜种草榜首的店别错过! - GrowthUME
  • Android二进制XML解析终极指南:AXMLPrinter2免费工具完全教程
  • 树莓派PiTFT背光控制与触摸屏配置全攻略
  • 2026年,重庆口碑好的除甲醛公司哪家最专业?速来揭秘! - GrowthUME
  • 3分钟搞定京东自动抢购:Python工具终极完整指南
  • COB LED支架设计:角部定位与热管理技术解析
  • 2026年英文文章降AI率指南:海外伙伴避坑必备(附4款工具测评) - 降AI实验室
  • 【权威实测】Midjourney 35mm风格复刻成功率从31%跃升至89%:基于217组对照实验的12项Prompt变量校准清单
  • WMMAVYUXUANSYS/育轩:Dante主机接入手持发射器:让会议音频进入“无线高保真”时代
  • 【C#vsPython·第一阶段】int、string、bool?Python 的类型世界有点不一样
  • Ledger购买代购售后政策有何不同? - GrowthUME
  • 别再手动算了!用Python的xlrd库3行代码搞定Excel日期数字转换(附完整代码)
  • 英语阅读_Ten percent off
  • 告别提取码焦虑:百度网盘资源获取的智能革命
  • Adafruit PCM5122 I2S DAC模块:从硬件连接到三大平台实战指南
  • hLife Collection | Oncology
  • 罗马尼亚语TTS情感表达失效?揭秘ElevenLabs语音引擎对动词变位时态的误判逻辑——基于12,843条真实语料的错误模式聚类报告
  • AI应用架构深度解析:AnythingLLM如何实现全栈本地化部署与多模态文档处理
  • Ledger购买海淘售后运费由谁承担? - GrowthUME
  • 现代笔记应用开发:Tauri+React技术栈与本地优先架构实践
  • VR技术革新无障碍设计:Empath-D系统解析
  • PCB设计规范-机插定位孔设计要求
  • 告别Quartus!在VSCode里用Modelsim做Verilog语法检查(Windows保姆级配置)
  • 2026年4月礼堂椅定制源头厂家推荐,报告厅礼堂椅/礼堂椅颜色定制/金属框架礼堂椅/礼堂椅排椅,礼堂椅定制企业怎么选择 - 品牌推荐师
  • 一款开源免费的无水印短视频下载工具!某音视频批量下载工具,高清无水印!(免安装 便携版)!速度很快!
  • Git 大文件存储 LFS 如何配置避免分支切换卡顿