mdsketch.teleport
Ansible Rolle: Teleport Node Dienst
Eine Ansible Rolle, um den Teleport Node Dienst und die Teleport-Konfiguration auf Debian-basierten Systemen zu installieren oder zu aktualisieren.
Funktioniert mit jeder Architektur, für die Teleport eine Binärdatei hat. Siehe verfügbare Teleport-Downloads.
Wenn Sie Ihre eigene Vorlage für die Teleport-Konfigurationsdatei hinzufügen, können Sie beliebige Node-Dienste wie (SSH, App, Datenbank, Kubernetes) betreiben.
Bitte überprüfen Sie die Teleport-Konfigurationsdatei Dokumentation für weitere Informationen und bestätigen Sie, dass sie korrekt eingerichtet ist.
TODO:
- Fügen Sie Idempotenztests hinzu, um zu überprüfen, ob Teleport korrekt aktualisiert wird (Konfiguration, Dienst und Binärdatei).
- Tests für die Variablen-Templatisierung hinzufügen.
- Versionen der Linting-Tools festlegen.
- Untersuchen, ob die Installation von Teleport in einem Docker-Container nützlich ist (derzeit nicht unterstützt).
Anforderungen
Ein laufender Teleport-Cluster, damit Sie die folgenden Informationen bereitstellen können:
- Auth-Token (dynamisch oder statisch). Beispiel:
tctl nodes add --ttl=5m --roles=node | grep "invite token:" | grep -Eo "[0-9a-z]{32}"
- CA-Pin
- Adresse des Authentifizierungsservers
Rollenvariablen
Dies sind die Standardvariablen mit ihren Standardwerten, wie in defaults/main.yml
definiert:
teleport_version
Die Version von Teleport, die installiert werden soll. Siehe Teleport-Downloads für verfügbare Versionen.
teleport_architecture
Ändern Sie teleport_architecture
zu einer der folgenden:
arm-bin
, wenn Sie auf ARMv7 (32-Bit) basierten Geräten arbeiten.arm64-bin
, wenn Sie auf ARM64/ARMv8 (64-Bit) basierten Geräten arbeiten.amd64-bin
, wenn Sie auf x86_64/AMD64 basierten Geräten arbeiten.386-bin
, wenn Sie auf i386/Intel basierten Geräten arbeiten.
teleport_config_template
Die Vorlage, die für die Teleport-Konfigurationsdatei verwendet werden soll. Der Standardwert ist templates/default_teleport.yaml.j2
. Sie enthält eine grundlegende Konfiguration, die den SSH-Dienst aktiviert und ein Kommandoetikett zur Anzeige der Node-Uptime hinzufügt.
Es gibt viele verfügbare Optionen und Sie können Ihre eigene Vorlage verwenden und beliebige Variablen hinzufügen.
teleport_service_template
Die Vorlage, die für die Teleport-Dienstdatei verwendet werden soll. Der Standardwert ist templates/default_teleport.service.j2
. Sie können Ihre eigene Vorlage verwenden und beliebige Variablen hinzufügen.
teleport_ca_pin
Der CA-Pin, der für die Teleport-Konfiguration verwendet werden soll. Dies ist optional, aber empfohlen.
teleport_config_path
Der Pfad zur Teleport-Konfigurationsdatei. Der Standardwert ist /etc/teleport.yaml
.
teleport_auth_servers
Die Liste der Authentifizierungsserver, die für die Teleport-Konfiguration verwendet werden sollen. Beispiele sind oben als Standardwerte angezeigt.
backup_teleport_config
Führt ein Backup der Teleport-Konfigurationsdatei durch, bevor sie überschrieben wird. Der Standardwert ist ja
. Siehe Teleport aktualisieren für weitere Informationen.
teleport_control_systemd
Standard ist ja
. Steuert, ob diese Rolle den Teleport-Dienst ändert.
teleport_template_config
Standard ist ja
. Steuert, ob diese Rolle die Teleport-Konfigurationsdatei ändert.
Teleport aktualisieren
Wenn die Rolle ausgeführt wird, prüft sie, ob die installierte Version mit der in teleport_version
angegebenen Version übereinstimmt. Wenn nicht, wird die neueste Version heruntergeladen und installiert.
Bei einem Upgrade wird ein Backup der aktuellen Konfigurationsdatei im teleport_config_path
erstellt und eine neue Konfigurationsdatei an ihrer Stelle templatisiert. Bei dieser Vorgehensweise müssen kein teleport_auth_token
und teleport_ca_pin
bereitgestellt werden, da sie aus der vorhandenen Konfigurationsdatei übernommen und dann in die neue Konfigurationsdatei eingefügt werden.
Dies ermöglicht es Ihnen, Werte in der Konfigurationsdatei wie Labels und Befehle zu aktualisieren, ohne das Auth-Token und den CA-Pin speichern zu müssen.
Diese Rolle lädt teleport.service
neu, nachdem eines der folgenden Ereignisse stattgefunden hat:
- Teleport wurde installiert oder aktualisiert
- Die Teleport-Konfigurationsdatei wurde aktualisiert
- Die Teleport-Dienstdatei wurde aktualisiert
Abhängigkeiten
Keine
Beispiel-Playbook
Zum Beispiel, um Teleport auf einem Node zu installieren:
- hosts: all
roles:
- mdsketch.teleport
vars:
# optionale SSH-Labels
teleport_ssh_labels:
- k: "label_key"
v: "label_value"
teleport_auth_token: "super geheim auth token"
teleport_ca_pin: "nicht so geheimer ca pin"
teleport_auth_server: "auth server"
teleport_proxy_server: "proxy server"
Erstellte Teleport-Konfiguration in /etc/teleport.yaml
---
version: v3
teleport:
auth_token: "super geheim auth token"
ca_pin: "nicht so geheimer ca pin"
auth_server: auth server
proxy_server: proxy server
log:
output: stderr
severity: INFO
format:
output: text
diag_addr: ""
ssh_service:
enabled: "ja"
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: "nein"
https_keypairs: []
https_keypairs_reload_interval: 0s
acme: {}
auth_service:
enabled: "nein"
Lizenz
MIT / BSD
Autoreninformationen
Diese Rolle wurde 2021 von Matthew Draws für KPM Power erstellt.
Betreuer
- 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