Ansible 零基础到精通实战指南
Ansible 零基础到精通实战指南
项目描述
Ansible是一款开源的IT自动化引擎,可实现配置管理、应用部署、服务编排等运维自动化操作。本教程通过14天的系统学习路径,从基础概念到企业级实战项目,帮助开发者掌握Ansible的核心功能与最佳实践。
功能特性
- 全栈自动化:支持Linux/Windows系统配置、网络设备管理、云资源编排
- 无代理架构:通过SSH协议实现远程管理,无需在目标节点安装客户端
- 幂等性设计:确保操作重复执行时系统状态一致
- 模块化组件:提供2000+内置模块,支持自定义扩展
- 多环境支持:兼容物理机、虚拟机、容器和主流云平台
- 策略即代码:通过YAML文件实现基础设施合规性管理
安装指南
基础环境要求
- Python 3.8+
- SSH客户端
- 控制节点:Linux/macOS/Windows WSL
安装步骤
# 安装Ansible核心
pip install ansible
# 安装AWS相关组件
pip install boto3
ansible-galaxy collection install amazon.aws
# 验证安装
ansible --version
认证配置
# 配置免密登录
ssh-copy-id -f "-o IdentityFile ~/.ssh/key.pem" user@host
# 创建Ansible Vault加密凭证
openssl rand -base64 2048 > vault.pass
ansible-vault create credentials.yml --vault-password-file vault.pass
使用说明
基础示例:静态资源部署
# apache_deploy.yml
- name: 部署Web服务
hosts: webservers
tasks:
- name: 安装Apache
apt:
name: apache2
state: latest
- name: 复制静态页面
template:
src: templates/index.html.j2
dest: /var/www/html/index.html
AWS动态清单示例
#!/usr/bin/env python
# ec2_inventory.py
import boto3
ec2 = boto3.client('ec2')
response = ec2.describe_instances()
# 生成动态主机清单...
条件执行示例
- name: 关闭Ubuntu实例
hosts: all
gather_facts: yes
tasks:
- name: 关机操作
command: /sbin/shutdown -h now
when: ansible_distribution == "Ubuntu"
核心代码解析
1. 角色目录结构
web_server/
├── defaults/ # 默认变量
├── files/ # 静态文件
├── handlers/ # 触发器
├── meta/ # 依赖声明
├── tasks/ # 主任务链
├── templates/ # Jinja2模板
└── vars/ # 私有变量
2. 策略即代码实现
# policy_as_code.yml
- name: 审计S3存储桶策略
hosts: localhost
tasks:
- name: 检查公开访问权限
amazon.aws.s3_bucket_info:
name: "{{ bucket_name }}"
register: bucket_info
- name: 报告违规存储桶
debug:
msg: "发现公开存储桶: {{ bucket_info.buckets[0].name }}"
when: bucket_info.buckets[0].acl.grants|selectattr('permission','equalto','FULL_CONTROL')|list|length > 0
3. 网络自动化模块
- name: 配置网络设备
hosts: routers
connection: network_cli
tasks:
- name: 更新ACL规则
ios_config:
lines:
- access-list 101 permit tcp any any eq 22
- access-list 101 deny ip any any
save_when: changed
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码