日常高频使用的 Ansible 命令,按使用频率和场景整理。

一、最常用 TOP 10(每天必用)

命令 使用频率 说明
ansible all -m ping ⭐⭐⭐⭐⭐ 测试所有主机 SSH 连通性
ansible-playbook site.yml ⭐⭐⭐⭐⭐ 执行 Playbook
ansible-playbook site.yml --check ⭐⭐⭐⭐ 模拟执行,看会改什么(不实际改动)
ansible-playbook site.yml --syntax-check ⭐⭐⭐⭐ 检查 Playbook 语法是否有误
ansible all -m shell -a "df -h" ⭐⭐⭐⭐ 在所有主机上执行系统命令(查磁盘/内存等)
ansible web -m systemctl -a "name=nginx state=restarted" ⭐⭐⭐⭐ 重启指定服务(替代手动的 systemctl)
ansible web -m copy -a "src=./app.conf dest=/etc/" ⭐⭐⭐⭐ 批量分发配置文件
ansible-playbook site.yml --limit web-01 ⭐⭐⭐⭐ 只在单台或部分主机上执行
`ansible-doc -l grep 关键词` ⭐⭐⭐
ansible-playbook site.yml -vv ⭐⭐⭐ 执行失败时查看详细错误日志

二、Ad-Hoc 临时命令(日常运维)

查系统状态:

bash 复制代码
ansible all -m shell -a "uptime"              # 查看负载
ansible all -m shell -a "free -h"             # 查看内存
ansible all -m shell -a "df -h"               # 查看磁盘
ansible all -m shell -a "ps aux | grep nginx" # 查看进程
ansible all -m shell -a "netstat -tlnp"       # 查看端口监听

文件/目录操作:

bash 复制代码
ansible all -m file -a "path=/tmp/test state=directory"     # 创建目录
ansible all -m file -a "path=/tmp/test state=absent"        # 删除文件/目录
ansible all -m file -a "path=/tmp/test owner=root mode=755" # 修改权限
ansible all -m copy -a "src=/local/hosts dest=/tmp/"        # 上传文件
ansible all -m fetch -a "src=/var/log/messages dest=/tmp/"  # 下载文件到本地

软件包管理:

bash 复制代码
ansible all -m yum -a "name=nginx state=present" # CentOS 安装
ansible all -m apt -a "name=nginx state=present" # Ubuntu 安装
ansible all -m yum -a "name=nginx state=latest"  # 升级到最新
ansible all -m yum -a "name=nginx state=absent"  # 卸载

服务管理:

bash 复制代码
ansible all -m systemctl -a "name=nginx state=started enabled=true"  # 启动并设置开机自启
ansible all -m systemctl -a "name=nginx state=stopped"               # 停止
ansible all -m systemctl -a "name=nginx state=restarted"             # 重启
ansible all -m systemctl -a "name=nginx state=reloaded"              # 重载配置

用户管理:

bash 复制代码
ansible all -m user -a "name=deploy state=present"           # 创建用户
ansible all -m user -a "name=deploy state=absent remove=yes" # 删除用户(删家目录)
ansible all -m user -a "name=deploy groups=sudo"             # 添加到组

三、Playbook 执行(日常工作流)

最常用的组合:

bash 复制代码
# 1. 先查语法
ansible-playbook site.yml --syntax-check
2. 看会影响到哪些主机
ansible-playbook site.yml --list-hosts
3. 看会执行哪些任务
ansible-playbook site.yml --list-tasks
4. 模拟运行(看差异)
ansible-playbook site.yml --check --diff
5. 正式执行(只跑一台,灰度)
ansible-playbook site.yml --limit web-01
6. 正式全量执行
ansible-playbook site.yml

常用参数搭配:

bash 复制代码
# 指定 inventory 文件
ansible-playbook site.yml -i production/hosts.yml
传递变量(覆盖默认值)
ansible-playbook site.yml -e "env=prod version=v2.1"
只执行打了某标签的任务
ansible-playbook site.yml --tags "restart"
跳过某标签
ansible-playbook site.yml --skip-tags "debug"
从某个任务开始执行(故障续跑)
ansible-playbook site.yml --start-at-task="Install packages"
增加并发数(默认 5)
ansible-playbook site.yml -f 20

四、查文档与调试(遇到问题必用)

查模块用法:

bash 复制代码
ansible-doc -l # 列出所有模块(太多了,一般加 grep)
ansible-doc -l | grep copy # 查找 copy 相关模块
ansible-doc copy # 看 copy 模块完整文档
ansible-doc -s copy # 只看 copy 模块的参数(最实用)
ansible-doc shell # 看 shell 模块文档

查看主机清单:

bash 复制代码
ansible-inventory --list # 查看当前所有主机和变量
ansible-inventory --graph # 树形结构查看组关系
ansible all --list-hosts # 列出 all 组下所有主机

收集/查看主机信息(Facts):

bash 复制代码
ansible web-01 -m setup # 收集这台主机的所有系统信息
ansible web-01 -m setup -a "filter=*ipv4*" # 只看 IP 相关信息
ansible web-01 -m setup -a "filter=ansible_os_family" # 只看操作系统系列

五、敏感信息(Vault 常用操作)

bash 复制代码
ansible-vault encrypt secrets.yml # 加密文件
ansible-vault decrypt secrets.yml # 解密文件
ansible-vault view secrets.yml # 查看加密内容(不解密到磁盘)
ansible-vault edit secrets.yml # 编辑加密文件
ansible-vault encrypt_string 'MyP@ssw0rd' --name 'db_password' # 加密单字符串

执行带加密文件的 Playbook:

bash 复制代码
ansible-playbook site.yml --ask-vault-pass
# 或从文件读密码(CI/CD 用)
ansible-playbook site.yml --vault-password-file .vault_pass

六、角色与集合(复用别人代码)

bash 复制代码
# 初始化一个自己的角色骨架
ansible-galaxy init my_role
从 Galaxy 安装别人写的角色
ansible-galaxy role install geerlingguy.nginx
安装 Collection(新标准)
ansible-galaxy collection install community.general
查看已安装的内容
ansible-galaxy role list
ansible-galaxy collection list

七、快速诊断三板斧

当 Playbook 执行失败时,按顺序执行:

  1. 看语法 :ansible-playbook site.yml --syntax-check
  2. 看连通性 :ansible 目标主机 -m ping
  3. 看详细报错 :ansible-playbook site.yml -vv(v 越多越详细,最多 -vvvv)

八、个人常用命令速记口诀

查、测、拟、限、行

------ 查语法 → 测连通 → 模拟跑 → 限制范围 → 正式执行

日常执行固定套路:

  1. 检查语法

    ansible-playbook site.yml --syntax-check

  2. 预览变更 (全量模拟)

    ansible-playbook site.yml --check --diff

  3. 实际执行第一台

    ansible-playbook site.yml --limit web-01

  4. 验证无误后,逐步扩大范围

    ansible-playbook site.yml --limit web-01,web-02

    最后全量:ansible-playbook site.yml

某个模块的具体用法记不清了,用 ansible-doc -s 模块名 查参数。

相关推荐
Starry-sky(jing)几秒前
Hermes Agent 部署后怎么升级?v0.21.7 Linux 源代码版实测
linux·人工智能·ai agent·版本升级·hermes agent
CableTech_SQH2 分钟前
行业运维新标杆:百盛3D全场景运维系统
运维·数据库·信息与通信·综合布线
水饺编程3 分钟前
第2章:Linux 基础,clear 命令
linux·c语言·汇编
程序猿老A24 分钟前
云服务器ECS怎么配置多IP?
运维·服务器·tcp/ip
Canmag 兴隆磁性42 分钟前
磁材包装产线自动化实践:自动定量装袋设备的原理、结构与选型思路
运维·自动化·永磁材料·包装
Dreamboat-L1 小时前
日志级别基础 + Spring Boot 日志实践指南
java·服务器·数据库·java-ee·springboot
IDCPDU1 小时前
PDU 采集断网就丢数据?加一层本地缓存和补传逻辑
运维
GeW1 小时前
新质生产力路线图Linux和数据库自主可控实践指南
linux
yunwei371 小时前
eBPF 教程:BPF 迭代器用于内核数据导出
linux·后端·性能优化
云飞云共享云桌面1 小时前
钣金精密机械工厂:多工程师共享图形服务器,SolidWorks/UG 三维设计兼顾成本与数据安全
运维·服务器·人工智能·自动化·制造