Ansible 是一个用于自动化配置管理、应用部署和任务执行的工具。Ansible 中的模块提供了执行不同任务的功能。常用的模块及其作用如下:

1. file

  • 作用:管理文件和目录的属性(如权限、拥有者、组等)。
  • 常用操作:创建、删除、修改文件/目录的权限和属性。
  • 示例
- name: Ensure a file exists
  ansible.builtin.file:
    path: /tmp/myfile
    state: touch

2. copy

  • 作用:将文件从控制节点复制到目标节点。
  • 常用操作:复制文件到远程主机。
  • 示例
- name: Copy a file to the remote server
  ansible.builtin.copy:
    src: /local/path/file.txt
    dest: /remote/path/file.txt

3. template

  • 作用:从本地模板文件生成目标文件,并将其复制到目标节点。
  • 常用操作:将 Jinja2 模板渲染并上传到远程服务器。
  • 示例
- name: Template a file
  ansible.builtin.template:
    src: /local/path/template.j2
    dest: /remote/path/config.conf

4. yum

  • 作用:管理 RHEL/CentOS 系统上的软件包。
  • 常用操作:安装、更新、删除软件包。
  • 示例
- name: Install a package
  ansible.builtin.yum:
    name: httpd
    state: present

5. apt

  • 作用:管理 Debian/Ubuntu 系统上的软件包。
  • 常用操作:安装、删除、更新软件包。
  • 示例
- name: Install a package
  ansible.builtin.apt:
    name: apache2
    state: present

6. service

  • 作用:管理系统服务的状态(启动、停止、重启等)。
  • 常用操作:启动、停止、重启服务。
  • 示例
- name: Ensure the apache service is running
  ansible.builtin.service:
    name: apache2
    state: started

7. command

  • 作用:执行系统命令。
  • 常用操作:运行命令行指令,适用于不需要 Shell 功能的简单命令。
  • 示例
- name: Run a command
  ansible.builtin.command:
    cmd: /bin/echo "Hello, World"

8. shell

  • 作用:执行带有 Shell 功能的命令(例如管道、重定向等)。
  • 常用操作:运行复杂的命令。
  • 示例
- name: Run a shell command
  ansible.builtin.shell:
    cmd: "echo 'Hello, World' | tee /tmp/hello.txt"

9. git

  • 作用:从 Git 仓库拉取代码。
  • 常用操作:克隆、拉取代码库,检查更新。
  • 示例
- name: Checkout a Git repository
  ansible.builtin.git:
    repo: 'https://github.com/example/repo.git'
    dest: '/path/to/destination'
    version: 'master'

10. user

  • 作用:管理系统用户。
  • 常用操作:创建、删除、修改用户。
  • 示例
- name: Ensure a user is present
  ansible.builtin.user:
    name: john
    state: present

11. group

  • 作用:管理系统组。
  • 常用操作:创建、删除、修改组。
  • 示例
- name: Ensure a group is present
  ansible.builtin.group:
    name: developers
    state: present

12. cron

  • 作用:管理 cron 任务(定时任务)。
  • 常用操作:添加、删除、修改 cron 任务。
  • 示例
- name: Ensure a cron job is present
  ansible.builtin.cron:
    name: "Backup"
    minute: "0"
    hour: "3"
    job: "/usr/bin/backup.sh"
    state: present

13. firewalld

  • 作用:管理 Firewalld 防火墙规则。
  • 常用操作:添加、删除防火墙规则。
  • 示例
- name: Ensure firewalld is running
  ansible.builtin.firewalld:
    state: started
    immediate: yes

14. wait_for

  • 作用:等待某个条件成立,例如等待端口开放、等待文件出现等。
  • 常用操作:等待端口、文件、主机等条件。
  • 示例
- name: Wait for port to open
  ansible.builtin.wait_for:
    host: localhost
    port: 8080
    state: started
    timeout: 300

15. debug

  • 作用:在执行过程中输出调试信息。
  • 常用操作:打印变量值、调试输出。
  • 示例
- name: Debug output
  ansible.builtin.debug:
    msg: "The value of my_var is {{ my_var }}"

总结

Ansible 的模块种类繁多,涵盖了系统管理、软件安装、文件操作、服务管理等多方面的功能。常用模块包括 copyyumaptfileservice 等。掌握这些模块可以帮助用户更高效地管理配置和自动化任务。