Skip to content

参考

基于 Ansible(ansible-core 2.21 · 社区包 13.x)· 核于 2026-07。模块以 FQCN 计,权威索引见 模块列表

CLI 命令速查

命令作用常用示例
ansible跑 ad-hoc 单命令ansible all -m ping
ansible-playbook运行 playbookansible-playbook -i inv.ini site.yml
ansible-inventory查看/校验 inventoryansible-inventory --list -i inv.ini
ansible-galaxy装/建 role 与 collectionansible-galaxy collection install community.general
ansible-vault加解密敏感数据ansible-vault edit secrets.yml
ansible-config查看/dump 配置ansible-config dump --only-changed
ansible-doc查模块文档ansible-doc ansible.builtin.copy
ansible-pullpull 模式(节点自拉 git 本地跑)ansible-pull -U https://git/repo.git
ansible-navigator在 EE 容器里跑 playbook(TUI/CLI)ansible-navigator run site.yml

ansible-playbook 常用参数

参数说明
-i <inventory>指定清单文件/目录
-l / --limit <pattern>只作用于匹配的主机子集
--checkcheck mode(演练,不改动)
--diff显示(将)变更的内容
--tags / --skip-tags只跑 / 跳过指定标签
-e / --extra-vars注入变量(优先级最高),如 -e "env=prod"
-f / --forks <n>并发数(默认 5)
--ask-vault-pass / --vault-password-file提供 Vault 密码
-b / --become提权(sudo)
--list-tasks / --list-hosts只列任务 / 主机,不执行
--syntax-check只做语法检查
--start-at-task <name>从指定 task 开始跑
-v / -vvv提高日志详细度(最多 -vvvv

常用模块速查(FQCN)

模块用途幂等要点
ansible.builtin.ping探活(非 ICMP,是连通+Python 检查)
ansible.builtin.command跑命令(不经 shell)默认每次 changed,用 creates/changed_when 收敛
ansible.builtin.shell跑 shell(支持管道重定向)同上;优先用专用模块
ansible.builtin.copy拷贝文件到目标机内容一致则 ok
ansible.builtin.template渲染 Jinja2 .j2 再下发渲染结果一致则 ok
ansible.builtin.file管文件/目录/软链、权限属主声明 state 幂等
ansible.builtin.lineinfile / blockinfile改文件某行/某块幂等(按正则/标记匹配)
ansible.builtin.service / systemd_service起停服务、开机自启声明 state/enabled
ansible.builtin.dnf / apt / package装包(package 跨发行版)state: present/latest/absent
ansible.builtin.user / group管用户/组声明 state
ansible.builtin.get_url / unarchive下载 / 解压unarchive 支持 creates
ansible.builtin.setup采集 facts只读
ansible.builtin.debug打印变量/消息只读
ansible.builtin.set_fact运行期设变量
ansible.posix.firewalld / community.general.*防火墙 / 各类扩展需装对应 collection

Playbook 关键字速查

关键字层级说明
hostsplay作用主机/组/pattern
become / become_userplay/task提权及目标用户
gather_factsplaytrue/false 是否自动采 facts
vars / vars_files / vars_promptplay定义变量
rolesplay引入 role(静态)
pre_tasks / tasks / post_tasksplay任务阶段(handler 在其后统一跑)
handlersplay声明 handler
serial / strategy / max_fail_percentageplay滚动批次 / 执行策略 / 熔断
whentask/block条件(裸表达式,无花括号
loop / loop_control / untiltask循环 / 循环控制 / 重试
registertask捕获输出为变量
notifytask触发 handler
changed_when / failed_whentask自定义 changed/failed 判定
check_mode / no_logtask强制演练/真跑 / 屏蔽敏感输出
ignore_errorstask失败不中断
tagsplay/task打标签供 --tags 选择
delegate_to / run_oncetask委派到别的主机 / 只跑一次
block / rescue / alwaystry/catch/finally

Inventory 与连接变量

INIYAML
[webservers]webservers:hosts:
组变量[web:vars]web:vars:
嵌套组[prod:children]children:
主机范围www[01:50].ex.com
连接变量含义
ansible_host真实 IP / 域名
ansible_user登录用户
ansible_connection连接类型(ssh/winrm/local/docker
ansible_port端口(SSH 默认 22)
ansible_ssh_private_key_file私钥路径
ansible_python_interpreter目标机 Python 路径
ansible_become / ansible_become_pass提权及密码

变量优先级(低 → 高,记两头)

role defaults(最低)< inventory/playbook 的 group_vars < host_vars < facts/set_fact < play vars/vars_files < role vars < block vars < task vars < include_vars < registered/set_facts < role params < extra vars -e(永远最高)

facts 与模板速查

写法
访问 fact{{ ansible_facts['os_family'] }}
顶层别名ansible_os_familyINJECT_FACTS_AS_VARS 可关)
自定义 local fact节点 /etc/ansible/facts.d/*.fact{{ ansible_local['x'] }}
循环取值{{ item }} / {{ item.key }} / {{ item.value }}
兜底 filter{{ v | default('x') }}
必填 filter{{ v | mandatory }}
字典转列表{{ m | dict2items }}
状态 testwhen: r is changed / is failed / is succeeded / is skipped

ansible-vault 子命令

子命令作用
create <f>新建加密文件
edit <f>解密进编辑器、存回再加密
view <f>只读查看
encrypt <f> / decrypt <f>加密已有 / 永久解密
rekey <f>更换密码
encrypt_string 'val' --name 'k'加密单个变量值嵌入 YAML

常见坑速查

说明与对策
command/shell 永远 changed它们不幂等;用 creates/removeschanged_when: false 收敛;能用专用模块就别用 shell
when 里加了花括号when 是裸表达式,写 when: x == 1不要 when: {{ x == 1 }}
值以 {{ }} 开头没加引号YAML 会当成字典报错;整串加引号 "{{ x }}/y"
忘了 FQCN 撞名2.10 后建议总写 namespace.collection.module,短名可能歧义
serial 缺失导致全站瞬断发布服务务必配 serial 分批滚动 + max_fail_percentage 熔断
以为删 task 会回收资源Ansible 无 state,删任务不卸载;要移除得显式 state: absent
facts 拖慢大批量不用 facts 时 gather_facts: false
明文密钥进 Git用 Vault;no_log: true 防敏感 task 输出泄露
控制节点用 Windows不支持;控制节点须类 Unix(Linux/macOS/WSL),Windows 只能当被管节点

版本与生态速记

事实(2026-07)
出品方Red Hat(2015 年收购 Ansible)
ansible-core 在维护版本2.21(GA 2026-05)/ 2.20 / 2.19
社区发行包Ansible community package 13.x(基于 ansible-core 2.20)
发布节奏ansible-core 每半年大版本(5 月/11 月),小版本每 4 周
控制节点 Python3.12–3.14(2.21/2.20)
被管节点 Python3.9–3.14(2.21)
collection 分拆2.10ansible-core 与内容 collection 分离
企业版Ansible Automation Platform(AAP);controller(原 Tower)源自上游 AWX

权威链接