多个 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
;)
我的其中一个角色有以下任务文件:
- 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
;)