首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可能的任务不能解析变量

可能的任务不能解析变量
EN

Stack Overflow用户
提问于 2021-08-23 18:16:05
回答 1查看 53关注 0票数 1

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

代码语言:javascript
复制
 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

输出:

代码语言:javascript
复制
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
}

尝试了所有可能的方法(查找,vars等),我可以想到,但没有运气,任何帮助将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-23 20:18:17

您正在间接地构建字符串,将inventory[hostname]留在单引号中,它将被视为文字;因此:

代码语言:javascript
复制
 vg_command: "{{ 'hostvars[inventory_hostname].ansible_lvm.lvs.'+ LV_name +'.vg' }}"

而应该是:

代码语言:javascript
复制
 vg_command: "{{ hostvars[inventory_hostname].ansible_lvm.lvs[LV_name].vg }}"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68897265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档