介绍
Ad Hoc 就是临时单行命令,不需要写 playbook,直接在命令行对批量主机执行任务,适合简单、一次性操作(查看状态、拷贝文件、启停服务、执行shell等)。
基础语法
ansible all/主机组/主机 -m 模块名 -a "模块参数" [其他选项]
解释:
主机组/主机:inventory 里的组名、单个IP、多个IP逗号分隔,all代表所有主机-m:指定模块,默认模块是command(执行命令,不支持管道、重定向)-a:模块的参数,要执行的内容- 常用额外参数:
-i:指定 inventory 文件(不使用默认/etc/ansible/hosts)-u:指定ssh登录用户-k:交互式输入ssh密码(不推荐,生产用密钥)-K:交互式输入sudo密码(提权)-b:开启sudo提权(become,相当于sudo)-B N:后台异步执行,超时N秒-P N:异步任务轮询间隔-f:并发线程数,默认5-o:单行精简输出--limit:限定只对部分主机执行
Ad Hoc 和 Playbook 的区别
| Ad Hoc | Playbook |
|---|---|
| 单行命令,临时一次性任务 | yaml剧本,可复用、复杂编排 |
| 无变量/循环/条件判断(很难写) | 支持变量、when、loop、handler |
| 适合:查看、简单拷贝、启停服务 | 适合:部署、配置管理、多步骤流程 |