2017-01-27 1 views
0

Я пытаюсь разработать playbook, который позволяет root легко перезагружать пароль, запустив playbook в любое время. Но он небрежно пропускает pretask, который выполняет валидацию.Почему Ansible pre-task всегда пропускает?

--- 
- hosts: localhost 
    remote_user: root 
    become: yes 
    become_method: sudo 


    vars_prompt: 

    - name: "root_password" 
     prompt: "Enter your new root password" 
     private: no 
     when: root_password is not defined 

    pre_tasks: 

    - name: fail the play if the user missed out root_password 
     fail: msg="root password should not be empty" 
     when: root_password is not defined 

    tasks: 

    - name: Change root password 
     user: name=root update_password=always password={{ root_password }} 

ответ

1

Поставлена ​​задача работать, когда root_password не определено и то, что значение, которое вы войдете, вы определите его в разделе vars_prompt. Следовательно, задача пропущена.

Судя по сообщению, которое хочет потерпеть неудачу, когда он пуст, поэтому условие должно быть:

when: root_password == "" 
+0

ThankYou @techraf Вы всегда был спасителем! –

+0

Но я узнал, что он никогда не сбрасывает пароль –

+1

@user_dev Если вы работаете в системе, отличной от macOS, вам сначала нужно зашифровать пароль. См. [Руководство] (http://docs.ansible.com/ansible/user_module.html). – techraf