为什么Ansible前置任务总是跳过?

为什么Ansible前置任务总是跳过?,ansible,Ansible,我正在尝试开发一个playbook,它可以让root用户随时通过运行playbook轻松重置密码。但它总是跳过进行验证的预任务 --- - hosts: localhost remote_user: root become: yes become_method: sudo vars_prompt: - name: "root_password" prompt: "Enter your new root password" private: n

我正在尝试开发一个playbook,它可以让root用户随时通过运行playbook轻松重置密码。但它总是跳过进行验证的预任务

---
- 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 }}

该任务被设置为在未定义root\u密码时运行,并且无论您输入什么值,都可以在vars\u提示符部分中定义它。因此,该任务被跳过

根据消息判断,当消息为空时,您希望失败,因此条件应为:

when: root_password == ""

谢谢@techraf你一直都是救世主!但我发现它从来不会重置password@user_dev如果您在不同于macOS的系统上运行,则需要首先加密密码。看见