我想知道是否可以使用 Ansiblewhen
在循环中改变的条件下测试 2 个值。
disksizefromjson
是我从 json 文件中提取的变量(当我删除when
条件时,这个值被正确改变)。
item['Size']
是我使用 powershell 命令从上一个任务中提取的变量。
---
- name: get disk info on windows vm
ansible.windows.win_powershell:
script: |
Get-ciminstance win32_volume -Filter DriveType=3 | where-object{$_.Label -notlike "*Reserved*" -and $_.SystemVolume -ne $true} | Select-Object Name, Label, FileSystem, BlockSize, @{'Name'='Size'; 'Expression'={[math]::Ceiling($_.Capacity / 1GB)}}, @{'Name'='Freespace'; 'Expression'={[math]::Ceiling($_.Freespace / 1GB)}}, @{'Name'='Free'; 'Expression'={[math]::Ceiling(($_.Freespace * 100)/$_.Capacity)}} | Sort-Object Name
register: diskNewVm
- name: test disk size
set_fact:
disksizefromjson: "{{ diskinfosfromjson | from_json | selectattr('Name', 'equalto', item['Name']) | map(attribute='Size') | first | default(10) }}"
when: item['Size'] > disksizefromjson
loop: "{{ diskNewVm.output }}"
这会导致以下错误:
The conditional check 'item['Size'] > disksizefromjson' failed. The error was: error while evaluating conditional (item['Size'] > disksizefromjson): 'disksizefromjson' is undefined
当我删除该when
条件时,disksizefromjson
定义就很好了......
那么,when 条件中可能有 2 个变量吗?