Ansible变量优先级问题:server1为何未使用inventory定义的端口?
Ansible变量配置问题排查
问题根源很明确:你的playbook是针对localhost执行任务,而localhost默认不在你inventory定义的group1或group2分组里,所以只会加载all.yml中定义的port: 9001,完全没用到inventory里group1的变量配置。
你预期server1和server5使用不同端口,但实际playbook根本没在这两台目标主机上运行,而是在本地localhost执行,自然不会读取对应主机所属分组的变量。
解决方法
修改playbook的hosts字段,指定要执行的目标主机为server1,server5或者group1:group2,让任务在这两台机器上运行:
- name: 验证端口变量 hosts: server1,server5 tasks: - name: 打印当前端口值 debug: msg: "当前主机使用端口: {{ port }}"
这样执行后:
- server1属于group1,会优先使用group1中定义的
port: 9002 - server5属于group2,没有自定义port变量,会继承
all.yml中的port: 9001
完全符合你的预期。
内容的提问来源于stack exchange,提问作者fr0zt
相关产品推荐
相关产品推荐

