linux-system-roles.ssh

ssh

ansible-centos.yml ansible-debian.yml ansible-fedora.yml ansible-lint.yml ansible-test.yml ansible-ubuntu.yml markdownlint.yml shellcheck.yml tft.yml tft_citest_bad.yml woke.yml

Un rol de Ansible para gestionar la configuración de clientes SSH.

Requisitos

Este rol debería funcionar en cualquier sistema que tenga cliente openssh y sea compatible con ansible. El rol fue probado en:

  • RHEL/CentOS 6, 7, 8, 9
  • Fedora
  • Debian
  • Ubuntu

Requisitos de la colección

Para gestionar sistemas rpm-ostree, el rol necesita módulos de colecciones externas. Usa el siguiente comando para instalarlas:

ansible-galaxy collection install -vv -r meta/collection-requirements.yml

Variables del rol

Por defecto, el rol no debe modificar la configuración del sistema y generar un ssh_config global que coincida con el predeterminado del sistema operativo (la configuración generada no conserva comentarios ni el orden de las opciones).

ssh_user

Por defecto (null), el rol modificará la configuración global para todos los usuarios. Otros valores se interpretarán como un nombre de usuario y el rol modificará la configuración por usuario almacenada en ~/.ssh/config del usuario dado. El usuario debe existir antes de invocar este rol, de lo contrario fallará.

ssh_skip_defaults

Por defecto (auto), el rol escribe el archivo de configuración global /etc/ssh/ssh_config y mantiene los valores predeterminados del sistema operativo (true). Esto se desactiva automáticamente cuando se crea un archivo de configuración alternativo (ssh_drop_in_name!=null) o cuando se crea un archivo de configuración por usuario (ssh_user!=null).

ssh_drop_in_name

Esto define el nombre del archivo de configuración alternativo que se colocará en el directorio alternativo global. El nombre se usa en la plantilla /etc/ssh/ssh_config.d/{name}.conf para hacer referencia al archivo de configuración a modificar. Si el sistema no soporta el directorio alternativo, configurar esta opción hará que la ejecución falle. Por defecto es null si el sistema no soporta el directorio alternativo y 00-ansible en caso contrario.

El formato sugerido es NN-nombre, donde NN es un número de dos dígitos utilizado para ordenar y nombre es un nombre descriptivo del contenido o del propietario del archivo.

ssh dict

Un diccionario que contiene opciones de configuración y sus valores. Consulta el ejemplo a continuación.

  • ssh_...:

Se pueden usar variables simples que consisten en el nombre de la opción precedido por ssh_ en lugar del diccionario anterior. La variable simple anula los valores en el diccionario anterior.

ssh_additional_packages

Este rol instala automáticamente los paquetes necesarios para los casos de uso más comunes en la plataforma dada. Si se necesitan instalar paquetes adicionales (por ejemplo, openssh-keysign para autenticación basada en host), se pueden especificar en esta variable.

ssh_config_file

El archivo de configuración que será escrito por este rol. El valor por defecto se define por la plantilla /etc/ssh/ssh_config.d/{name}.conf si el sistema tiene directorio alternativo o /etc/ssh/ssh_config de lo contrario. Si ssh_user!=null, el valor por defecto es ~/.ssh/config.

Para escribir /etc/ssh/ssh_config incluso si un directorio alternativo está soportado, configura ssh_drop_in_name como null.

ssh_config_owner, ssh_config_group, ssh_config_mode

El propietario, grupo y modo del archivo de configuración creado. Por defecto, los archivos son propiedad de root:root con modo 0644, a menos que ssh_user!=null. En ese caso, el modo es 0600 y el propietario y grupo se derivan del nombre de usuario dado en la variable ssh_user.

ssh_backup

Cuando se establece en false, el archivo original ssh_config no se respalda. Por defecto es true.

ssh_transactional_update_reboot_ok

Esta variable se utiliza para gestionar reinicios requeridos por actualizaciones transaccionales. Si una actualización transaccional requiere un reinicio, el rol procederá con el reinicio si ssh_transactional_update_reboot_ok está establecido en true. Si se establece en false, el rol notificará al usuario que se requiere un reinicio, permitiendo un manejo personalizado de la necesidad de reinicio. Si esta variable no se establece, el rol fallará para asegurarse de que no se pase por alto el requisito de reinicio.

Ejemplo de Playbook

El siguiente playbook configura la configuración ssh del usuario root en su directorio personal para usar compresión, multiplexión de control maestro y habilitar la autenticación GSSAPI en el bloque "match final all". Además, crea un alias "example" para conectarse al host example.com como usuario somebody. La última línea desactiva el reenvío X11.

- name: Gestionar clientes ssh
  hosts: all
  tasks:
  - name: Configurar clientes ssh
    include_role:
      name: linux-system-roles.ssh
    vars:
      ssh_user: root
      ssh:
        Compression: true
        ControlMaster: auto
        ControlPath: ~/.ssh/.cm%C
        Match:
          - Condition: "final all"
            GSSAPIAuthentication: true
        Host:
          - Condition: example
            Hostname: example.com
            User: somebody
      ssh_ForwardX11: false

Más ejemplos están en el directorio examples/.

rpm-ostree

Consulta README-ostree.md.

Licencia

LGPLv3, consulta el archivo LICENSE para más información.

Información del autor

Jakub Jelen, 2021 - 2023