2017-01-27 4 views
0

私は、いつでもプレイブックを実行してrootが簡単にパスワードをリセットできるようにするためのプレイブックを開発しようとしています。しかし、それは妥当性検査を行うプレタスクをスキップします。なぜ、前任者は常にスキップするのですか?

--- 
- 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セクションでそれを定義しないでされたときにタスクを実行するように設定されています。したがって、タスクはスキップされます。

条件がなければなりませんので、あなたはそれが空だと失敗するメッセージから判断すると:あなたは常に救世主となっている@techraf

when: root_password == "" 
+0

ありがとう! –

+0

しかし、パスワードが決してリセットされないことが分かりました。 –

+1

@user_dev MacOS以外のシステムで実行している場合は、まずパスワードを暗号化する必要があります。 [the manual](http://docs.ansible.com/ansible/user_module.html)を参照してください。 – techraf

関連する問題