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

自动化运维工具 Ansible 概述及命令行模块怎么用?

Ansible 适合在没有代理的环境中批量管理 Linux 服务器,命令行模块主要用于临时任务,但生产环境更推荐专用模块。

先说结论:Ansible 核心优势是无代理架构,命令模块适合快速排查,但要注意幂等性与主机密钥检查。

  • 适合 SSH 可达的服务器群
  • 先看连通性测试 (ping 模块)
  • 建议优先用专用模块代替 shell
  • 默认开启主机密钥检查,首次连接需确认

环境准备与安装

在控制节点安装 Ansible,根据操作系统选择以下命令:

# CentOS/RHEL
yum install ansible -y# Ubuntu/Debian
apt install ansible -y# Pip 安装 (确保 Python 环境)
pip3 install ansible

安装完成后验证版本:

ansible `--version`

Inventory 配置文件示例

编辑 hosts 文件(默认位于 /etc/ansible/hosts 或当前目录下的 hosts),按组划分服务器 IP:

[webservers]
192.168.1.10
192.168.1.11[dbservers]
192.168.1.20 ansible_user=root

注意:若 SSH 端口非 22 或用户非当前用户,需在行后指定 ansible_port 或 ansible_user。

SSH 免密登录配置

Ansible 依赖 SSH 连接,需配置控制端到被管节点的免密登录:

# 生成密钥对 (一路回车)
ssh-keygen -t rsa -P ""# 分发公钥到目标机器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.10

分发完成后,手动 ssh root@192.168.1.10 测试是否无需密码即可登录。

命令行模块实操

下面是几个常用的即席命令,直接在控制节点执行即可:

# 测试所有主机连通性
ansible all -m ping# 查看 Web 服务器组 nginx 状态
ansible web_servers -m command -a "systemctl status nginx"# 需要提权时添加 `--become` 参数 (注意 shell 模块支持管道,command 不支持)
ansible all -m shell -a "uptime" `--become`

验证是否生效

执行命令后,除了观察终端输出的颜色(green 代表成功且无变更,yellow 代表成功且有变更),在脚本或自动化流程中应检查返回码:

# 查看上一条命令退出状态,0 代表成功
echo $?

同时登录目标机器检查实际配置,确认服务状态或文件内容与预期一致。对于关键操作,建议在 playbook 中使用 register 变量捕获输出进行断言。

常见风险与坑

  • 模块选择:command 模块不支持管道符、变量重定向(如 $HOME),需要复杂 shell 功能时改用 shell 模块。
  • 主机密钥检查:Ansible 默认开启 host_key_checking。首次连接未知主机可能会报错。生产环境若需关闭,需在 ansible.cfg 中设置 host_key_checking = False,避免中间人风险。
  • 幂等性:命令模块默认不幂等,重复执行可能触发告警或副作用,写入 playbook 前需测试,优先使用 service、yum 等专用模块。
  • 连接超时:网络波动可能导致 SSH 连接超时,可通过 -T 参数调整超时时间。

参考来源

  • Ansible 官方文档,Introduction to ad hoc commands,https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html

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

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

相关文章:

  • 工业 DC-DC 选型性能适配解析:钡特电源 VB10-48D15MD 与 URA4815YMD-10WR3 封装互通
  • SkillHarness:轻量级技能编排框架,构建可维护的AI与自动化工作流
  • ESP32协处理器实战:Adafruit AirLift为微控制器提供稳定WiFi/BLE连接
  • Windows风扇控制软件FanControl:专业级散热管理解决方案
  • ESP32物联网网关开发实战:从硬件选型到实时控制协议设计
  • 企业级矩阵系统分布式素材处理与多平台自适应转码技术实践
  • 如何快速获取9大网盘真实下载地址:LinkSwift网盘直链下载助手完整指南
  • 前端鼠标跟随器实现:从原理到实战性能优化
  • 你的输入法比你想的更聪明:拆解N-gram在拼音输入和纠错背后的实战逻辑
  • DECS训练框架:大模型推理效率革命——从“冗余思考“到“精准输出“的技术涅槃
  • 2026年乐山锅炉厂家哪家好:宜宾锅炉推荐、怎样选择锅炉厂家、成都锅炉厂家、成都锅炉推荐、汽锅炉厂家推荐、泸州锅炉厂家推荐选择指南 - 优质品牌商家
  • 点云配准算法进化史:从ICP的‘硬匹配’到CT-ICP的‘连续时空’,理解GICP背后的概率模型
  • 飞书文档批量导出神器:跨平台自动化迁移解决方案
  • Python通达信数据接口:5分钟快速获取A股数据的完整解决方案
  • 将Claude Code无缝切换至Taotoken平台解决访问限制问题
  • 云微推客系统开发|企业级私域裂变引擎,防丢单防错佣,合规二级分销
  • ETL 实验复盘:从 CSV 到学生画像标签表的完整转换流
  • Sumibi:开源文档AI处理工具,高效解析多语言PDF与复杂表格
  • Topit:终极macOS窗口置顶工具,三步解决多窗口遮挡难题
  • STM32智能门禁系统进阶:RC522读卡距离优化与低功耗设计实战
  • 保姆级教程:从显微镜下的芯片照片到完整版图,手把手教你图像拼接与对准
  • 【AAAI2026】GuideGen:用文本引导生成全躯干 CT 图像与解剖掩码的前沿方法解析
  • 仅剩47份|Midjourney Soot印相私藏工作流(含自研NoiseMap注入器+硫化钡色偏补偿LUT),内附Adobe暗房对照校验协议
  • 使用Taotoken多模型能力为智能客服场景提供稳定后端支持
  • CircuitPython库管理与REPL调试:嵌入式开发的核心技能
  • 云架构师成长指南:从核心概念到实战项目全解析
  • AUTOSAR模型驱动开发与IBM Rational工具链实战
  • 短剧还能做吗?海外和国内差别真的很大吗?
  • 如何配置浏览器PT插件实现高效种子下载:从入门到精通
  • GBase 8a之替换字符串中中文的方法