Ansible中rescue段未执行排查:为何未创建800MiB逻辑卷
问题分析与解决
你的rescue段未执行的核心原因是:Ansible的rescue仅在对应block内有任务执行失败时才会触发,而你当前block里的两个任务都只是被跳过,并未产生失败。
具体细节:
- 第一个debug任务:
when: ansible_lvm.vgs.research is not defined,但你的节点已定义该卷组,条件不满足,任务直接跳过,无失败。 - 第二个lvol任务:
when: ansible_lvm.vgs.research is defined and ansible_lvm.vgs.research.size_g > '1500 MiB',你的节点空间低于1500MiB,条件不满足,任务同样跳过,无失败。
整个block没有任务抛出失败,rescue自然不会启动。
修正方案
你不需要依赖block/rescue实现这个逻辑,直接用条件分支处理两种空间情况即可,这种方式更清晰直观:
--- - name: Criar lvm no sistema hosts: all become: true tasks: - name: Verificar se existe o volume group RESEARCH ansible.builtin.debug: msg: "O grupo de volume RESEARCH não existe" when: ansible_lvm.vgs.research is not defined - name: Criar logical volume de 1500 MiB (空间充足时) community.general.lvol: vg: research lv: data size: 1500m when: ansible_lvm.vgs.research is defined and ansible_lvm.vgs.research.size_g > '1500 MiB' - name: Criar logical volume de 800 MiB (空间不足时) community.general.lvol: vg: research lv: data size: 800m when: ansible_lvm.vgs.research is defined and ansible_lvm.vgs.research.size_g < '1500 MiB'
如果非要用block/rescue的话,需要让block内的lvol任务在空间不足时强制执行并失败,触发rescue:
--- - name: Criar lvm no sistema hosts: all become: true tasks: - name: Verificar e criar lvm no volume group RESEARCH block: - name: Se o grupo de volume não existir, uma mensagem de alerta será dada ansible.builtin.debug: msg: "O grupo de volume RESEARCH não existe" when: ansible_lvm.vgs.research is not defined - name: Tentar criar logical volume de 1500 MiB community.general.lvol: vg: research lv: data size: 1500m when: ansible_lvm.vgs.research is defined rescue: - name: Criar logical volume de 800 MiB (空间不足时触发) community.general.lvol: vg: research lv: data size: 800m when: ansible_lvm.vgs.research is defined
注:第二种方式依赖lvol模块在空间不足时返回失败状态,这符合模块的预期行为——当无法满足指定大小的创建请求时,模块会抛出失败。
内容的提问来源于stack exchange,提问作者Felipe
相关产品推荐
相关产品推荐

