mdsketch.teleport

Rol de Ansible: Servicio de Nodo Teleport

Ansible Galaxy Ansible Lint molecule_tests

Un rol de Ansible para instalar o actualizar el servicio de nodo Teleport y la configuración de Teleport en sistemas basados en Debian.

Funciona con cualquier arquitectura para la que Teleport tenga un binario disponible. Consulta las descargas de Teleport.

Si agregas tu propia plantilla de archivo de configuración de Teleport, puedes ejecutar cualquier servicio de nodo que desees (ssh, app, base de datos, kubernetes).

Por favor, consulta la documentación del archivo de configuración de Teleport para más información y confirma que está configurado correctamente.

Tareas Pendientes:

  • Agregar pruebas de idempotencia para verificar que Teleport se actualiza correctamente (configuración, servicio y binario).
  • Agregar pruebas para plantillas de variables.
  • Bloquear las versiones de las herramientas de linting.
  • Investigar si es útil instalar Teleport en un contenedor Docker (actualmente no soportado).

Requisitos

Un clúster de Teleport en funcionamiento para que puedas proporcionar la siguiente información:

  • Token de autorización (dinámico o estático). Ej: tctl nodes add --ttl=5m --roles=node | grep "invite token:" | grep -Eo "[0-9a-z]{32}"
  • Pin de CA
  • Dirección del servidor de autenticación

Variables del Rol

Estas son las variables predeterminadas con sus valores por defecto como están definidas en defaults/main.yml

teleport_version

La versión de Teleport a instalar. Consulta las descargas de Teleport para versiones disponibles.

teleport_architecture

Cambia teleport_architecture a cualquiera de los siguientes:

  • arm-bin si estás en dispositivos basados en ARMv7 (32 bits).
  • arm64-bin si estás en dispositivos basados en ARM64/ARMv8 (64 bits).
  • amd64-bin si estás en dispositivos basados en x86_64/AMD64.
  • 386-bin si estás en dispositivos basados en i386/Intel.
teleport_config_template

La plantilla para usar en el archivo de configuración de Teleport. El predeterminado es templates/default_teleport.yaml.j2. Contiene una configuración básica que habilitará el servicio SSH y añadirá una etiqueta que muestra el tiempo de actividad del nodo.

Hay muchas opciones disponibles y puedes sustituir tu propia plantilla y agregar cualquier variable que desees.

teleport_service_template

La plantilla para usar en el archivo del servicio de Teleport. El predeterminado es templates/default_teleport.service.j2. Puedes sustituir tu propia plantilla y agregar cualquier variable que desees.

teleport_ca_pin

El pin de CA para usar en la configuración de Teleport. Esto es opcional, pero recomendado.

teleport_config_path

La ruta al archivo de configuración de Teleport. El predeterminado es /etc/teleport.yaml.

teleport_auth_servers

La lista de servidores de autenticación a utilizar para la configuración de Teleport. Se muestran ejemplos como predeterminados arriba.

backup_teleport_config

Realiza una copia de seguridad del archivo de configuración de Teleport antes de sobrescribirlo. El predeterminado es yes. Consulta Actualizando Teleport para más información.

teleport_control_systemd

Predeterminado yes. Controla si este rol modifica el servicio de Teleport.

teleport_template_config

Predeterminado yes. Controla si este rol modifica el archivo de configuración de Teleport.

Actualizando Teleport

Cuando se ejecuta el rol, verifica si la versión instalada coincide con la versión especificada en teleport_version. Si es diferente, descargará la última versión e instalará.

Al realizar una actualización, se creará una copia de seguridad del archivo de configuración actual en teleport_config_path y se generará un nuevo archivo de configuración en su lugar. Al hacer esto, no es necesario proporcionar teleport_auth_token y teleport_ca_pin, ya que se extraerán del archivo de configuración existente y luego se incluirán en el nuevo archivo de configuración.

Esto te permite actualizar valores en el archivo de configuración como etiquetas y comandos sin tener que almacenar el token de autorización y el pin de CA.

Este rol recarga teleport.service después de que ocurra cualquiera de lo siguiente:

  • Teleport está instalado o actualizado.
  • El archivo de configuración de Teleport es actualizado.
  • El archivo de servicio de Teleport es actualizado.

Dependencias

Ninguna

Ejemplo de Playbook

Por ejemplo, para instalar Teleport en un nodo:

- hosts: all
  roles:
    - mdsketch.teleport
  vars:
    # etiquetas ssh opcionales
    teleport_ssh_labels:
      - k: "label_key"
        v: "label_value"
    teleport_auth_token: "token de autorización super secreta"
    teleport_ca_pin: "pin de ca no tan secreto"
    teleport_auth_server: "servidor de autenticación"
    teleport_proxy_server: "servidor proxy"

Configuración de Teleport creada en /etc/teleport.yaml

---
version: v3
teleport:
  auth_token: "token de autorización super secreta"
  ca_pin: "pin de ca no tan secreto"
  auth_server: servidor de autenticación
  proxy_server: servidor proxy
  log:
    output: stderr
    severity: INFO
    format:
      output: text
  diag_addr: ""
ssh_service:
  enabled: "yes"
  labels:
    label_key: label_value
  commands:
  - name: hostname
    command: [hostname]
    period: 60m0s
  - name: uptime
    command: [uptime, -p]
    period: 5m0s
  - name: version
    command: [teleport, version]
    period: 60m0s
proxy_service:
  enabled: "no"
  https_keypairs: []
  https_keypairs_reload_interval: 0s
  acme: {}
auth_service:
  enabled: "no"

Licencia

MIT / BSD

Información del Autor

Este rol fue creado en 2021 por Matthew Draws para KPM Power

Mantenedores

Acerca del proyecto

An ansible role to install or update the teleport node service and teleport config on Debian based systems.

Instalar
ansible-galaxy install mdsketch.teleport
Licencia
mit
Descargas
19.6k
Propietario