【问题标题】:How can I escape a colon in an Ansible host name?如何在 Ansible 主机名中转义冒号?
【发布时间】:2021-11-08 18:13:18
【问题描述】:

冒号:ansible playbook hosts value 中的一个特殊字符,表示主机名匹配模式列表中的分隔符。我想要一个名称中带有: 的主机。有没有办法将hosts 字段中的: 转义,以便将其解释为一个名称?

在我的剧本 yaml 文件中:

- name: Do stuff
  hosts: "my:host"
...

这将被解释为 2 个名为 myhost 的主机,但我希望它被解释为一个名为 my:host 的主机。

【问题讨论】:

  • 即使这可能会导致无效的主机名。请查看valid characters of a hostname。如果你喜欢这样类似的模式,你可以将它命名为my.host.localmy.router.local等。
  • 如果确实需要特殊字符 URL,您可以查看 Ansible 问题 #11572.encode('punycode').decode('punycode')

标签: ansible


【解决方案1】:

为了适应包含 IPv6 地址的模式,Ansible 允许 , 作为备用分隔符:

- name: Do stuff
  hosts: my:host,

但是,如果您只使用有效的主机名而不是试图找出解决无效主机名的方法,您的生活会更轻松。

【讨论】:

  • 这行得通,谢谢!我同意这个命名约定很奇怪。这只是我组织中实例的旧命名约定。在这种情况下,我使用 add_host 动态添加主机,并为其指定一个与 Ansible 通过 SSH 实际连接的地址不同的名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 2011-01-04
  • 2013-01-30
  • 1970-01-01
相关资源
最近更新 更多