【问题标题】:How to update new hostname in a file using ansible?如何使用ansible更新文件中的新主机名?
【发布时间】:2020-01-14 16:28:46
【问题描述】:

我正在使用以下代码将旧主机名替换为新主机名,除了以数字开头的主机名外,它都可以正常工作。(OLD_HOSTNAME 和 NEW_HOSTNAME 是 vars

  tasks:
  - name: "Updating file"
    replace:
      name: /tmp/interfaces
      backup: yes
      regexp: '(\s+){{ OLD_HOSTNAME }}(\s+)'
      replace: '\1{{ NEW_HOSTNAME }}\2'

如果我将 \1 替换为 \g,那么以数字开头的主机名也会被放置。但根据 ansible doc\1 is used ambiguously\g<1> used explicitly

问题:此更改是否会影响任何其他格式的主机名?

【问题讨论】:

  • 我不太明白你在问什么......或者你可能不明白 \1,\2 (或 \g<1>\g<2> 分别)做什么?一些示例数据怎么样?
  • 是的,我对所有这些都是新手,我知道这些是反向引用,但不太了解其中的区别。

标签: regex linux ansible hostname


【解决方案1】:

不,使用显式形式不会影响其他主机名格式。

NEW_HOSTNAME 以数字开头时出现问题的原因是,如果 NEW_HOSTNAME23-server 并且没有反向引用 \123,则 replace 字符串会变成 \123-server\2。使用显式形式可以保留您的原始意图。在我的示例中,replace 将变为 \g<1>23-server\g<2>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 2021-10-20
    • 2019-09-06
    • 1970-01-01
    相关资源
    最近更新 更多