我遇到以下问题:
- 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
触发通知。这应该可以工作(直到现在还没有实现),因为处理程序任务仅在完成播放后执行(对吗?)。
这是最佳实践还是其他方法更适合这种情况?
如果我正确理解您的要求,有一个更简单的方法 -
block
提供 rescue
(将在失败的情况下执行)和 always
(将在任何情况下执行)块 - 你可以在那里运行您的清理任务。
ansible.posix.mount
模块应该是幂等的,所以你可能根本不需要清理任务。