robertdebock.users
Rol de Ansible usuarios
El propósito de este rol es agregar usuarios y grupos en tu sistema.
GitHub | GitLab | Descargas | Versión |
---|---|---|---|
Ejemplo de Playbook
Este ejemplo se toma de molecule/default/converge.yml
y se prueba en cada push, solicitud de extracción y lanzamiento.
---
- name: Converger
hosts: all
become: true
gather_facts: true
roles:
- role: robertdebock.users
# Puedes crear grupos:
users_groups:
- name: robertdb
gid: 1024
- name: users
# También puedes eliminar grupos.
- name: notgroup
state: absent
# También es posible un grupo del sistema.
- name: systemgroup
system: true
# Puedes crear usuarios.
users:
- name: root
cron_allow: true
# Puedes eliminar claves autorizadas.
unauthorized_keys:
- "ssh-rsa XYZYX54321"
- name: robertdb
comment: Robert de Bock
uid: 1024
# El `group` y `groups` listados aquí deben existir.
group: robertdb
# groups: Una lista de grupos
groups:
- users
cron_allow: true
sudo_options: "ALL=(ALL) NOPASSWD: ALL"
# Añadiendo una clave autorizada.
authorized_keys:
- "ssh-rsa ABC123"
# Marca de tiempo EPOCH cuando una cuenta debería expirar.
# Típicamente un valor positivo como: `1641971487`.
# El valor `-1` elimina el tiempo de expiración.
expires: -1
password_validity_days: 9
- name: robert.d.b
comment: Robert de Bock con puntos en el nombre de usuario
uid: 1025
# El `group` y `groups` listados aquí deben existir.
group: robertdb
groups:
- users
cron_allow: true
# Permitir sudo, pero requerir una contraseña.
sudo_options: "ALL=(ALL) ALL"
authorized_keys:
- "ssh-rsa ABC123"
expires: -1
password_validity_days: 9
# Aquí se elimina un usuario.
- name: notuser
state: absent
- name: keyuser
manage_ssh_key: true
- name: privkeyuser
# Este usuario tendrá claves SSH generadas.
manage_ssh_key: true
copy_private_key: true
- name: multiplekeys
authorized_keys:
- "ssh-rsa ABC1234"
- "ssh-rsa ABC12345"
- name: passuser
# Puedes establecer una contraseña. (Encriptada y salada.)
password: "$6$mysecretsalt$qJbapG68nyRab3gxvKWPUcs2g3t0oMHSHMnSKecYNpSi3CuZm.GbBqXO8BE6EI6P1JUefhA0qvD7b5LSh./PU1"
update_password: on_create
- name: remotekey
authorized_keys:
# También puedes descargar una clave pública desde una URL.
- "https://raw.githubusercontent.com/shaanr/smdb/master/file.pub"
- name: systemuser
system: true
- name: multisudo
# Una cuenta que puede ejecutar solo unos pocos comandos sin contraseña.
sudo_options:
- "ALL= NOPASSWD: /usr/bin/systemctl restart httpd"
- "ALL= NOPASSWD: /usr/bin/systemctl start httpd"
- "ALL= NOPASSWD: /usr/bin/systemctl stop httpd"
- name: myprivkeyuser
private_keys:
- name: id_rsa
content: |
-----BEGIN OPENSSH PRIVATE KEY-----
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
AwQFBg==
-----END OPENSSH PRIVATE KEY-----
La máquina necesita estar preparada. En CI, esto se hace usando molecule/default/prepare.yml
:
---
- name: Preparar
hosts: all
become: true
gather_facts: false
roles:
- role: robertdebock.bootstrap
- role: robertdebock.core_dependencies
tasks:
- name: Establecer claves autorizadas para root
ansible.posix.authorized_key:
user: root
state: present
key: "ssh-rsa XYZYX54321"
También consulta una explicación completa y ejemplo sobre cómo usar estos roles.
Variables del Rol
Los valores predeterminados para las variables están establecidos en defaults/main.yml
:
---
# archivo predeterminado para usuarios
# La ubicación para almacenar las claves ssh para el usuario
users_ssh_key_directory: ssh_keys
# El shell predeterminado si no se sobrescribe.
users_shell: /bin/bash
# gestionar permisos de cron a través de /etc/cron.allow
users_cron_allow: true
# ¿deberían crearse los directorios de inicio?
users_create_home: true
Requisitos
- paquetes pip listados en requirements.txt.
Estado de los roles utilizados
Los siguientes roles se utilizan para preparar un sistema. Puedes preparar tu sistema de otra manera.
Requisito | GitHub | GitLab |
---|---|---|
robertdebock.bootstrap | ||
robertdebock.core_dependencies |
Contexto
Este rol forma parte de muchos roles compatibles. Echa un vistazo a la documentación de estos roles para más información.
Aquí hay una visión general de los roles relacionados:
Compatibilidad
Este rol ha sido probado en estas imágenes de contenedor:
contenedor | etiquetas |
---|---|
Alpine | todas |
Amazon | Candidato |
EL | 9 |
Debian | todas |
Fedora | todas |
Ubuntu | todas |
La versión mínima de Ansible requerida es 2.12, las pruebas se han realizado en:
- La versión anterior.
- La versión actual.
- La versión de desarrollo.
Si encuentras problemas, por favor regístralos en GitHub.
Licencia
Información del autor
Por favor considera patrocinarme.
The purpose of this role is to add users and groups on your system.
ansible-galaxy install robertdebock.users