以幂等方法执行处理程序

问题描述 投票:0回答:1

我遇到以下问题:

- name: Mount installer iso (Debian)
  become: true
  block:
    - name: Create mnt dir
      ansible.builtin.file:
        path: "/mnt/{{ package }}"
        state: directory
        mode: "0755"
    - name: Mount iso file
      ansible.posix.mount:
        path: "/mnt/{{ package }}"
        src: "tmp/{{ package }}.iso"
        fstype: iso9660
        state: ephemeral
      register: linux_iso_mounted

此任务是我安装通过 iso 提供的软件的职责的一部分。如果挂载任务成功,但后续任务失败,则该 iso 仍会挂载,下次任务会失败。

我的第一个建议是使用

pre_tasks
post_tasks
,但据我所知,它们不适用于角色。

所以我的第二种方法是将清理任务移动为处理程序并使用

posix.mount
触发通知。这应该可以工作(直到现在还没有实现),因为处理程序任务仅在完成播放后执行(对吗?)。

这是最佳实践还是其他方法更适合这种情况?

ansible ansible-role
1个回答
0
投票

如果我正确理解您的要求,有一个更简单的方法 -

block
提供
rescue
(将在失败的情况下执行)和
always
(将在任何情况下执行)块 - 你可以在那里运行您的清理任务。

此外,据我所知,

ansible.posix.mount
模块应该是幂等的,所以你可能根本不需要清理任务。

© www.soinside.com 2019 - 2024. All rights reserved.