mdsketch.teleport

Ansibleロール: Teleportノードサービス

Ansible Galaxy Ansible Lint molecule_tests

これは、DebianベースのシステムにTeleportノードサービスとTeleport設定をインストールまたは更新するためのAnsibleロールです。

Teleportのバイナリがあるアーキテクチャで動作します。利用可能なTeleportダウンロードを参照してください。

独自のTeleport設定ファイルテンプレートを追加すれば、任意のノードサービス(ssh、アプリ、データベース、Kubernetes)を実行できます。

Teleport設定ファイルのドキュメントを確認し、正しく設定されていることを確認してください。

TODO:

  • Teleportが正しく更新されたかを検証する冪等性テストを追加する(設定、サービス、バイナリ)
  • 変数テンプレートのテストを追加する
  • Lintツールのバージョンを固定する
  • Dockerコンテナ内でTeleportをインストールすることが有用かを調査する(現在はサポートされていません)

要件

次の情報を提供できる実行中のTeleportクラスターが必要です。

  • 認証トークン(動的または静的)。例: tctl nodes add --ttl=5m --roles=node | grep "invite token:" | grep -Eo "[0-9a-z]{32}"
  • CAピン
  • 認証サーバーのアドレス

ロール変数

これらは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

Teleport設定に使用するCAピン。これはオプションですが、推奨されています。

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_tokenteleport_ca_pinを提供する必要はなく、既存の設定ファイルから取得して新しい設定ファイルにテンプレート化されます。

これにより、認証トークンやCAピンを保存することなく、設定ファイル内のラベルやコマンドの値を更新できます。

このロールは、以下のいずれかが発生した後に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ピン"
    teleport_auth_server: "認証サーバー"
    teleport_proxy_server: "プロキシサーバー"

Teleport設定を/etc/teleport.yamlに作成しました

---
version: v3
teleport:
  auth_token: "超秘密の認証トークン"
  ca_pin: "あまり秘密ではないCAピン"
  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年にMatthew DrawsによってKPM Powerのために作成されました。

メンテナ

プロジェクトについて

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

インストール
ansible-galaxy install mdsketch.teleport
ライセンス
mit
ダウンロード
19.6k
所有者