teleport

Ansible Роль: Служба узла Teleport

Ansible Galaxy Ansible Lint molecule_tests

Эта 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

Ответственные лица

О проекте

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

Установить
ansible-galaxy install mdsketch/ansible-teleport
Лицензия
mit
Загрузки
17586
Владелец