一、系统管理类模块
用于管理系统基础配置(用户、组、服务、定时任务等)。
1. `ansible.builtin.user`
功能:管理系统用户(创建、删除、修改属性)。
示例:创建 `devuser` 用户并加入 `wheel` 组:
- name: 创建开发用户
ansible.builtin.user:
name: devuser # 用户名
uid: 1001 # 用户ID
group: dev # 主组
groups: wheel # 附加组
shell: /bin/bash # 默认shell
home: /home/devuser # 家目录
state: present # 确保存在(创建)
2. `ansible.builtin.group`
功能:管理系统用户组。
示例:创建 `dev` 组并设置 GID:
- name: 创建开发组
ansible.builtin.group:
name: dev
gid: 2001
state: present
3. `ansible.builtin.service`
功能:管理系统服务(启动、停止、重启、设置开机自启)。
示例:确保 `nginx` 服务启动并开机自启:
- name: 管理 nginx 服务
ansible.builtin.service:
name: nginx
state: started # 状态:started(启动)、stopped(停止)、restarted(重启)
enabled: yes # 开机自启(yes/no)
4. `ansible.builtin.cron`
功能:管理定时任务(crontab)。
示例:添加每天凌晨 3 点执行备份脚本的任务:
- name: 添加备份定时任务
ansible.builtin.cron:
name: "daily backup" # 任务名称(便于识别)
minute: "0"
hour: "3"
job: "/usr/local/backup.sh" # 执行的命令/脚本
user: root # 执行用户
二、包管理类模块
用于在不同系统中安装/卸载软件包(按操作系统包管理器分类)。
1. `ansible.builtin.yum`
功能:管理 RPM 系系统(CentOS、RHEL)的软件包(基于 yum/dnf)。
示例:安装最新版 `nginx`:
- name: 安装 nginx
ansible.builtin.yum:
name: nginx
state: latest # 安装最新版本
update_cache: yes # 先更新缓存
2. `ansible.builtin.apt`
功能:管理 Debian 系系统(Ubuntu、Debian)的软件包(基于 apt)。
示例:安装 `apache2` 并确保已安装:
- name: 安装 apache2
ansible.builtin.apt:
name: apache2
state: present # 确保存在(不升级)
update_cache: yes # 等价于 apt update
3. `ansible.builtin.package`
功能:通用包管理模块(自动适配系统的包管理器,如 yum/apt),适合跨系统场景。
示例:跨系统安装 `git`:
- name: 安装 git(跨系统)
ansible.builtin.package:
name: git
state: present
三、文件操作类模块
用于管理文件/目录(创建、复制、修改权限、内容等)。
1. `ansible.builtin.file`
功能:管理文件/目录的属性(权限、所有者、创建/删除等)。
示例:创建 `/data/logs` 目录并设置权限:
- name: 管理日志目录
ansible.builtin.file:
path: /data/logs # 路径
state: directory # 类型:directory(目录)、file(文件)、link(软链接)
mode: '0755' # 权限(八进制,加引号避免被解析为数字)
owner: root
group: root
2. `ansible.builtin.copy`
功能:将本地文件/目录复制到远程主机,或生成内容到远程文件。
示例:复制本地 `nginx.conf` 到远程并设置权限:
- name: 部署 nginx 配置
ansible.builtin.copy:
src: ./nginx.conf # 本地文件路径(相对 playbook 目录)
dest: /etc/nginx/nginx.conf # 远程路径
mode: '0644'
owner: root
group: root
3. `ansible.builtin.template`
功能:基于 Jinja2 模板生成文件(支持变量替换,比 `copy` 更灵活)。
示例:用模板生成 `php.ini`(模板中包含 `{{ memory_limit }}` 变量):
- name: 生成 php 配置
ansible.builtin.template:
src: ./php.ini.j2 # 本地模板文件(含变量)
dest: /etc/php.ini
mode: '0644'
vars:
memory_limit: 512M # 传递给模板的变量
4. `ansible.builtin.lineinfile`
功能:修改文件中的特定行(如替换配置项、添加行)。
示例:在 `/etc/sysctl.conf` 中设置 `net.ipv4.ip_forward=1`:
- name: 开启 IP 转发
ansible.builtin.lineinfile:
path: /etc/sysctl.conf
line: 'net.ipv4.ip_forward = 1' # 要添加/替换的行
regexp: '^net.ipv4.ip_forward' # 匹配已有行的正则(用于替换)
state: present
四、命令执行类模块
用于在远程主机执行命令或脚本。
1. `ansible.builtin.command`
功能:执行远程命令(无 shell 解析,不支持管道 `|`、变量 `$VAR` 等)。
示例:查看 `/etc/os-release` 内容:
- name: 查看系统版本
ansible.builtin.command: cat /etc/os-release
register: os_info # 保存输出结果到变量
- name: 打印结果
ansible.builtin.debug:
var: os_info.stdout # 输出命令的标准输出
2. `ansible.builtin.shell`
功能:通过 shell(如 `/bin/bash`)执行命令(支持管道、变量、通配符等)。
示例:统计 `/var/log` 下日志文件数量:
- name: 统计日志文件数
ansible.builtin.shell: ls -l /var/log/*.log | wc -l
register: log_count
- name: 打印数量
ansible.builtin.debug:
var: log_count.stdout
3. `ansible.builtin.script`
功能:将本地脚本复制到远程主机并执行(自动处理权限和执行)。
示例:执行本地 `deploy.sh` 脚本:
- name: 执行部署脚本
ansible.builtin.script: ./deploy.sh # 本地脚本路径
五、网络与服务类模块
用于网络配置、服务调用等。
1. `ansible.builtin.uri`
功能:发送 HTTP/HTTPS 请求(如调用 API、检查网页状态)。
示例:检查 `nginx` 服务是否正常响应:
- name: 检查 nginx 状态
ansible.builtin.uri:
url: http://localhost:80 # 请求地址
method: GET # 请求方法
status_code: 200 # 期望的响应状态码(成功则继续,否则失败)
2. `ansible.builtin.firewalld`
功能:管理 firewalld 防火墙规则(CentOS/RHEL 7+)。
示例:允许 80/tcp 端口通过防火墙:
- name: 开放 80 端口
ansible.builtin.firewalld:
service: http # 或 port: 80/tcp
permanent: yes # 永久生效
immediate: yes # 立即生效(无需重启防火墙)
state: enabled
六、其他核心模块
- `ansible.builtin.setup`:收集远程主机的facts(系统信息,如IP、内存、磁盘等),默认自动执行,可通过 `gather_facts: yes` 控制。
- `ansible.builtin.debug`:打印变量或信息(调试专用)。
- `ansible.builtin.include_tasks`/`ansible.builtin.import_tasks`:引入其他任务文件(拆分复杂playbook)。
总结
Ansible 核心模块按功能可分为系统管理、包管理、文件操作、命令执行、网络服务等类别,覆盖了自动化运维的大部分基础场景。其中,`user`、`service`、`yum`/`apt`、`copy`、`shell` 是最常用的“高频模块”,掌握这些模块即可完成大部分日常自动化任务。
使用时需注意模块的适用场景(如 `yum` 仅用于RPM系统),并通过 `ansible-doc <模块名>` 查看完整参数(如 `ansible-doc ansible.builtin.copy`)。

1440

被折叠的 条评论
为什么被折叠?



