一、软件管理类模块
1. yum/dnf 模块
- 功能:管理 RPM 软件包(安装/升级/删除)
- 典型场景:
- 批量部署基础环境(如安装 Nginx/MySQL)
- 自动化更新安全补丁
- 示例参数:
- name: Install httpd yum: name: httpd state: latest
2. apt 模块
- 功能:管理 DEB 软件包(Ubuntu/Debian)
- 典型场景:
- 配置 APT 源仓库
- 安装特定版本软件
- 示例参数:
--- - name: 管理 DEB 软件包 hosts: ubuntu_servers become: yes # 需要 root 权限 vars: target_package: nginx package_version: "1.18.0-0ubuntu1" tasks: # 场景 1:配置 APT 源仓库 - name: 添加 Docker 官方 APT 源 ansible.builtin.apt_repository: repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable" state: present filename: docker.list # 存储到 /etc/apt/sources.list.d/docker.list update_cache: yes # 场景 2:安装特定版本软件 - name: 安装指定版本软件包 ansible.builtin.apt: name: "{{ target_package }}={{ package_version }}" state: present update_cache: yes
二、文件管理类模块
1. copy 模块
- 功能:传输本地文件到远程主机
- 典型场景:
- 分发统一配置文件(如 nginx.conf )
- 部署静态资源文件
- 高级用法:
- copy: src: app_config.ini dest: /etc/app/ mode: 0644
2. template 模块
- 功能:带变量替换的文件传输
- 典型场景:
- 动态生成环境差异配置(如数据库连接地址)
- 多节点差异化部署
- 示例参数:
--- - name: 动态配置部署 hosts: all become: yes vars: # 基础变量定义 db_connection: "{{ hostvars[inventory_hostname]['db_host'] }}:3306" deploy_path: "/opt/{{ app_name }}" tasks: - name: 创建配置目录 ansible.builtin.file: path: "{{ deploy_path }}/conf" state: directory mode: '0755' - name: 生成动态配置文件 ansible.builtin.template: src: templates/app_config.j2 # Jinja2模板文件 dest: "{{ deploy_path }}/config.yml" mode: '0644' validate: '/usr/bin/yamllint %s' # 配置文件语法校验[1]() - name: 分发差异证书文件 ansible.builtin.copy: src: "certs/{{ cert_type }}.pem" # 根据节点类型选择证书 dest: "{{ deploy_path }}/ssl.pem"
三、服务管理类模块
1. service/systemd 模块
- 功能:管理系统服务状态
- 典型场景:
- 批量重启异常服务
- 配置开机自启动
- 示例参数:
- service: name: nginx state: restarted enabled: yes
四、用户权限类模块
1. user 模块
- 功能:管理用户账号
- 典型场景:
- 批量创建应用专用账户
- 设置用户密码过期策略
- 示例参数:
- user: name: appuser groups: www-data shell: /sbin/nologin
2. lineinfile 模块
- 功能:精准修改文件指定行
- 典型场景:
- 配置 SSH 安全策略
- 修改系统内核参数
- 示例参数:
- lineinfile: path: /etc/ssh/sshd_config regexp: '^#PermitRootLogin' line: 'PermitRootLogin no'
五、系统信息类模块
1. setup 模块
- 功能:收集主机系统信息
- 典型场景:
- 资产信息自动化采集
- 条件判断依据获取(如根据系统版本执行不同操作)
- 示例参数:
--- - name: 采集主机信息并执行条件操作 hosts: all become: yes gather_facts: no # 显式禁用默认 facts 收集 tasks: # --------------------------- # 核心功能模块 # --------------------------- - name: 收集完整系统信息 ansible.builtin.setup: gather_subset: - all # 收集所有信息子集[1]() - !hardware # 排除硬件相关数据 filter: "ansible_distribution_*" # 过滤发行版信息[2]() register: host_facts # --------------------------- # 资产信息处理 # --------------------------- - name: 生成资产报告文件 ansible.builtin.template: src: reports/host_report.j2 dest: "/var/log/ansible/{{ inventory_hostname }}_report.txt" when: host_facts.ansible_facts.ansible_os_family == "Debian" # --------------------------- # 条件判断应用 # --------------------------- - name: 针对 Ubuntu 20.04 的特殊配置 ansible.builtin.apt: name: nginx state: latest when: - host_facts.ansible_facts.ansible_distribution == "Ubuntu" - host_facts.ansible_facts.ansible_distribution_major_version >= "20" - name: 针对 CentOS 的防火墙配置 ansible.builtin.yum: name: firewalld state: present when: host_facts.ansible_facts.ansible_os_family == "RedHat"
六、任务调度类模块
1. cron 模块
- 功能:管理定时任务
- 典型场景:
- 部署日志轮转任务
- 配置备份脚本定时执行
- 示例参数:
- cron: name: "Daily backup" minute: "0" hour: "2" job: "/opt/backup.sh"
七、网络管理类模块
1. get_url 模块
- 功能:从网络下载文件
- 典型场景:
- 离线环境预下载安装包
- 获取远程配置文件
- 示例参数:
- name: 下载离线安装包 ansible.builtin.get_url: url: "https://example.com/packages/nginx-1.18.0.deb" dest: "/opt/packages/nginx.deb" checksum: "sha256:2e1a6dda32e987d3011223f33ef16aee3f4862ac9d28c3d4855c9d15205652d5" mode: '0644' force: no # 仅在文件不存在时下载 --- - name: 拉取动态配置文件 #获取远程配置文件 ansible.builtin.get_url: url: "http://config-server/app.conf" dest: "/etc/app/app.conf" validate_certs: no # 适用于自签名证书场景 timeout: 30 headers: Authorization: "Bearer {{ auth_token }}"
模块对比与选型建议
场景需求 | 推荐模块 | 优势特性 |
---|---|---|
简单命令执行 | command | 无依赖、快速执行 |
复杂脚本执行 | shell | 支持管道/重定向 |
批量文件分发 | synchronize | 增量同步高效 |
配置版本管理 | git | 集成版本控制 |
实践建议:优先使用声明式模块(如 yum/file),减少 shell/command 的使用频率以增强可维护性。建议配合 ansible-lint 进行剧本规范性检查。
来源链接:https://www.cnblogs.com/akita95/p/18783494
© 版权声明
本站所有资源来自于网络,仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您(转载者)自己承担!
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
THE END
暂无评论内容