在 Ansible 中,ad-hoc 模式(临时命令模式)是一种快速执行单个或简单任务的方式,无需编写复杂的 Playbook,适合临时排查问题、执行一次性操作(如批量命令、检查状态、简单配置等)。
核心特点:
临时性:用于执行简单、一次性的任务(如 “批量重启服务器”“查看所有主机磁盘使用率”)。
无需 Playbook:直接通过命令行输入指令,无需编写 YAML 格式的 Playbook 文件。
依赖模块:通过调用 Ansible 的内置模块(如ping、command、yum等)实现功能。
jsansible <目标主机/组> -m <模块名> -a <模块参数> [其他选项]
js# 测试elk1组的连通性 ansible elk1 -m ping # 测试所有主机(all是内置组,包含所有定义的主机) ansible all -m ping
js# 查看elk2组主机的 hostname
ansible elk2 -m command -a 'hostname'
# 查看elk1主机的磁盘使用率(用shell模块支持管道|)
ansible elk1 -m shell -a 'df -h | grep /'
copy 模块只能 控制机 → 远程主机 复制
js# ansible <目标主机/组> -m copy -a 'src=本地路径 dest=远程路径 [其他参数]'
ansible elk1 -m copy -a 'src=/tmp/elk.conf dest=/etc/elk/elk.conf'
远程主机 → 控制机 拉取文件
js# 拉取 elk1 主机的 /var/log/elk.log 到控制机的 /tmp/remote_logs/ 目录(自动按主机IP分目录)
ansible elk1 -m fetch -a 'src=/var/log/elk.log dest=/tmp/remote_logs/'
js# 在elk1和elk2所有主机上创建/tmp/elk目录
ansible elk1:elk2 -m file -a 'path=/tmp/elk state=directory mode=0755'
js# 在elk1组安装nginx(假设远程用户是root)
ansible elk1 -m yum -a 'name=nginx state=present'
js# 重启elk2组的sshd服务
ansible elk2 -m service -a 'name=sshd state=restarted'
本文作者:松轩(^U^)
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!