日常高频使用的 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 模块名 查参数。

相关推荐
高亦真1 小时前
今天是学习嵌入式的第35天
linux·学习·算法
翼龙云_cloud1 小时前
腾讯云国际代理商:如何用云服务器快速部署WorkBuddy AI助手?
服务器·人工智能·云计算·腾讯云
mounter6251 小时前
eBPF 驱动的云原生网络变革:Cilium 的前世今生与全机套接字迭代技术演进
linux·ebpf·linux kernel·kernel
赵庆明老师1 小时前
用同一个用户登录宝塔面板的ftp与Linux的sftp
linux·运维·服务器
oushaojun21 小时前
深入理解 Linux I2C 框架:内核子系统分层解析(转)
linux
山君爱摸鱼2 小时前
堡垒机远程服务器故障收集
运维·服务器
不会就选b2 小时前
Linux之socket编程(六)----TCP-->模拟shell命令
linux·运维·tcp/ip
比兔代理3 小时前
住宅代理IP的出口节点调度:ASN、BGP 与 IP 段信誉机制解析
linux·服务器·网络
AAA代码批发商3 小时前
DAYS 38 TCP并发服务器模型详解
linux·网络·笔记·学习