编辑
2025-11-14
Ansible
00

目录

一、ad-hoc模式
ad-hoc 命令的基本格式:
测试主机连通性(ping模块)
执行 shell 命令(command或shell模块)
copy 模块的作用
fetch 模块
批量创建文件 / 目录(file模块)
安装软件(yum模块,需 root 权限)
重启服务(service模块)

一、ad-hoc模式

  • 在 Ansible 中,ad-hoc 模式(临时命令模式)是一种快速执行单个或简单任务的方式,无需编写复杂的 Playbook,适合临时排查问题、执行一次性操作(如批量命令、检查状态、简单配置等)。

  • 核心特点:

  • 临时性:用于执行简单、一次性的任务(如 “批量重启服务器”“查看所有主机磁盘使用率”)。

  • 无需 Playbook:直接通过命令行输入指令,无需编写 YAML 格式的 Playbook 文件。

  • 依赖模块:通过调用 Ansible 的内置模块(如ping、command、yum等)实现功能。

ad-hoc 命令的基本格式:

js
ansible <目标主机/组> -m <模块名> -a <模块参数> [其他选项]

测试主机连通性(ping模块)

js
# 测试elk1组的连通性 ansible elk1 -m ping # 测试所有主机(all是内置组,包含所有定义的主机) ansible all -m ping

执行 shell 命令(command或shell模块)

js
# 查看elk2组主机的 hostname ansible elk2 -m command -a 'hostname' # 查看elk1主机的磁盘使用率(用shell模块支持管道|) ansible elk1 -m shell -a 'df -h | grep /'

copy 模块的作用

copy 模块只能 控制机 → 远程主机 复制

js
# ansible <目标主机/组> -m copy -a 'src=本地路径 dest=远程路径 [其他参数]' ansible elk1 -m copy -a 'src=/tmp/elk.conf dest=/etc/elk/elk.conf'

fetch 模块

远程主机 → 控制机 拉取文件

js
# 拉取 elk1 主机的 /var/log/elk.log 到控制机的 /tmp/remote_logs/ 目录(自动按主机IP分目录) ansible elk1 -m fetch -a 'src=/var/log/elk.log dest=/tmp/remote_logs/'

批量创建文件 / 目录(file模块)

js
# 在elk1和elk2所有主机上创建/tmp/elk目录 ansible elk1:elk2 -m file -a 'path=/tmp/elk state=directory mode=0755'

安装软件(yum模块,需 root 权限)

js
# 在elk1组安装nginx(假设远程用户是root) ansible elk1 -m yum -a 'name=nginx state=present'

重启服务(service模块)

js
# 重启elk2组的sshd服务 ansible elk2 -m service -a 'name=sshd state=restarted'

本文作者:松轩(^U^)

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Document