Ansible 的概述主要涵盖其无代理架构、核心组件(Inventory、Modules、Playbooks)以及适用场景,适合需要批量配置管理且不希望在被管节点安装客户端的团队。
先说结论:Ansible 核心在于通过 SSH 协议推送指令,无需在被管服务器安装 agent,适合中小规模自动化运维。
- 适合:批量管理 Linux/Windows 服务器、网络设备配置。
- 先看:控制节点与被管节点的 SSH 连通性及权限配置。
- 建议:从 ad-hoc 命令入手测试,再过渡到 Playbook 编排。
核心概述
Ansible 概述内容通常包含架构原理、核心配置文件位置以及模块分类。因为不需要在被管节点运行守护进程,所以部署成本低,但依赖 SSH 稳定性和 Python 环境。
架构与工作原理
Ansible 采用控制节点推送模式,依赖 SSH 协议通信。控制节点通过 SSH 连接被管节点,推送模块代码并执行,结果返回后删除临时文件。
环境准备与配置示例
1. 安装控制端:在管理机器上通过 pip 或系统包管理器安装 Ansible。
2. 配置 Inventory:编辑 hosts 文件,定义被管服务器 IP 分组。
[webservers]
192.168.1.10
192.168.1.11
[dbservers]
192.168.1.20
3. 配置 SSH 免密:确保控制节点能通过 SSH 密钥登录被管节点。
4. 配置文件 ansible.cfg(可选):覆盖默认配置。
[defaults]
inventory = ./hosts
host_key_checking = False
remote_user = root
注意:host_key_checking = False 仅建议在测试环境使用,生产环境建议严格管理 known_hosts 以避免中间人攻击风险。
常用命令与 Playbook 示例
验证安装版本:
ansible `--version`
测试连通性:
ansible all -m ping
基础 Playbook 示例(site.yml):
---
- hosts: webservers
become: true
tasks:
- name: Ensure Nginx is installed
apt:
name: nginx
state: present
执行 Playbook 检查模式:
ansible-playbook site.yml `--check`
效果验证方法
执行 ansible all -m ping,返回 SUCCESS 表示连通性正常。执行 playbooks 后,登录被管服务器检查服务状态或配置文件是否变更。
常见问题与安全建议
1. SSH 主机密钥检查:首次连接可能因 StrictHostKeyChecking 失败,测试环境可在 ansible.cfg 中配置 host_key_checking = False,生产环境建议严格管理 known_hosts。
2. Python 路径:被管节点 Python 环境路径非标准时,需指定 ansible_python_interpreter。
3. 权限问题:涉及系统配置修改时,记得在任务中启用 become: true 提权。
参考来源
Ansible Official Documentation, "Introduction to Ansible", https://docs.ansible.com/