ansible 任务不解析变量

ansible task doesn't resolve variable

我正在尝试使用以下代码获取 VG_Name。我可以使用 debug:var 查看变量值,但它在实际任务和打印值中不起作用 "vg": "hostvars[inventory_hostname].ansible_lvm.lvs.varlog.vg"

 tasks:
   - set_fact:
       LV_name: "opt"
    - name: Get VG Name
      set_fact:
        vg_command: "{{ 'hostvars[inventory_hostname].ansible_lvm.lvs.'+ LV_name +'.vg' }}"

    - name: Show VG
      debug:
        var: "{{ vg_command }}"

    - name: extend logical volume and file system
      community.general.lvol:
       vg: "{{ vg_command }}"
       lv: "{{ LV_name }}"
       size: +100%FREE
       resizefs: yes

输出:

TASK [Get VG Name] *********************************************************************************************************************************************************************************
task path: /root/ansible_disk/disk_extend.yml:92
ok: [SERVER-NAME] => {
    "ansible_facts": {
        "vg_command": "hostvars[inventory_hostname].ansible_lvm.lvs.varlog.vg"
    },
    "changed": false
}

TASK [Show VG] *************************************************************************************************************************************************************************************
task path: /root/ansible_disk/disk_extend.yml:96
ok: [SERVER-NAME] => {
    "hostvars[inventory_hostname].ansible_lvm.lvs.varlog.vg": "vg_00"
}
TASK [extend logical volume and file system] *******************************************************************************************************************************************************
task path: /root/ansible_disk/disk_extend.yml:109
fatal: [SERVER-NAME]: FAILED! => {
    "changed": false,
    "err": "  Volume group name \"hostvars[inventory_hostname].ansible_lvm.lvs.varlog.vg\" has invalid characters.\n  Cannot process volume group hostvars[inventory_hostname].ansible_lvm.lvs.varlog.vg\n",
    "invocation": {
        "module_args": {
            "active": true,
            "force": false,
            "lv": "varlog",
            "opts": null,
            "pvs": null,
            "resizefs": true,
            "shrink": true,
            "size": "+100%FREE",
            "snapshot": null,
            "state": "present",
            "thinpool": null,
            "vg": "hostvars[inventory_hostname].ansible_lvm.lvs.varlog.vg"
        }
    },
    "msg": "Volume group hostvars[inventory_hostname].ansible_lvm.lvs.varlog.vg does not exist.",
    "rc": 5
}

尝试了我能想到的所有可能的方法(查找、变量等),但没有成功,任何帮助将不胜感激!

您构建的字符串不正确,将 inventory[hostname] 留在单引号内,它将被视为文字;所以:

 vg_command: "{{ 'hostvars[inventory_hostname].ansible_lvm.lvs.'+ LV_name +'.vg' }}"

应该改为:

 vg_command: "{{ hostvars[inventory_hostname].ansible_lvm.lvs[LV_name].vg }}"