使用Ansible将主机名附加到Windows远程服务器上文件的所有行中

时间:2019-07-09 11:55:24

标签: windows replace ansible

我有一个csv文件,如下所示。文件中的行数可能会有所不同。

admin_server, id:1, /tmp
admin_group, id:3, /home
user_group, id:5, /root

我需要将主机名附加到文件中的每一行。即我需要添加第1列,该列将具有主机名。

第一台服务器:

server1,admin_server, id:1, /tmp
server1,admin_group, id:3, /home
server1,user_group, id:5, /root

第二台服务器。

server2,admin_server, id:1, /tmp
server2,admin_group, id:3, /home
server2,user_group, id:5, /root

在Linux中,使用了replace模块,它运行良好。但是在Windows中,替换模块无法正常工作。请告知。

我尝试过的如下。它不起作用,它只是在文件末尾附加了主机名。

- name: Test
    win_lineinfile:
     path: /tmp/testing.log
     line: '"{{ansible_hostname}}"\1'
     regexp: '^(.*)$'

1 个答案:

答案 0 :(得分:0)

尝试以下操作,因为win_lineinfile模块仅替换最后一个匹配项。

win_template模块

- name: Create a file from a Jinja2 template
  win_template:
    src: file.conf.j2
    dest: C:\Temp\file.conf

更改您的file.conf.j2

{{ansible_hostname}},admin_server, id:1, /tmp
{{ansible_hostname}},admin_group, id:3, /home
{{ansible_hostname}},user_group, id:5, /root

如果ansible_hostname不起作用,请在剧本中设置变量并尝试。