多个 ansible 条件不再适用于版本 1.9

Multiple ansible conditionals no longer work with version 1.9

我的其中一个角色有以下任务文件:

- name: check for initalized fixtures
  stat: path={{ fixture_init_file }}
  register: fixture_init

- name: copy fixtures
  copy: src={{ fixture_file }} dest={{ fixture_dest }}
  when: fixture_init.stat.exists == False

- name: debug
  debug: var=fixture_init

- name: db2
  debug: var=database

- name: install fixtures (mysql)
  shell: bzcat {{ fixture_dest }} | mysql --user=root {{ database.name }}
  when: (fixture_init.stat.exists == False) and (database.type == "mysql")
  register: fixture_init_result

- name: install password file (pgsql)
  template: src=pgpass.j2 dest=/root/.pgpass mode=0600
  when: database.type == "postgres"

- name: fixtures role map (pgsql)
  template: src=gls-pgsql.j2 dest={{ fixture_pg_roles }} mode=0644
  when: fixture_init_file.exists == False and database.type == "postgres"

- name: install role map (pgsql)
  shell: psql -d {{ database.name }} < {{ fixture_pg_roles }}
  when: fixture_init_file.exists == False and database.type == "postgres"
  sudo_user: postgres

- name: install fixtures (pgsql)
  shell: bzcat {{ fixture_dest }} | pg_restore -Fc -d {{ database.name }}
  when: fixture_init_file.exists == False and database.type == "postgres"
  sudo_user: postgres
  register: fixture_init_result

- name: mark fixtured initalized
  file: path={{ fixture_init_file }} state=touch
  when: fixture_init_result|success

当我升级到 Ansible 1.9.0.1 时,我现在收到以下错误:

TASK: [database | install fixtures (pgsql)] *********************************** 
fatal: [database] => error while evaluating conditional: fixture_init_file.exists == False and database.type == "postgres"

这两个调试语句表明变量已正确定义:

TASK: [database | debug] ****************************************************** 
ok: [database] => {
    "var": {
        "fixture_init": {
            "changed": false, 
            "invocation": {
                "module_args": "path=/opt/bigsense/fixtures-initalized", 
                "module_name": "stat"
            }, 
            "stat": {
                "exists": false
            }
        }
    }
}

TASK: [database | db2] ******************************************************** 
ok: [database] => {
    "var": {
        "database": {
            "ddl_password": "bigsense_ddl", 
            "ddl_username": "bigsense_ddl", 
            "name": "bigsense", 
            "password": "bigsense", 
            "type": "postgres", 
            "username": "bigsense"
        }
    }
}

为什么这些条件不再有效?

fixture_init_file.exists 需要 fixture_init_file.stat.exists ;)