如何使用ansible更新文件中的新主机名?

How to update new hostname in a file using ansible?

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

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

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

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

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

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