Ansible item when子句引发错误:无法在模板字符串中查找名称或访问属性

Ansible item when子句引发错误:无法在模板字符串中查找名称或访问属性,ansible,ansible-playbook,Ansible,Ansible Playbook,在下面的任务中,我收到错误消息无法在模板字符串中查找名称或访问属性。请确保变量名不包含诸如“-”之类的无效字符。我将其追溯到when子句 使用我已验证的调试语句: mysql\u server\u version='5.2.23' mysql\u客户端\u版本='5.2.23' mysql\u version='5.2.23' 如果删除when语句,任务将运行 - name: download MySQL packages tags: - preosupdates w

在下面的任务中,我收到错误消息
无法在模板字符串中查找名称或访问属性。请确保变量名不包含诸如“-”之类的无效字符。
我将其追溯到
when
子句

使用我已验证的调试语句:

  • mysql\u server\u version='5.2.23'
  • mysql\u客户端\u版本='5.2.23'
  • mysql\u version='5.2.23'
如果删除
when
语句,任务将运行

 - name: download MySQL packages
   tags:
     - preosupdates
   when: "{{ mysql_server_version | version_compare(mysql_version, '<') or mysql_client_version | version_compare(mysql_version, '<') }}"
   command: yum update -y --downloadonly MySQL-server-advanced-{{ mysql_version }} MySQL-shared-compat-advanced-{{ mysql_version }} MySQL-client-advanced-{{ mysql_version }}
   register: downloadonly
   failed_when: downloadonly.rc not in (1, 0)
   changed_when: "downloadonly is defined and 'No Packages marked for Update' not in downloadonly.stdout"
-name:下载MySQL包
标签:
-预悬浮
当:“{mysql_server_version{124; version_compare(mysql_version,,
条件不需要使用模板标记
{{
}
,因为它们已经被暗示

请尝试以下方法:

when: mysql_server_version | version_compare(mysql_version, '<') or 
      mysql_client_version | version_compare(mysql_version, '<')

when:mysql\u server\u version\u compare(mysql\u version,'1.可能
不受
支持。查看
何时:{{mysql\u server\u version\124; version\u compare(mysql_版本,'通过使when条件越来越小来隔离错误。从
when:True
开始,并通过唯一标记运行该任务。然后替换为small条件并再次运行。然后替换为biger条件等等。我想知道它的运算符优先级是否在管道运算符和or运算符之间,如果您发现s,请告诉我解运算。