Ansible项何时抛出错误:无法在模板字符串中查找名称或访问属性

时间:2015-04-17 18:39:34

标签: ansible ansible-playbook

在以下任务中,我收到错误消息Unable to look up a name or access an attribute in template string. Make sure your variable name does not contain invalid characters like '-'.我已将其追溯到when子句。

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

  • mysql_server_version='5.2.23'
  • mysql_client_version='5.2.23'
  • mysql_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"

版本

  • ansible-1.9.0.1

1 个答案:

答案 0 :(得分:0)

According to the docswhen条件不需要使用模板标记{{}},因为这些标记已经隐含。

请改为尝试:

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