clusterapps.rhbase
Rol de Ansible rhbase
Rol de Ansible para la configuración básica de un servidor con una distribución de Linux basada en RedHat (CentOS, Fedora, RHEL, ...). Específicamente, las responsabilidades de este rol son:
- Gestionar repositorios,
- Gestionar la instalación y eliminación de paquetes,
- Activar o desactivar servicios especificados,
- Crear usuarios y grupos,
- Configurar una cuenta de administrador con una clave SSH,
- Aplicar configuraciones básicas de seguridad, como habilitar SELinux y el firewall,
- Gestionar reglas de firewall (en la zona pública).
Este es un fork de bertvv.rh-base. El original es excelente, pero quise ir en otra dirección.
Requisitos
Sin requisitos específicos.
Variables del Rol
Variable | Por Defecto | Comentarios (tipo) |
---|---|---|
rhbase_enable_repos |
[] | Lista de diccionarios que especifica los repositorios que se habilitarán. Ver más abajo para detalles. |
rhbase_firewall_allow_ports |
[] | Lista de puertos permitidos en el firewall, ej. 80/tcp, 53/udp, etc. |
rhbase_firewall_allow_services |
[] | Lista de servicios permitidos en el firewall, ej. http, dns, etc.(1) |
rhbase_firewall_interfaces |
[] | Lista de interfaces de red que se agregarán a la zona pública del conjunto de reglas del firewall. |
rhbase_hosts_entry |
true | Cuando se habilita, se agrega una entrada a /etc/hosts con el nombre del host de la máquina. Esto acelera la recopilación de datos. |
rhbase_install_packages |
[] | Lista de paquetes que deben instalarse. También se permiten URLs. |
rhbase_motd |
false | Cuando se habilita, se instala un /etc/motd personalizado con información sobre el nombre del host y las direcciones IP. |
rhbase_override_firewalld_zones |
false | Cuando se habilita, permite que NetworkManager sobrescriba las zonas del firewall establecidas por el administrador(2). |
rhbase_remove_packages |
[] | Lista de paquetes que no deben instalarse. |
rhbase_repo_exclude_from_update |
[] | Lista de paquetes que deben ser excluidos de una actualización. Se permiten comodines, ej. kernel* . |
rhbase_repo_exclude |
[] | Lista de repositorios que deben deshabilitarse en yum/dnf.conf. |
rhbase_repo_gpgcheck |
false | Cuando se habilita, se llevarán a cabo verificaciones GPG al instalar paquetes. |
rhbase_repo_installonly_limit |
3 | Número máximo de versiones de un paquete (ej. kernel) que pueden instalarse simultáneamente. Debe ser al menos 2. |
rhbase_repo_remove_dependencies |
true | Cuando se habilita, las dependencias que quedan sin usar después de eliminar un paquete también se eliminarán. |
rhbase_repositories |
[] | Lista de paquetes RPM (incluyendo URLs) que instalan repositorios externos (ej. epel-release ). |
rhbase_selinux_state |
enforcing | El estado SELinux predeterminado para el sistema. Solo deja esto como está. |
rhbase_selinux_booleans |
[] | Lista de booleanos de SELinux que deben habilitarse, ej. httpd_can_network_connect |
rhbase_ssh_key |
- | La clave SSH pública para el usuario administrador que le permite iniciar sesión sin contraseña. El usuario debe existir. |
rhbase_ssh_user |
- | El nombre del usuario que gestionará esta máquina. La clave SSH se instalará en el directorio personal del usuario.(3) |
rhbase_start_services |
[] | Lista de servicios que deben estar en funcionamiento y habilitados. |
rhbase_stop_services |
[] | Lista de servicios que no deben estar en funcionamiento. |
rhbase_tz |
:/etc/localtime | Establece la variable de entorno $TZ (4). |
rhbase_update |
false | Cuando se habilita, se llevará a cabo una actualización de paquetes. |
rhbase_user_groups |
[] | Lista de grupos de usuarios que deben estar presentes. |
rhbase_users |
[] | Lista de diccionarios que especifican los usuarios que deben estar presentes. Ver más abajo para un ejemplo. |
rhbase_taskrunner_key |
[] | Clave pública autorizada para conectarse como taskrunner. |
Observaciones:
(1) Una lista completa de valores válidos para rhbase_firewall_allow_services
se puede enumerar con el comando firewall-cmd --get-services
.
(2) Esta es una solución para el bug #7407 de CentOS. Por defecto, NetworkManager gestiona las zonas de firewall, lo que sobrescribe las reglas que agregas con --permanent
.
(3) Establecer la variable rhbase_ssh_user
no crea realmente un usuario, sino que instala la rhbase_ssh_key
en el directorio personal de ese usuario (~/.ssh/authorized_keys
). Por lo tanto, rhbase_ssh_user
debe ser el nombre de un usuario existente, especificado en rhbase_users
.
(4) Establecer la variable $TZ
puede reducir el número de llamadas al sistema. Ver https://blog.packagecloud.io/eng/2017/02/21/set-environment-variable-save-thousands-of-system-calls/
Habilitando repositorios
Habilita repositorios (instalados, pero deshabilitados) especificando rhbase_enable_repos
como una lista de diccionarios con las claves name:
(requerida) y section:
(opcional), ej.:
rhbase_enable_repos:
- name: CentOS-fasttrack
section: fasttrack
- name: epel-testing
Cuando no se especifica la sección, por defecto se utiliza el nombre del repositorio.
Agregando usuarios
Los usuarios se especifican mediante diccionarios como este:
rhbase_users:
- name: johndoe
comment: 'John Doe'
groups:
- users
- devs
password: '$6$WIFkXf07Kn3kALDp$fHbqRKztuufS895easdT [...]'
- name: janedoe
La única clave obligatoria es name
.
Clave | Requerida | Por Defecto | Comentarios |
---|---|---|---|
name |
sí | - | El nombre de usuario |
comment |
no | '' | Cadena de comentario |
shell |
no | '/bin/bash' | La shell de comandos del usuario |
groups |
no | [] | Grupos a los que se debe agregar este usuario(1) |
password |
no | '!!' | Hash de la contraseña del usuario(2) |
Observaciones:
(1) Si deseas que un usuario sea administrador, asegúrate de que sea miembro del grupo wheel
(Ver Guía del Administrador del Sistema RedHat.
(2) La contraseña debe especificarse como un hash, como se devuelve por crypt(3), en la forma $algo$salt$hash
. Para pruebas y VMs de prueba de concepto, puedes consultar https://www.mkpasswd.net/ para generar hashes en el formato correcto. Los tipos de hash típicos para Linux son MD5 (crypt-md5, hashes que comienzan con $1$
) y SHA-512 (crypt-sha-512, hashes que comienzan con $6$
).
Dependencias
Sin dependencias.
Ejemplo de Playbook
Próximamente.
Pruebas
Próximamente.
Contribuyendo
Se agradecen problemas, solicitudes de funciones e ideas, que se pueden publicar en la sección de Problemas.
Las solicitudes de extracción (PR) también son muy bienvenidas. La mejor manera de enviar una PR es primero crear un fork de este proyecto de Github, luego crear una rama temática para el cambio sugerido y empujar esa rama a tu propio fork. Github puede crear fácilmente una PR basada en esa rama. ¡No olvides agregar tu nombre a la lista de colaboradores a continuación!
Licencia
BSD
Colaboradores
- Michael Cleary (mantenedor)
Colaboradores Originales
- Bert Van Vreckem
- Jeroen De Meerleer
- Sebastien Nussbaum
Base setup of a server with a RedHat-based Linux distribution with the systemd init system.
ansible-galaxy install clusterapps.rhbase