You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible:为多组共用主机指定主机变量的DRY实现方法

如何用DRY原则为多组主机定义Ansible主机变量?

有没有办法遵循DRY原则,给同时属于多个组的Ansible主机指定主机变量?比如下面的示例里,bar.example.com和three.example.com分别归属两个组,它们的ansible_host被重复定义:

all:
  hosts:
    mail.example.com:
      ansible_host: 10.10.10.33
  children:
    webservers:
      hosts:
        foo.example.com:
          ansible_host: 10.10.10.17
        bar.example.com:
          ansible_host: 10.10.10.18
    dbservers:
      hosts:
        one.example.com:
          ansible_host: 10.10.10.1
        two.example.com:
          ansible_host: 10.10.10.2
        three.example.com:
          ansible_host: 10.10.10.3
    test:
      hosts:
        bar.example.com:
          ansible_host: 10.10.10.18 # 不想在这里重复定义
        three.example.com:
          ansible_host: 10.10.10.3  # 同样的重复问题

能不能让ansible_host(或是软件许可证这类主机变量)仅定义一次?在Ansible官方文档中未找到适配方案,目前可以用YAML锚点作为临时解决办法:

all:
  hosts:
    mail.example.com:
      ansible_host: 10.10.10.33
  children:
    webservers:
      hosts:
        foo.example.com:
          ansible_host: 10.10.10.17
        bar.example.com: &bar
          ansible_host: 10.10.10.18
    dbservers:
      hosts:
        one.example.com:
          ansible_host: 10.10.10.1
        two.example.com:
          ansible_host: 10.10.10.2
        three.example.com: &three
          ansible_host: 10.10.10.3
    test:
      hosts:
        bar.example.com:
          << : *bar
        three.example.com:
          << : *three

内容的提问来源于stack exchange,提问作者Vasiliy Sharapov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:20:50