Ansible核心模块和使用示例

一、系统管理类模块

用于管理系统基础配置(用户、组、服务、定时任务等)。

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`)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值