mdsketch.teleport
Rol de Ansible: Servicio de Nodo Teleport
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
- Matthew Draws: mdsketch
An ansible role to install or update the teleport node service and teleport config on Debian based systems.
ansible-galaxy install mdsketch.teleport