用途
Ansible-roles 聚焦于使用 Ansible 角色(roles)来结构化和复用自动化代码,帮助实现模块化、可维护的自动化与配置管理。资料以 webserver 角色为主线,展示如何把一个角色的任务、变量、模板、处理器和依赖组织成标准结构,并在 playbook 中调用。
主要能力(资料中展示的内容)
- 标准角色目录结构:roles/webserver/ 下包含 README.md、defaults/main.yml、files/(如 nginx.conf、ssl/cert.pem、ssl/key.pem)、handlers/main.yml、meta/main.yml、tasks/(main.yml、install.yml、configure.yml、security.yml)、templates/(nginx.conf.j2、site.conf.j2)、tests/(inventory、test.yml)、vars/main.yml。
- 任务组织:tasks/main.yml 通过 include_vars 按 ansible_os_family 加载变量,并用 import_tasks 分别引入 install.yml、configure.yml、security.yml,可打 tags。
- 安装与配置:示例包含 Debian/Ubuntu 与 RedHat/CentOS 的包安装分支、目录创建、certbot 安装、nginx 配置模板部署、site 配置部署与启用、默认站点禁用、日志轮转配置。
- 安全任务:生成 dhparam、设置权限、配置 ufw/firewalld、创建 basic auth 文件。
- 变量分层:defaults/main.yml 提供可覆盖默认值;vars/main.yml 存放不应被覆盖的变量,并通过 include_vars 加载 Debian.yml、RedHat.yml 等系统特定变量。
- 处理器:handlers/main.yml 定义 Reload nginx、Restart nginx、Validate nginx config、Reload firewall,并支持 listen。
- 模板:templates/nginx.conf.j2 与 site.conf.j2 使用 Jinja2 根据变量生成配置,包含 SSL、gzip、虚拟主机、代理、basic auth 与安全响应头等。
- 依赖与元数据:meta/main.yml 声明 galaxy_info、支持平台(Ubuntu focal/jammy、Debian buster/bullseye、EL 7/8/9)、galaxy_tags 以及 dependencies(如 common、firewall)和 allow_duplicates。
使用方式(资料中给出的示例)
- 在 playbook 的 roles 中直接列出角色;也可以为角色传 vars、设置 tags。
- 使用 pre_tasks 与 post_tasks 在角色执行前后插入任务。
- 角色引入方式:静态 import_role;动态 include_role 并可配合 when 条件;使用 import_role 的 tasks_from 指定 preflight、install、configure 等任务文件。
- 使用 ansible-galaxy 初始化角色:ansible-galaxy init roles/myapp;也支持 --init-path。
- 从 Galaxy 安装角色:ansible-galaxy install geerlingguy.nginx;指定版本 geerlingguy.nginx,2.8.0;按 requirements.yml 安装:ansible-galaxy install -r requirements.yml。requirements.yml 示例支持 Galaxy 角色、Git 仓库来源(scm: git)和本地路径。
适用场景
适用于把服务器配置、软件安装、服务配置、安全加固等重复性工作封装为可复用角色;适用于按操作系统差异维护变量、按环境传递参数、用 tags 选择性执行任务的自动化场景;也适用于通过 Galaxy 或 Git 分发和安装角色。
限制与未提供内容
资料未提供收费、价格、平台支持范围(除示例平台外)、性能效果或具体版本兼容性的完整说明。部分示例代码在资料末尾被截断(如 app_port 处),故相关完整用法暂未提供。