ansible.builtin.user module – Manage user accounts
Note
This module is part of ansible-core
and included in all Ansible installations. In most cases, you can use the short module name user
even without specifying the collections keyword. However, we recommend you use the Fully Qualified Collection Name (FQCN) ansible.builtin.user
for easy linking to the module documentation and to avoid conflicting with other collections that may have the same module name.
Synopsis
- Manage user accounts and user attributes.
- For Windows targets, use the ansible.windows.win_user module instead.
Parameters
Parameter | Comments |
---|---|
append boolean | |
authorization string added in Ansible 2.8 | Sets the authorization of the user. Can set multiple authorizations using comma separation. To delete all authorizations, use Currently supported on Illumos/Solaris. Does nothing when used with other platforms. |
comment string | Optionally sets the description (aka GECOS) of user account. On macOS, this defaults to the |
create_home aliases: createhome boolean | Unless set to Changed from Choices:
|
expires float | An expiry time for the user in epoch, it will be ignored on platforms that do not support this. Currently supported on GNU/Linux, FreeBSD, and DragonFlyBSD. Since Ansible 2.6 you can remove the expiry time by specifying a negative value. Currently supported on GNU/Linux and FreeBSD. |
force boolean | This only affects The behavior is the same as When used with Choices:
|
generate_ssh_key boolean | Whether to generate a SSH key for the user in question. This will not overwrite an existing SSH key unless used with Choices:
|
group string | Optionally sets the user’s primary group (takes a group name). On macOS, this defaults to |
groups list / elements=string | A list of supplementary groups which the user is also a member of. By default, the user is removed from all other groups. Configure When set to an empty string Before Ansible 2.3, the only input format allowed was a comma separated string. |
boolean | macOS only, optionally hide the user from the login window and system preferences. The default will be Choices:
|
home path | Optionally set the user’s home directory. |
local boolean | Forces the use of “local” command alternatives on platforms that implement it. This is useful in environments that use centralized authentication when you want to manipulate the local users (in other words, it uses This will check This requires that the above commands as well as Choices:
|
login_class string | Optionally sets the user’s login class, a feature of most BSD OSs. |
move_home boolean | If set to Choices:
|
name aliases: user string / required | Name of the user to create, remove or modify. |
non_unique boolean | Optionally when used with the -u option, this option allows to change the user ID to a non-unique value. Choices:
|
password string | If provided, set the user’s password to the provided encrypted hash (Linux) or plain text password (macOS). Linux/Unix/POSIX: Enter the hashed password as the value. See FAQ entry for details on various ways to generate the hash of a password. To create an account with a locked/disabled password on Linux systems, set this to To create an account with a locked/disabled password on OpenBSD, set this to OS X/macOS: Enter the cleartext password as the value. Be sure to take relevant security precautions. On macOS, the password specified in the When the password is passed as an argument, the |
password_expire_max integer added in ansible-core 2.11 | Maximum number of days between password change. Supported on Linux only. |
password_expire_min integer added in ansible-core 2.11 | Minimum number of days between password change. Supported on Linux only. |
password_expire_warn integer added in ansible-core 2.16 | Number of days of warning before password expires. Supported on Linux only. |
password_lock boolean | Lock the password ( Implementation differs by platform. This option does not always mean the user cannot login using other methods. This option does not disable the user, only lock the password. This must be set to Currently supported on Linux, FreeBSD, DragonFlyBSD, NetBSD, OpenBSD. Choices:
|
profile string added in Ansible 2.8 | Sets the profile of the user. Can set multiple profiles using comma separation. To delete all the profiles, use Currently supported on Illumos/Solaris. Does nothing when used with other platforms. |
remove boolean | This only affects The behavior is the same as Choices:
|
role string added in Ansible 2.8 | Sets the role of the user. Can set multiple roles using comma separation. To delete all roles, use Currently supported on Illumos/Solaris. Does nothing when used with other platforms. |
seuser string | Optionally sets the seuser type (user_u) on selinux enabled systems. |
shell string | Optionally set the user’s shell. On macOS, before Ansible 2.5, the default shell for non-system users was On other operating systems, the default shell is determined by the underlying tool invoked by this module. See Notes for a per platform list of invoked tools. |
skeleton string | Optionally set a home skeleton directory. Requires |
ssh_key_bits integer | Optionally specify number of bits in SSH key to create. The default value depends on ssh-keygen. |
ssh_key_comment string | Optionally define the comment for the SSH key. Default: |
ssh_key_file path | Optionally specify the SSH key filename. If this is a relative filename then it will be relative to the user’s home directory. This parameter defaults to |
ssh_key_passphrase string | Set a passphrase for the SSH key. If no passphrase is provided, the SSH key will default to having no passphrase. |
ssh_key_type string | Optionally specify the type of SSH key to generate. Available SSH key types will depend on implementation present on target host. Default: |
state string | Whether the account should exist or not, taking action if the state is different from what is stated. See this FAQ entry for additional requirements when removing users on macOS systems. Choices:
|
system boolean | When creating an account This setting cannot be changed on existing users. Choices:
|
uid integer | Optionally sets the UID of the user. |
umask string added in ansible-core 2.12 | Sets the umask of the user. Currently supported on Linux. Does nothing when used with other platforms. Requires |
update_password string |
Choices:
|
Attributes
Attribute | Support | Description |
---|---|---|
check_mode | Support: full | Can run in check_mode and return changed status prediction without modifying target, if not supported the action will be skipped. |
diff_mode | Support: none | Will return details on what has changed (or possibly needs changing in check_mode), when in diff mode |
platform | Platform: posix | Target OS/families that can be operated against |
Notes
Note
- There are specific requirements per platform on user management utilities. However they generally come pre-installed with the system and Ansible will require they are present at runtime. If they are not, a descriptive error message will be shown.
- On SunOS platforms, the shadow file is backed up automatically since this module edits it directly. On other platforms, the shadow file is backed up by the underlying tools used by this module.
- On macOS, this module uses
dscl
to create, modify, and delete accounts.dseditgroup
is used to modify group membership. Accounts are hidden from the login window by modifying/Library/Preferences/com.apple.loginwindow.plist
. - On FreeBSD, this module uses
pw useradd
andchpass
to create,pw usermod
andchpass
to modify,pw userdel
remove,pw lock
to lock, andpw unlock
to unlock accounts. - On all other platforms, this module uses
useradd
to create,usermod
to modify, anduserdel
to remove accounts.
See Also
See also
- ansible.posix.authorized_key
-
Adds or removes an SSH authorized key.
- ansible.builtin.group
-
Add or remove groups.
- ansible.windows.win_user
-
Manages local Windows user accounts.
Examples
- name: Add the user 'johnd' with a specific uid and a primary group of 'admin' ansible.builtin.user: name: johnd comment: John Doe uid: 1040 group: admin - name: Create a user 'johnd' with a home directory ansible.builtin.user: name: johnd create_home: yes - name: Add the user 'james' with a bash shell, appending the group 'admins' and 'developers' to the user's groups ansible.builtin.user: name: james shell: /bin/bash groups: admins,developers append: yes - name: Remove the user 'johnd' ansible.builtin.user: name: johnd state: absent remove: yes - name: Create a 2048-bit SSH key for user jsmith in ~jsmith/.ssh/id_rsa ansible.builtin.user: name: jsmith generate_ssh_key: yes ssh_key_bits: 2048 ssh_key_file: .ssh/id_rsa - name: Added a consultant whose account you want to expire ansible.builtin.user: name: james18 shell: /bin/zsh groups: developers expires: 1422403387 - name: Starting at Ansible 2.6, modify user, remove expiry time ansible.builtin.user: name: james18 expires: -1 - name: Set maximum expiration date for password ansible.builtin.user: name: ram19 password_expire_max: 10 - name: Set minimum expiration date for password ansible.builtin.user: name: pushkar15 password_expire_min: 5 - name: Set number of warning days for password expiration ansible.builtin.user: name: jane157 password_expire_warn: 30
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key | Description |
---|---|
append boolean | Whether or not to append the user to groups. Returned: When Sample: |
comment string | Comment section from passwd file, usually the user name. Returned: When user exists Sample: |
create_home boolean | Whether or not to create the home directory. Returned: When user does not exist and not check mode Sample: |
force boolean | Whether or not a user account was forcibly deleted. Returned: When Sample: |
group integer | Primary user group ID Returned: When user exists Sample: |
groups string | |
home string | |
move_home boolean | Whether or not to move an existing home directory. Returned: When Sample: |
name string | User account name. Returned: always Sample: |
password string | |
remove boolean | Whether or not to remove the user account. Returned: When Sample: |
shell string | |
ssh_fingerprint string | Fingerprint of generated SSH key. Returned: When Sample: |
ssh_key_file string | Path to generated SSH private key file. Returned: When Sample: |
ssh_public_key string | Generated SSH public key file. Returned: When Sample: |
stderr string | Standard error from running commands. Returned: When stderr is returned by a command that is run Sample: |
stdout string | Standard output from running commands. Returned: When standard output is returned by the command that is run |
system boolean | Whether or not the account is a system account. Returned: When Sample: |
uid integer |
Collection links
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/user_module.html