Ansible中defaults定义的device_pattern变量提示未定义如何解决?
问题根因
核心错误是Ansible的when条件语法使用错误:when语句默认处于Jinja2解析上下文,不需要手动添加变量插值符{{ }}。
你当前的写法会先把device_pattern解析为具体值nvme,最终when语句实际要执行的判断变为nvme in ansible_devices[item],此时Ansible会将nvme当作变量名查找,自然就抛出了'nvme' is undefined的报错。
修复方法
直接删除when条件中的{{ }}即可,修正后的task配置如下:
#MDM RAID0 All available free unmounted devices - name: "Perform MDM Raid0 on all qualifying available devices on any cpu node" include_tasks: file: pfm_all_available_devices_mdm.yml apply: tags: pfm_all_available_devices_mdm when: - device_pattern in ansible_devices[item]
如果你的需求是判断设备名称包含对应字符串,还可以根据实际的ansible_devices结构调整判断逻辑,比如判断device_pattern in item(如果item是设备名的话)。
内容的提问来源于stack exchange,提问作者AhmFM
相关产品推荐
相关产品推荐

