Ansible 用主机名替换字符串

Ansible 用主机名替换字符串,ansible,Ansible,我一直在上下搜索一种方法,用ansible\u hostname的内容替换文件中的字符串。假设我在配置文件中有类似的内容: kern.* /syslog/SYSLOG_SERVER/kern.log auth.* /syslog/SYSLOG_SERVER/auth.log Ansible中是否有一种简单的方法可以将所有出现的SYSLOG\u SERVER替换为配置文件复制到的服务器的主机名?如果有人有一个例子或一个链接来描述如何做到这一点,我将非常感谢你分享它。你可

我一直在上下搜索一种方法,用
ansible\u hostname
的内容替换文件中的字符串。假设我在配置文件中有类似的内容:

kern.*       /syslog/SYSLOG_SERVER/kern.log 
auth.*       /syslog/SYSLOG_SERVER/auth.log
Ansible中是否有一种简单的方法可以将所有出现的
SYSLOG\u SERVER
替换为配置文件复制到的服务器的主机名?如果有人有一个例子或一个链接来描述如何做到这一点,我将非常感谢你分享它。

你可以使用:

backup
参数是可选的,但由于您将首先进行实验,所以离开它更安全。一旦建立了正确的程序,您可以将其删除。

您可以使用:


backup
参数是可选的,但由于您将首先进行实验,所以离开它更安全。一旦建立了正确的过程,您可以将其删除。

如果文件已在目标服务器上,您可以使用lineinfile模块确保内容符合您的要求


如果文件是作为playbook运行的一部分分发/更新的,则可以使用模板模块在目标节点复制到目标节点时动态注入目标节点的主机名。

如果文件已在目标服务器上,则可以使用lineinfle模块确保内容符合您的要求


如果文件是作为playbook运行的一部分分发/更新的,则可以使用模板模块在将目标节点复制到目标节点时动态注入目标节点的主机名。

请注意“如果有人有一个示例或一个链接描述如何执行此操作,如果您共享它,我将不胜感激。”--此类问题在StackOverflow上完全脱离主题,请关闭。注意措辞“如果有人有一个例子或一个链接描述如何做到这一点,我将非常感谢您的分享。”--此类问题在StackOverflow上完全脱离主题,请关闭。谢谢techraf。我不得不选择s/path/dest/你的例子,但除了你的建议外,其他的都很有魅力!这是最后一个工作剧本:-name:Replace SYSLOG_SERVER with SERVER name Replace:dest:/etc/rsyslog.conf regexp:SYSLOG_SERVER Replace:{{ansible_hostname}}备份:是的,抱歉,这是新语法,更新了答案。自Ansible 2.3(当前的
devel
版本)以来,
路径
已成为首选参数名,而
dest
destfile
名称
其别名。我刚读到关于path替换dest*。谢谢你的额外反馈!你太棒了!谢谢techraf。我不得不选择s/path/dest/你的例子,但除了你的建议外,其他的都很有魅力!这是最后一个工作剧本:-name:Replace SYSLOG_SERVER with SERVER name Replace:dest:/etc/rsyslog.conf regexp:SYSLOG_SERVER Replace:{{ansible_hostname}}备份:是的,抱歉,这是新语法,更新了答案。自Ansible 2.3(当前的
devel
版本)以来,
路径
已成为首选参数名,而
dest
destfile
名称
其别名。我刚读到关于path替换dest*。谢谢你的额外反馈!你太棒了!
- replace:
    dest: /path/to/configuration/file
    regexp: SYSLOG_SERVER
    replace: '{{ ansible_hostname }}'
    backup: yes