On Ubuntu 14.04 I creating user with disabled password like:
sudo adduser --disabled-password myuser
I need to do same with Ansible
user module use useradd
command under the hood.
If you omit password
parameter for user
module, ansible calls useradd
without -p
flag.
Man page of useradd states:
-p, --password PASSWORD
The encrypted password, as returned by crypt(3). The default is to disable the password.
This is exactly what is needed by OP.
Comparison of adduser --disabled-password test1
and - user: name=test2 state=present
:
# grep test /etc/shadow
test1:*:17031:0:99999:7:::
test2:!:17031:0:99999:7:::
# passwd -S test1
test1 L 08/18/2016 0 99999 7 -1
# passwd -S test2
test2 L 08/18/2016 0 99999 7 -1
As you see in both cases passwords are locked.
Since Ansible 2.6 the user
module has the option password_lock, which will run usermod -L
(Linux), pw lock
(FreeBSD), or usermod -C
(?):
usermod -L
:
Lock a user's password. This puts a '!' in front of the encrypted password, effectively disabling the password.
pw lock
:
The pw utility supports a simple password locking mechanism for users; it works by prepending the string
*LOCKED*
to the beginning of the password field in master.passwd to prevent successful authentication.
So you could use:
- name: Create password locked user
user:
name: myuser
state: present
password_lock: yes