目录
1 Ansible核心介绍
1.1 什么是Ansible?
Ansible是一款基于Python开发的自动化运维工具,由Red Hat公司维护,采用YAML语言编写自动化脚本(Playbook)。它通过SSH协议实现无代理架构的配置管理、应用部署和任务自动化,现已成为DevOps领域的事实标准工具之一。
核心设计理念:
- 简单易用:YAML语法直观,学习曲线平缓
- 无代理架构:无需在目标主机安装客户端
- 幂等性:确保操作结果的一致性
- 模块化设计:丰富的内置模块支持各种运维场景

1.2 Ansible核心特点解析
1.2.1 基于Python生态
- 要求Python 2.6+(推荐Python 3.x)
- 利用Python丰富的库生态扩展功能
- 支持自定义模块开发(Python编写)
1.2.2 无代理架构优势
- 部署简单:仅需控制节点安装Ansible
- 维护方便:无需管理客户端版本
- 安全可靠:基于SSH加密通信
- 资源节省:不占用被管节点资源
1.2.3 幂等性实现原理

2 Ansible离线安装指南
2.1 内网环境安装准备
环境要求:
- CentOS/RHEL 7.x
- Python 2.7.5+
- SSH访问权限
- RPM依赖包完整集合
- 安装包结构:
ansible/
├── dependencies/
│ ├── python-*.rpm
│ └── sshpass-*.rpm
└── ansible-2.9.27-1.el7.noarch.rpm
2.2 分步安装过程
2.2.1 安装依赖包
# 解压安装包
tar -zxvf ansible.tar.gz
cd ansible/
# 安装Python依赖(示例)
rpm -ivh python-babel-0.9.6-8.el7.noarch.rpm --nodeps --force
rpm -ivh python-markupsafe-0.11-10.el7.x86_64.rpm --nodeps --force
...
rpm -ivh sshpass-1.06-2.el7.x86_64.rpm --nodeps --force
2.2.2 安装Ansible主包
rpm -ivh ansible-2.9.27-1.el7.noarch.rpm
2.2.3 验证安装
ansible --version
2.3 常见问题解决
- 依赖冲突:
# 使用--nodeps跳过依赖检查
rpm -ivh package.rpm --nodeps --force
- Python版本不兼容:
- 确保系统Python版本≥2.6
- 或配置虚拟环境
- SSH连接问题:
# /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False
3 Ansible核心命令详解
3.1 命令套件概览
命令 |
功能描述 |
常用场景 |
ansible |
执行Ad-Hoc命令 |
快速执行单条命令 |
ansible-playbook |
运行Playbook |
复杂任务编排 |
ansible-galaxy |
角色管理 |
复用社区配置 |
ansible-vault |
加密敏感数据 |
密码/密钥管理 |
ansible-pull |
拉取式执行 |
大规模部署 |
3.2 关键命令深度解析
3.2.1 ansible命令
# 检查所有主机磁盘空间
ansible all -m shell -a "df -h"
# 使用sudo安装软件包
ansible webservers -m yum -a "name=nginx state=present" -b
- 常用选项组合:

3.2.2 ansible-playbook
# playbook示例
- hosts: webservers
become: yes
tasks:
- name: Ensure Nginx is installed
yum:
name: nginx
state: latest
- 执行方式:
# 测试运行(dry-run)
ansible-playbook site.yml --check
# 带额外变量执行
ansible-playbook deploy.yml -e "version=1.23"
3.2.3 ansible-vault
# 加密敏感文件
ansible-vault encrypt secrets.yml
# 编辑加密文件
ansible-vault edit secrets.yml
# 运行时解密
ansible-playbook --ask-vault-pass site.yml
4 Ansible实战应用场景
4.1 典型应用架构

4.2 场景化解决方案
4.2.1 自动化部署Web应用
- hosts: app_servers
vars:
app_version: "2.4.1"
tasks:
- name: Pull Docker image
docker_image:
name: myapp:{{ app_version }}
source: pull
- name: Start container
docker_container:
name: myapp
image: myapp:{{ app_version }}
ports: "8080:80"
4.2.2 批量系统配置
- hosts: linux_servers
become: yes
tasks:
- name: Ensure timezone is Asia/Shanghai
timezone:
name: Asia/Shanghai
- name: Configure sysctl parameters
sysctl:
name: "{{ item.key }}"
value: "{{ item.value }}"
sysctl_file: /etc/sysctl.d/99-ansible.conf
state: present
reload: yes
loop:
- { key: 'vm.swappiness', value: '10' }
- { key: 'net.ipv4.tcp_syncookies', value: '1' }
5 总结
Ansible作为自动化运维领域的标杆工具,以其简单易用、功能强大的特点赢得了广泛认可,随着自动化需求的不断增长,掌握Ansible将成为运维工程师和开发者的必备技能。