在ansible中,最有效的方式删除多个文件

6

我想要删除几个文件,目前我是这么做的:

- file: path=/etc/yum.repos.d/rhel6-6-hci-frozen.repo state=absent
  name: Ensure absence of old freeze files
- file: path=/etc/yum.repos.d/in-mrepo-rhel6.repo state=absent
  name: Ensure absence of old files

...

许多其他行

这个问题在于ansible似乎会逐一执行这些任务,而不是将它们合并成一个任务:

TASK [Ensure absence of old freeze files] **************************************
changed: [server]

TASK [Ensure absence of old files] *********************************************
ok: [server]

TASK [Ensure absence of actual files] ******************************************
ok: [server]

TASK [Ensure absence of old rhel6 freeze files] ********************************
ok: [server]

TASK [Ensure absence of epel stuff] ********************************************
ok: [server]

TASK [Ensure absence of epel testing] ******************************************
ok: [server]

这需要很多时间。有没有一种方法可以将其作为一个任务执行?我知道我可能只需执行shell脚本,但我希望使用ansible正确地完成这个任务。
2个回答

17

您可以使用with_items关键字,如下:

- name: Ensure absence of old freeze files
  file:
    path: '{{ item }}'
    state: absent
  with_items:
    - /etc/yum.repos.d/rhel6-6-hci-frozen.repo
    - /etc/yum.repos.d/in-mrepo-rhel6.repo

1
它执行相同的操作,只是按顺序而不是批处理运行删除;如果您正在使用win_file,则效率并没有更高。 - burgen

-2

我尝试过这个,它适用于ansible 1.9.2:

- name: Ensure absence of old freeze files
  file:
    path: /etc/yum.repos.d/*rhel6*.repo
    state: absent

当然,确保您不会删除太多仓库文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接