Ansible任务中拼接的LVM变量debug可显示但lvol模块不解析
问题原因
你当前的写法是将vg_command赋值为了变量名的字符串形式,而非变量解析后的实际值:
debug模块的var参数特殊设计为接收变量名称字符串,内部会自动解析对应变量取数值,所以你之前的测试步骤可以正常输出vg_00- 其余模块的普通参数不会做这种自动二次解析,因此会把你拼接的字符串直接传给
vg参数,导致报VG名称非法的错误
解决方案
直接用方括号语法访问LVM事实的动态键,一步拿到实际的VG名称值即可,不需要拼接变量名字符串:
tasks: - set_fact: LV_name: "opt" - name: 获取VG名称 set_fact: vg_name: "{{ hostvars[inventory_hostname].ansible_lvm.lvs[LV_name].vg }}" - name: 输出VG名称验证 debug: var: vg_name - name: 扩展逻辑卷和文件系统 community.general.lvol: vg: "{{ vg_name }}" lv: "{{ LV_name }}" size: +100%FREE resizefs: yes
修改后vg_name存储的就是解析完成的实际VG名称字符串,传给lvol模块就能正常识别执行。
内容的提问来源于stack exchange,提问作者Manii
相关产品推荐
相关产品推荐

