##### SUMMARY

I'm currently using ansible 2.9.9 (latest available on debian testing), with python 3.8.5
I used a playbook developed with ansible 2.7.7 (latest on debian stable), and I've been kick out of all my servers because the salt used in the password_hash() function contains specials caracters.

I dont know if this is intentional, an element missing in the documentation or if I was simply not aware of that fact, in any case, I think that it could be interessting to warn other about this.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
User (password_hash)

##### ANSIBLE VERSION
2.9.9

##### STEPS TO REPRODUCE
```---
- name:
  hosts:
    - localhost
  gather_facts: false
  tasks:
    - debug:
        msg: "{{ 'password' | password_hash( 'sha512', 65534 | random( seed=inventory_hostname ) | string ) }}"
        
    - debug:
        msg: "{{ 'password' | password_hash( 'sha512', 'salt' ) }}"
        
    - debug:
        msg: "{{ 'password' | password_hash( 'sha512', 'salt-' ) }}"
        
    - debug:
        msg: "{{ 'password' | password_hash( 'sha512', 'salt_' ) }}"
```

##### ACTUAL RESULTS
```
[WARNING]: Unable to parse /home/.../ansible/inventory as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

PLAY [localhost] *******************************************************************************************************************************************

TASK [debug] ***********************************************************************************************************************************************
ok: [localhost] => {
    "msg": "$6$43927$59/6eFzcpI0IigUdbYePA2OeIEwIkyqe9VJzYswDQhl6cD7I4SoZehr004rG.k4xB8/C5F7A4k9dU5LC1RdGn."
}

TASK [debug] ***********************************************************************************************************************************************
ok: [localhost] => {
    "msg": "$6$salt$IxDD3jeSOb5eB1CX5LBsqZFVkJdido3OUILO5Ifz5iwMuTS4XMS130MTSuDDl3aCI6WouIL9AjRbLCelDCy.g."
}

TASK [debug] ***********************************************************************************************************************************************
ok: [localhost] => {
    "msg": "*0"
}

TASK [debug] ***********************************************************************************************************************************************
ok: [localhost] => {
    "msg": "*0"
}

PLAY RECAP *************************************************************************************************************************************************
localhost                  : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
```

##### EXPECTED RESULTS
Not "*0" for the password hashed.

default: 20
        type: integer
    notes:
      - A great alternative to the password lookup plugin,
        if you don't need to generate random passwords on a per-host basis,
        would be to use Vault in playbooks.
        Read the documentation there and consider using it first,
        it will be more desirable for most applications.
      - If the file already exists, no data will be written to it.
        If the file has contents, those contents will be read in as the password.
        Empty files cause the password to return as an empty string.
      - 'As all lookups, this runs on the Ansible host as the user running the playbook, and "become" does not apply,
        the target file must be readable by the playbook user, or, if it does not exist,
        the playbook user must have sufficient privileges to create it.
        (So, for example, attempts to write into areas such as /etc will fail unless the entire playbook is being run as root).'
"""
EXAMPLES = """
- name: create a mysql user with a random password
  mysql_user:
    name: "{{ client }}"
    password: "{{ lookup('password', 'credentials/' + client + '/' + tier + '/' + role + '/mysqlpassword length=15') }}"
    priv: "{{ client }}_{{ tier }}_{{ role }}.*:ALL"
- name: create a mysql user with a random password using only ascii letters
  mysql_user:
    name: "{{ client }}"
    password: "{{ lookup('password', '/tmp/passwordfile chars=ascii_letters') }}"
    priv: '{{ client }}_{{ tier }}_{{ role }}.*:ALL'
- name: create a mysql user with an 8 character random password using only digits
  mysql_user:
    name: "{{ client }}"