Ansible部署学习
环境:Anolis 8.10
ansible部署学习
安装
Ansible 使用方式对比总结
方式 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
Python 虚拟环境安装 | - 不影响系统全局Python环境 - 可同时维护多个不同版本的Ansible - 便于隔离依赖包 | - 需要先安装Python和virtualenv - 环境激活后才能使用,不方便全局调用 | 需要多版本共存,或对环境隔离要求高的开发和测试环境 |
系统全局安装(pip/yum/apt) | - 安装方便,使用直接 - 系统命令行全局可用 | - 依赖系统Python版本 - 升级或卸载影响所有项目 - 可能和系统自带包冲突 | 单机或者单环境长期稳定使用,简单快速搭建场景 |
Docker 容器运行 | - 环境完全隔离,无需安装依赖 - 可快速切换不同Ansible版本 - 方便集成CI/CD流水线 | - 需要了解Docker使用 - 调试不如本地方便 - 性能上有少许开销 | 持续集成/持续交付环境,临时执行或者多人协作场景 |
直接安装
1 | dnf update |
直接安装可能会遇到版本问题,ansible要求python3.12,还是推荐虚拟环境安装。
使用虚拟环境安装
1 | python3 -m venv venv |
此方法保证至少能用,直接安装可能会遇到版本问题,ansible要求python3.12
使用docker安装
待补充
学习
用途
🧰 Ansible 的主要用途(按功能分类)
🔧 一、配置管理(Configuration Management)
自动化配置系统环境、服务、文件内容等。
示例用途:
- 安装并配置 Nginx、MySQL、Redis 等服务
- 设置系统参数(如
sysctl
、limit
)- 管理配置文件内容(如
.conf
、.ini
)- 修改环境变量、开机启动项
模块示例:
apt
,yum
,dnf
:包管理lineinfile
,copy
,template
:配置文件操作
🚀 二、应用部署(Application Deployment)
自动化部署自研应用或第三方服务,持续交付。
示例用途:
- 一键部署 Django、Node.js、Java 项目
- 同步代码、配置、数据库迁移
- 滚动重启服务,零停机更新
模块示例:
git
:拉取代码shell
,command
,systemd
:构建和启动服务docker_container
:容器化部署
📋 三、批量任务执行(Ad-hoc Tasks / 运维自动化)
批量在多个主机上执行命令或修改状态。
示例用途:
- 一键重启服务器服务
- 批量创建用户、更改密码、同步文件
- 查询内存、磁盘、负载等信息
模块示例:
user
,service
,cron
,hostname
,setup
- ad-hoc:
ansible all -m shell -a "uptime"
🔗 四、IT 编排(Orchestration)
协调多个服务、组件之间的依赖关系,实现流程控制。
示例用途:
- 部署流程控制(如先部署数据库再部署 Web)
- 多角色交互部署(Web + Cache + DB)
- 灾备切换、主备同步、流程通知等
特点:
- 多角色(roles)
- 条件判断、循环、依赖控制
- 结合
tags
、handlers
、include_tasks
📦 五、容器与云资源管理(Containers & Cloud)
集成支持 Docker、Kubernetes、AWS、GCP、Azure 等平台。
示例用途:
- 创建/启动/停止容器
- 批量部署 Kubernetes Pod
- 创建 AWS EC2、配置安全组、绑定域名
模块示例:
community.docker.*
k8s
,helm
,eks_cluster
amazon.aws.*
,google.cloud.*
🧠 分类总结表
分类 主要作用 常见模块 配置管理 安装软件、配置服务、编辑文件 lineinfile
,copy
,template
,yum
应用部署 拉代码、构建、运行、更新应用 git
,shell
,docker_container
批量任务执行 系统操作、批量指令执行 shell
,setup
,user
IT 编排 跨系统协调自动化流程 include_tasks
,handlers
,roles
云平台和容器管理 管理云资源和容器 docker_*
,k8s
,amazon.aws.*
✅ 总结一句话
**Ansible 是一个简单、强大、无代理的自动化工具,可用于管理基础设施、部署应用、编排流程和简化运维任务。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment