mdsketch.teleport
Ansibleロール: Teleportノードサービス
これは、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_token
とteleport_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のために作成されました。
メンテナ
- 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