2016-04-01 3 views
0

я пытаюсь сделать что-то вроде этого:анзибль * когда * говорят: "ошибка при оценке условной"

У меня есть этот сборник пьес

--- 
- hosts: all 
    vars: 
    user: myuser 
    venv_name: venv 
    only_deploy_code: "yes" 
    roles: 
    - my_venv 

В ролях/my_venv/Задачи/main.yml ::

--- 
- name: pip Install packages into virtualenv 
    pip: name={{ item }} virtualenv="{{ home }}/{{ venv_name }}" virtualenv_site_packages="yes" 
    with_items: 
    - PyYAML 
    - numexpr 
    sudo_user: "{{ user }}" 
    sudo: true 
    when: only_code_deploy == "no" 

, но я получаю эту ошибку ::

TASK: [akd_venv | pip Install packages into virtualenv] 
*********************** 
fatal: [vagrant] => error while evaluating conditional: only_code_deploy == "no" 
+2

Посмотрите на ваши имена переменных ... вы 'only_deploy_code' в вашем VARS блоке и' only_code_deploy' в вашей задаче. Также вы должны использовать булевы вместо строк, представляющих booleans. – ydaetskcoR

ответ

1

Просто попробуйте опустить кавычки yes и изменить when заявление, как это:

- hosts: all 
    gather_facts: no 
    vars: 
    only_deploy_code: yes 
    tasks: 
    - debug: 
     msg: "This is yes message" 
     when: not only_deploy_code 

Испытано на локальной машине, так:

ansible-playbook -i "localhost," test.yml -c local 

с выходом:

PLAY *************************************************************************** 

TASK [debug] ******************************************************************* 
skipping: [localhost] 

PLAY RECAP ********************************************************************* 
localhost     : ok=0 changed=0 unreachable=0 failed=0 

Я думаю, что это ожидаемое поведение, которое вы хотите, просто изменил оператор when, если вы хотите его пропустить для no вместо yes, как это:

when: only_deploy_code 
+0

Цитаты не имеют значения. Это неверная переменная. – tedder42

Смежные вопросы