teleport
Ansible Роль: Служба узла Teleport
Эта Ansible роль предназначена для установки или обновления службы узла Teleport и конфигурации Teleport на системах на базе Debian.
Работает с любой архитектурой, для которой доступен бинарный файл Teleport. Посмотрите доступные ссылки для загрузки Teleport.
Если вы добавите свой собственный шаблон конфигурационного файла Teleport, вы сможете запускать любые службы узлов, которые хотите (ssh, приложения, базы данных, Kubernetes).
Пожалуйста, ознакомьтесь с документацией по конфигурации Teleport для получения дополнительной информации и убедитесь, что она настроена правильно.
Задачи:
- добавить тесты идемпотентности для проверки правильности обновления Teleport (конфигурация, служба и бинарный файл)
- добавить тесты для шаблонов переменных
- зафиксировать версии инструментов линтинга
- выяснить, полезно ли устанавливать Teleport в контейнере Docker (в настоящее время не поддерживается)
Требования
Работающий кластер Teleport, чтобы вы могли предоставить следующую информацию:
- токен аутентификации (динамический или статический). Пример:
tctl nodes add --ttl=5m --roles=node | grep "invite token:" | grep -Eo "[0-9a-z]{32}"
- CA pin
- адрес сервера аутентификации
Переменные роли
Это переменные по умолчанию с их значениями, как указано в defaults/main.yml
.
teleport_version
Версия Teleport для установки. См. ссылки для загрузки Teleport для доступных версий.
teleport_architecture
Измените teleport_architecture
на одну из следующих:
arm-bin
, если вы работаете на устройствах с ARMv7 (32-бит).arm64-bin
, если вы работаете на устройствах с ARM64/ARMv8 (64-бит).amd64-bin
, если вы работаете на устройствах с x86_64/AMD64.386-bin
, если вы работаете на устройствах с i386/Intel.
teleport_config_template
Шаблон для конфигурационного файла Teleport. По умолчанию используется templates/default_teleport.yaml.j2
. Он содержит базовую конфигурацию, которая включает службу SSH и добавляет метку команды, отображающую время работы узла.
Доступно множество вариантов, и вы можете подставить свой шаблон и добавить любые переменные, которые хотите.
teleport_service_template
Шаблон для файла службы Teleport. По умолчанию используется templates/default_teleport.service.j2
. Вы можете подставить свой шаблон и добавить любые переменные, которые хотите.
teleport_ca_pin
CA pin для конфигурации Teleport. Это необязательно, но рекомендуется.
teleport_config_path
Путь к конфигурационному файлу Teleport. По умолчанию это /etc/teleport.yaml
.
teleport_auth_servers
Список серверов аутентификации для конфигурации Teleport. Примеры указаны в значениях по умолчанию выше.
backup_teleport_config
Создает резервную копию конфигурационного файла Teleport перед его перезаписью. По умолчанию yes
. См. Обновление Teleport для получения дополнительной информации.
teleport_control_systemd
По умолчанию yes
. Контролирует, изменяет ли эта роль службу Teleport.
teleport_template_config
По умолчанию yes
. Контролирует, изменяет ли эта роль конфигурационный файл Teleport.
Обновление Teleport
Когда роль запускается, она проверяет, соответствует ли установленная версия версии, указанной в teleport_version
. Если они различаются, она загрузит последнюю версию и установит ее.
При выполнении обновления будет создана резервная копия текущего конфигурационного файла в teleport_config_path
, и на его месте будет создан новый конфигурационный файл. При этом токен аутентификации (teleport_auth_token
) и CA pin (teleport_ca_pin
) предоставлять не нужно, так как они извлекаются из существующего конфигурационного файла и затем подставляются в новый конфигурационный файл.
Это позволяет обновлять значения в конфигурационном файле, такие как метки и команды, не храня токен аутентификации и CA pin.
Эта роль перезагрузит teleport.service
, когда произойдет одно из следующих событий:
- Teleport установлен или обновлен
- Конфигурационный файл Teleport обновлен
- Файл службы Teleport обновлен
Зависимости
Нет
Пример плейбука
Например, чтобы установить Teleport на узел:
- hosts: all
roles:
- mdsketch.teleport
vars:
# необязательные метки ssh
teleport_ssh_labels:
- k: "label_key"
v: "label_value"
teleport_auth_token: "супер секретный токен аутентификации"
teleport_ca_pin: "не такой уж секретный ca pin"
teleport_auth_server: "север аутентификации"
teleport_proxy_server: "прокси-сервер"
Создана конфигурация Teleport по пути /etc/teleport.yaml
---
version: v3
teleport:
auth_token: "супер секретный токен аутентификации"
ca_pin: "не такой уж секретный ca pin"
auth_server: север аутентификации
proxy_server: прокси-сервер
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"
Лицензия
MIT / BSD
Информация об авторе
Эта роль была создана в 2021 году Мэтью Дроусом для KPM Power
Ответственные лица
- Мэтью Дроус: mdsketch
An ansible role to install or update the teleport node service and teleport config on Debian based systems.
ansible-galaxy install mdsketch/ansible-teleport