Ansible 常用模块

Ansible 常用模块简述

Ansible 模块是执行具体任务的工具,常用模块按功能分为以下几类:


一、文件操作类

模块 功能 常用参数 示例
copy 复制文件到远程主机 src, dest, mode, owner copy src=/local/file dest=/remote/file mode=0644
file 管理文件属性 path, state, mode, owner file path=/tmp/dir state=directory mode=0755
lineinfile 管理文件中的行 path, line, regexp, state lineinfile path=/etc/hosts line="127.0.0.1 localhost"
blockinfile 管理多行文本块 path, block, marker blockinfile path=/etc/profile block="export JAVA_HOME=/usr/java"
fetch 从远程拉取文件 src, dest fetch src=/remote/file dest=/local/
stat 获取文件状态 path stat path=/etc/passwd

二、系统管理类

模块 功能 常用参数 示例
user 管理用户 name, state, groups, shell user name=john state=present groups=wheel
group 管理用户组 name, state, gid group name=developers state=present
systemd 管理 systemd 服务 name, state, enabled systemd name=nginx state=started enabled=yes
service 管理 SysVinit 服务 name, state, enabled service name=httpd state=restarted
cron 管理定时任务 name, minute, job, state cron name="backup" minute=0 hour=2 job="/backup.sh"
reboot 重启系统 reboot_timeout, pre_reboot_delay reboot reboot_timeout=300
shutdown 关机 minutes, delay shutdown minutes=5

三、软件包管理类

模块 功能 适用系统 示例
yum yum 包管理 RedHat/CentOS yum name=nginx state=present
dnf dnf 包管理 RedHat 8+ dnf name=python3 state=latest
apt apt 包管理 Ubuntu/Debian apt name=nginx state=present update_cache=yes
pip Python 包管理 通用 pip name=requests version=2.28 state=present
npm Node.js 包管理 通用 npm name=express state=present global=yes

四、命令执行类

模块 功能 适用场景 示例
command 执行命令(默认) 简单命令,无管道/重定向 command cat /etc/passwd
shell 执行 shell 命令 需要管道、重定向、变量 `shell "ps aux
raw 执行原始命令 无 Python 环境时 raw "yum install -y python"
script 执行本地脚本 脚本分发执行 script /local/script.sh

五、网络与防火墙类

模块 功能 常用参数 示例
firewalld 管理 firewalld service, port, permanent, state firewalld service=http permanent=yes state=enabled
iptables 管理 iptables 规则 chain, source, jump, protocol iptables chain=INPUT source=1.1.1.1 jump=ACCEPT
uri 发送 HTTP 请求 url, method, body, status_code uri url=http://localhost/health method=GET
get_url 下载文件 url, dest, checksum get_url url=http://example.com/file dest=/tmp/

六、数据库类

模块 功能 示例
mysql_db MySQL 数据库管理 mysql_db name=mydb state=present
mysql_user MySQL 用户管理 mysql_user name=app password=pass priv=*.*:ALL
postgresql_db PostgreSQL 数据库管理 postgresql_db name=mydb state=present

七、常用模块速查表

任务场景 推荐模块 示例
安装 Nginx yum/dnf/apt yum name=nginx state=present
启动 Nginx systemd/service systemd name=nginx state=started
复制配置文件 copy/template copy src=nginx.conf dest=/etc/nginx/
创建用户 user user name=appuser groups=nginx
创建目录 file file path=/data state=directory
下载文件 get_url get_url url=https://... dest=/tmp/
执行脚本 script script /local/install.sh
重启服务器 reboot reboot reboot_timeout=300

八、模块使用示例

yaml 复制代码
# Playbook 综合示例
- hosts: webservers
  tasks:
    # 1. 安装 Nginx
    - name: Install nginx
      yum:
        name: nginx
        state: present

    # 2. 复制配置文件
    - name: Copy nginx config
      copy:
        src: /local/nginx.conf
        dest: /etc/nginx/nginx.conf
        mode: '0644'
      notify: restart nginx

    # 3. 创建应用目录
    - name: Create app directory
      file:
        path: /var/www/myapp
        state: directory
        owner: nginx
        mode: '0755'

    # 4. 启动服务
    - name: Start nginx
      systemd:
        name: nginx
        state: started
        enabled: yes

  handlers:
    - name: restart nginx
      systemd:
        name: nginx
        state: restarted

九、常用命令

bash 复制代码
# 查看模块文档
ansible-doc copy          # 查看 copy 模块详细文档
ansible-doc -l | grep yum # 列出 yum 相关模块

# 临时执行(ad-hoc)
ansible all -m ping                                    # 连通性测试
ansible all -m copy -a "src=/local/file dest=/remote/" # 复制文件
ansible all -m yum -a "name=nginx state=present"       # 安装软件
ansible all -m shell -a "df -h"                        # 执行命令

一句话总结

Ansible 常用模块覆盖**文件(copy/file/lineinfile)、系统(user/systemd)、软件包(yum/apt)、命令(shell/command)、网络(firewalld/uri)**五大类,通过模块化实现配置管理自动化。

相关推荐
SilentSamsara9 小时前
TCP 三次握手:连接建立失败的那些坑
运维·服务器·网络·网络协议·tcp/ip
2301_813599559 小时前
HTML图片怎么用UnoCSS对齐_UnoCSS原子化CSS图片对齐实战
jvm·数据库·python
m0_377618239 小时前
c++怎么在不加载整个大文件的情况下获取其SHA256校验值【进阶】
jvm·数据库·python
LN花开富贵9 小时前
【ROS】鱼香ROS2学习笔记二
linux·笔记·python·学习·嵌入式
qq_1898070310 小时前
CSS如何实现纯CSS树状目录结构_利用-checked与递归思维构建交互节点
jvm·数据库·python
Micr06710 小时前
利用Werkzeug-Debug实现本地权限提升
python·web安全·网络安全
yanghuashuiyue10 小时前
langchain AI应用框架研究【开发部署-篇四】
python·langchain
无敌昊哥战神10 小时前
【保姆级题解】力扣17. 电话号码的字母组合 (回溯算法经典入门) | Python/C/C++多语言详解
c语言·c++·python·算法·leetcode
2301_7775993710 小时前
Go语言如何做HTTP连接池_Go语言HTTP连接池教程【最新】
jvm·数据库·python
坐吃山猪10 小时前
Python27_协程游戏理解
开发语言·python·游戏