Ansible "skipping" 库存中的最后一台主机

Ansible "skipping" last host from inventory

我有一个简单的主机清单:

server1.com
server2.com
server3.com
server4.com

我 运行 在此清单上执行一些任务,最后,在所有主机之间的共享文件夹上创建文件并插入带有 lineinfile 的行:

  - name: "END - Insert infos in /sharefolder/{{ inventory_hostname|upper }}"
    lineinfile:
      path: "/sharefolder/{{ inventory_hostname|upper }}"
      state: present
      create: yes
      regexp: "^{{ inventory_hostname }}"
      line: "{{ inventory_hostname|upper }};This is my line"
      owner: owner
      group: group
      mode: '0644'

当我运行剧本时一切都很好:

PLAY RECAP **************************************************************************************************************************
server1.com  : ok=14   changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
server2.com  : ok=14   changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
server3.com  : ok=14   changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
server4.com  : ok=14   changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

但是当我查看我的共享文件夹时,我没有来自上一个主机的文件:

$ ls -l /sharefolder/
-rw-r--r-- 1 owner group 123 Apr  3 11:48 SERVER1.COM
-rw-r--r-- 1 owner group 105 Apr  3 11:48 SERVER2.COM
-rw-r--r-- 1 owner group 123 Apr  3 11:48 SERVER3.COM

我测试了几台主机,在主机清单末尾添加了空行,并在启动 playbook 时使用了选项 --forks=1,但问题仍然存在。选项 -vvv returns 一切正常,文件已创建并为最后的主机添加了行,但事实并非如此。

为什么文件大小不同?如果您创建文件并在每个文件中写入相同的文件,则它们应该具有相同的大小。也许你在不同的主机上查看相同的目录?

如果你 运行 你的 playbook 在 4 台主机上,那么在每台主机上都会用一行创建一个文件。如果不想在远程系统上执行任务,则必须使用 .