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 的模块种类繁多,涵盖了系统管理、软件安装、文件操作、服务管理等多方面的功能。常用模块包括 copy
、yum
、apt
、file
、service
等。掌握这些模块可以帮助用户更高效地管理配置和自动化任务。