Ansible 命令速查
Ansible 常用命令速查,覆盖 Ad-hoc、Playbook、模块、Vault 与排障
⚡ Ad-hoc 临时命令
ansible <主机组> -m ping -i <清单文件>连通性测试,验证 SSH 与 Python 环境是否就绪
ansible webservers -m ping -i hosts.iniansible <主机组> -a "<命令>" -i <清单文件>不指定模块时默认 command,注意不支持管道与重定向
ansible webservers -a "uptime" -i hosts.iniansible <主机组> -m shell -a "<命令>"需要管道、重定向、变量时用 shell 模块
ansible webservers -m shell -a "ps aux | grep nginx | head -5"ansible <主机组> -m ping -u <用户> --become -K以指定用户登录并提权,执行前提示输入 sudo 密码
ansible all -m ping -u deploy -b -Kansible <主机组> -m copy -a "src=<本地> dest=<远程>"临时分发单个文件到目标主机
ansible webservers -m copy -a "src=./nginx.conf dest=/etc/nginx/"ansible <主机组> -m reboot批量重启主机并等待恢复
ansible webservers -m rebootansible <主机组> -f 20 -m ping把并发数从默认 5 提到 20,批量执行更快
ansible all -m ping -f 20ansible <主机组> -m setup收集并输出目标主机的全部 Facts 信息
ansible webservers -m setup📋 主机清单
ansible-inventory -i <清单文件> --list以 JSON 输出解析后的清单,检查变量是否生效
ansible-inventory -i hosts.ini --listansible-inventory -i <清单文件> --graph树状展示分组与主机层级关系
ansible-inventory -i hosts.ini --graphansible-inventory -i <清单文件> --host <主机名>查看单台主机最终生效的变量(含继承的)
ansible-inventory -i hosts.ini --host web01ansible <主机组> --list-hosts -i <清单文件>列出该组匹配到的主机,验证通配与分组是否正确
ansible "web*01:!db" --list-hosts -i hosts.iniansible --version查看版本与配置文件搜索路径
ansible --version📖 Playbook 执行
ansible-playbook <文件>执行 Playbook
ansible-playbook site.yml -i hosts.iniansible-playbook <文件> --syntax-check只做 YAML 语法体检,不连接主机
ansible-playbook site.yml --syntax-checkansible-playbook <文件> --check --diff演练模式,输出将要发生的变更但不真正执行
ansible-playbook site.yml --check --diffansible-playbook <文件> --limit <主机>只对该主机或组执行,配合新上线机器很常用
ansible-playbook site.yml --limit web01ansible-playbook <文件> --tags <标签>只跑打了指定标签的任务
ansible-playbook site.yml --tags nginxansible-playbook <文件> --skip-tags <标签>跳过指定标签的任务
ansible-playbook site.yml --skip-tags rebootansible-playbook <文件> --start-at-task "<任务名>"从某个任务开始执行,重跑中断的 Playbook 很省时间
ansible-playbook site.yml --start-at-task "安装 nginx"ansible-playbook <文件> -v|-vv|-vvv|-vvvv逐级提升输出详细程度,-vvvv 可看到 SSH 连接细节
ansible-playbook site.yml -vvvansible-playbook <文件> -e "<键>=<值>"从命令行传变量,优先级最高
ansible-playbook site.yml -e "env=prod version=1.2.0"ansible-playbook <文件> --step逐任务确认后再执行,谨慎操作时用
ansible-playbook site.yml --stepansible-playbook <文件> --ask-vault-pass运行时提示输入 Vault 密码,解密加密变量
ansible-playbook site.yml --ask-vault-pass🧰 常用模块
ansible-doc -l列出所有可用模块,可按关键字过滤
ansible-doc -l | grep dockeransible-doc -s <模块名>查看模块参数说明与示例(SNIPPET)
ansible-doc -s ansible.builtin.copyansible.builtin.copy分发文件到目标主机,content 可直接写内容
ansible all -m ansible.builtin.copy -a "content='hello' dest=/tmp/a.txt"ansible.builtin.template渲染 Jinja2 模板后分发,适合带变量的配置文件
ansible all -m ansible.builtin.template -a "src=nginx.conf.j2 dest=/etc/nginx/nginx.conf"ansible.builtin.file创建目录、改权限、建软链接
ansible all -m ansible.builtin.file -a "path=/data state=directory mode=0755"ansible.builtin.yum / apt包管理,state 取 present/latest/absent
ansible all -m ansible.builtin.apt -a "name=nginx state=present"ansible.builtin.service管理系统服务,常用 state=restarted enabled=yes
ansible all -m ansible.builtin.service -a "name=nginx state=restarted enabled=true"ansible.builtin.lineinfile修改或插入单行配置,避免整文件覆写
ansible all -m ansible.builtin.lineinfile -a "path=/etc/hosts line='10.0.0.1 db'"ansible.builtin.command + creates幂等执行:产物已存在则跳过,重复跑不出错
ansible all -m ansible.builtin.command -a "tar -xf /tmp/a.tar creates=/opt/a"ansible.builtin.user创建用户、配密钥、加属组
ansible all -m ansible.builtin.user -a "name=deploy groups=wheel shell=/bin/bash"ansible.builtin.cron管理计划任务
ansible all -m ansible.builtin.cron -a "name='备份' minute=0 hour=3 job=/opt/bak.sh"🔤 变量与 Facts
ansible <主机组> -m setup -a "filter=<关键字>*"只查看某一类 Facts,如内存、网卡
ansible all -m setup -a "filter=ansible_mem*"ansible localhost -m debug -a "msg={{ hostvars['<主机>']['<变量>'] }}"查看某台主机的指定变量值
ansible localhost -m debug -a "msg={{ hostvars['web01']['ansible_host'] }}"ansible localhost -m debug -a "var=<变量>"打印单个变量内容并用 YAML 展开(适合查字典)
ansible localhost -m debug -a "var=groups"ansible-playbook <文件> -e @vars.yml从外部文件加载变量,@ 不能漏
ansible-playbook site.yml -e @prod.ymlgather_facts: falsePlaybook 中关掉 Facts 收集,纯下发任务时提速明显
- hosts: all
gather_facts: falseansible-playbook <文件> --flush-cache忽略 facts 缓存重新采集
ansible-playbook site.yml --flush-cache🎭 Role 与 Galaxy
ansible-galaxy role init <名称>按标准目录结构创建 Role 骨架
ansible-galaxy role init roles/nginxansible-galaxy role list查看已安装的 Role 及版本
ansible-galaxy role listansible-galaxy role install <作者>.<名称>从 Galaxy 社区安装 Role
ansible-galaxy role install geerlingguy.nginxansible-galaxy install -r requirements.yml --force按依赖清单批量安装,--force 覆盖旧版本
ansible-galaxy install -r requirements.yml --forceansible-galaxy collection install <命名空间>.<集合>安装集合,如 community.general、ansible.posix
ansible-galaxy collection install community.generalansible-galaxy collection list查看已安装集合及其路径
ansible-galaxy collection list🔐 Vault 加密
ansible-vault create <文件>新建并加密一个变量文件
ansible-vault create secrets.ymlansible-vault edit <文件>在编辑器中修改已加密文件
ansible-vault edit secrets.ymlansible-vault view <文件>查看明文内容但不落盘
ansible-vault view secrets.ymlansible-vault encrypt <文件>把明文文件就地加密,入库前先做这一步
ansible-vault encrypt group_vars/all.ymlansible-vault decrypt <文件>解密为明文,注意之后别误提交到仓库
ansible-vault decrypt secrets.ymlansible-vault encrypt_string '<密文>' --name <变量名>生成单行加密串,可直接贴进普通 vars 文件
ansible-vault encrypt_string 'S3cret' --name db_passwordansible-vault rekey <文件>更换 Vault 密码
ansible-vault rekey secrets.yml--vault-password-file <路径>用密码文件而非交互输入,便于 CI 自动化
ansible-playbook site.yml --vault-password-file ~/.vault_pass🔧 配置与调优
ansible-config dump --only-changed查看当前生效且非默认的配置,排查配置冲突首选
ansible-config dump --only-changedansible-config view打印正在使用的 ansible.cfg 内容
ansible-config viewansible-config init --disabled > ansible.cfg生成含全部默认项的参考配置(均注释状态)
ansible-config init --disabled -t all > ansible.cfgANSIBLE_HOST_KEY_CHECKING=False ansible <组> -m ping临时跳过 SSH 首次连接的指纹确认,仅建议在内网新机器用
ANSIBLE_HOST_KEY_CHECKING=False ansible all -m pingexport ANSIBLE_STDOUT_CALLBACK=yaml把输出改成 YAML 格式,多行内容更好读
export ANSIBLE_STDOUT_CALLBACK=yamlpipelining = True # ansible.cfg [ssh_connection]减少 SSH 往返次数,大批量执行时可显著提速
[ssh_connection]
pipelining = True🩺 调试与排障
ansible-playbook <文件> -vvv详细模式,能看到每个任务的返回结构
ansible-playbook site.yml -vvvansible-playbook <文件> -vvvv连接级调试,SSH 认证失败、超时时用它
ansible-playbook site.yml -vvvvansible-lint <文件>静态检查 Playbook 写法与最佳实践,建议进 CI
ansible-lint site.ymlansible <组> -m command -a "python3 --version"确认目标机 Python 解释器可用(最常见失败原因)
ansible all -m command -a "python3 --version"ansible <组> -m ping -vvvv 2>&1 | grep -i "permission\|auth"快速定位 SSH 认证类报错
ansible all -m ping -vvvv 2>&1 | grep -i permissionANSIBLE_DEBUG=1 ansible-playbook <文件>打开内部调试日志,只在疑难故障时开
ANSIBLE_DEBUG=1 ansible-playbook site.ymlANSIBLE_LOG_PATH=./ansible.log ansible-playbook <文件>把运行日志落盘便于事后分析
ANSIBLE_LOG_PATH=./ansible.log ansible-playbook site.ymlAnsible 命令速查怎么用
Ansible 与 ansible-playbook 常用命令速查,含 inventory、vault 与常用模块。
- 按场景搜索命令
- 点击复制
- 替换主机组与剧本路径
小贴士加 --check 可以先演练不真正落地,改线上前必用。
Ansible 命令速查常见问题
Ansible 命令速查是免费的吗?
完全免费,无需注册登录,也不限使用次数。997 工具箱所有工具都不收费。
使用Ansible 命令速查会把我的数据上传到服务器吗?
不会。Ansible 命令速查在浏览器本地完成计算,输入的文本和文件都不会离开你的设备,页面关闭后数据即消失。
Ansible 命令速查在手机上能用吗?
可以。页面做了移动端适配,手机和平板的浏览器打开同样能正常使用,也不需要安装任何 App。