环境:Anolis 8.10

image-20250729163727520

ansible部署学习

安装

Ansible 使用方式对比总结

方式 优点 缺点 适用场景
Python 虚拟环境安装 - 不影响系统全局Python环境 - 可同时维护多个不同版本的Ansible - 便于隔离依赖包 - 需要先安装Python和virtualenv - 环境激活后才能使用,不方便全局调用 需要多版本共存,或对环境隔离要求高的开发和测试环境
系统全局安装(pip/yum/apt) - 安装方便,使用直接 - 系统命令行全局可用 - 依赖系统Python版本 - 升级或卸载影响所有项目 - 可能和系统自带包冲突 单机或者单环境长期稳定使用,简单快速搭建场景
Docker 容器运行 - 环境完全隔离,无需安装依赖 - 可快速切换不同Ansible版本 - 方便集成CI/CD流水线 - 需要了解Docker使用 - 调试不如本地方便 - 性能上有少许开销 持续集成/持续交付环境,临时执行或者多人协作场景

直接安装

1
2
dnf update
dnf install ansible

​ 直接安装可能会遇到版本问题,ansible要求python3.12,还是推荐虚拟环境安装。

使用虚拟环境安装

1
2
3
4
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/
pip install ansible

此方法保证至少能用,直接安装可能会遇到版本问题,ansible要求python3.12

使用docker安装

​ 待补充

学习

用途

🧰 Ansible 的主要用途(按功能分类)


🔧 一、配置管理(Configuration Management)

自动化配置系统环境、服务、文件内容等。

示例用途:

  • 安装并配置 Nginx、MySQL、Redis 等服务
  • 设置系统参数(如 sysctllimit
  • 管理配置文件内容(如 .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)
  • 条件判断、循环、依赖控制
  • 结合 tagshandlersinclude_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 是一个简单、强大、无代理的自动化工具,可用于管理基础设施、部署应用、编排流程和简化运维任务。