我一直在寻找一种方法,用ansible_hostname
的内容替换文件中的字符串。假设我在配置文件中有类似的东西:
kern.* /syslog/SYSLOG_SERVER/kern.log
auth.* /syslog/SYSLOG_SERVER/auth.log
Ansible中是否有一种简单的方法可以将所有出现的SYSLOG_SERVER
替换为配置文件复制到的服务器的主机名?如果有人有一个例子或链接描述如何做到这一点,如果你分享它,我将非常感激。
答案 0 :(得分:2)
您可以使用replace
module:
- replace:
dest: /path/to/configuration/file
regexp: SYSLOG_SERVER
replace: '{{ ansible_hostname }}'
backup: yes
backup
参数是可选的,但由于您将首先进行实验,因此保留它会更安全。一旦建立了正确的程序,就可以将其遗漏。
答案 1 :(得分:0)
如果目标服务器上的文件已经输出,您可以使用lineinfile模块确保内容符合您的要求。
如果文件作为playbook运行的一部分进行分发/更新,则可以使用模板模块在将destionation节点的主机名复制到destionation时动态注入它。