Ansible 入门实战指南

Ansible 零基础实战:无 Agent、SSH 直连、YAML 剧本。从环境搭建、清单文件、ad-hoc 命令到写出第一个自动化部署 Web 服务器的 playbook,一篇走完核心概念。

最佳实践
操作系统与资源管理插画

直接回答:Ansible 是无 Agent 的开源自动化平台——控制机通过 SSH 把 YAML 写的"期望状态"推到目标机执行,通常无需常驻 Ansible agent,但多数 Linux 模块要求目标机有受支持的 Python。入门路径:装 Ansible → 写清单(inventory)→ 跑 ad-hoc 命令 → 写第一个 playbook 自动部署 Web 服务器。

为什么是 Ansible

  • 无 Agent:目标机通常需 SSH 与受支持 Python;网络设备、Windows 等连接方式另有要求
  • YAML 可读:剧本即文档,新手也能看懂
  • 幂等:状态型模块通常支持幂等,command/shell 和外部副作用仍由作者保证

环境搭建与清单

控制机建议用独立虚拟环境或 pipx 安装与 Python 兼容的 Ansible 版本。清单文件声明被管机器:

[webservers]
web1 ansible_host=192.168.1.10
web2 ansible_host=192.168.1.11

[webservers:vars]
ansible_user=ubuntu

ad-hoc 命令:先跑起来

ansible webservers -i inventory.ini -m ping        # 连通性测试
ansible webservers -i inventory.ini -a "uptime"    # 任意命令
ansible webservers -i inventory.ini -m apt -a "name=nginx state=present" --become

playbook 之前先用 ad-hoc 验证连通与权限——排障成本最低。

第一个 playbook:部署 Web 服务器

- hosts: webservers
  become: true
  tasks:
    - name: 安装 Nginx
      apt: { name: nginx, state: present, update_cache: true }
    - name: 启动并开机自启
      service: { name: nginx, state: started, enabled: true }
    - name: 部署首页
      copy: { src: index.html, dest: /var/www/html/index.html, owner: root, group: root, mode: '0644' }

示例适用于 Debian/Ubuntu 且已准备 index.html、SSH 与受限 sudo 权限。运行 ansible-playbook -i inventory.ini site.yml 后再验证;apt 缓存更新等任务可能仍报告 changed,不能只靠 changed=0 判断业务正确。

部署完成后还要从访问端请求首页,核对状态码和正文。需要持续检查该页面时,可在观测云创建 HTTP 拨测并设置目标地址、节点、执行频率和响应断言,确认部署成功后页面仍能按预期访问。

排障速查

任务失败先看报错模块与 -vvv 输出;--check 干跑预估变更;--limit web1 缩小范围单点调试。

常见问题(FAQ)

Q:Ansible 能管 Windows 机器吗?
A:能——可通过 WinRM/PSRP;受支持版本也可使用 Windows OpenSSH,模块与平台前提需按官方 Windows 文档配置,但 IIS 配置、补丁管理都能自动化。

Q:控制机可以是 macOS 吗?
A:可以。控制机支持 macOS/Linux(不支持 Windows 原生;WSL 可供实验,但官方不支持将其用于生产控制节点),受支持目标平台、连接插件与 Python/PowerShell 版本有要求。

Q:playbook 里的密码密钥怎么管?
A:Ansible Vault 加密敏感变量文件,运行时 --ask-vault-pass 或密码文件解密——明文密钥绝不进仓库。

官方参考

本文依据官方文档整理,示例未在本文中进行运行验证。生产部署需按所用版本、权限和实际负载验证。

延伸阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台