我需要替换特定文件中某个字符串的第一次出现。
我考虑为此使用 Ansible 的替换模块。
- hosts: abc
tasks:
- name: Replace first occurence of specific string
replace:
path: /etc/config/abc_host/application.yml
regexp: 'Unix'
replace: "Linux"
这将替换此特定 .yml 文件中所有出现的Unix
with 。Linux
但我也有一些其他主机(def_host、ghi_host 等),我只想将第一次出现的Unix
with替换为Linux
.
所以,有两个问题需要解决:
首先,使用主机名作为路径中的变量。而不是硬编码 abc_host.yml 我想要类似path: /etc/config/($host)_host/application.yml
.
其次,我只想替换特定字符串的第一次出现(而不是任何其他后续出现的字符串)。
对于主机变量,您可以使用inventory_hostname 或inventory_hostname_short,具体取决于您需要多少名称。inventory_hostname 具有全名,short 具有第一个句点的名称。
我没有在 Ansible 中尝试过,但这可能有效