jamdoog.teleport

Ansibleロール: Teleport

このロールは、指定したサーバーにTeleportをデプロイします。

何をするか:

Teleportのデプロイメントがどの部分を必要とするかを変数で設定できます。

  • GPGチェックを行ってDEB/RPM経由でTeleportをインストール
  • GPGチェックを行ってtarballからTeleportをインストール(apt/rpmシステム以外)
  • SSH用のノードとして自動的に登録
  • SSHおよびアプリケーションのための「コマンド」/ラベルを自動デプロイ(Kernel、Teleportなどのバージョン管理)
  • 招待トークンを自動生成

要件

systemdを利用しているシステム 以下のOSでのみテストされています:

Debian 10/11
RHEL 7/8/9
openSUSE 15.0/1/2/3/Tumbleweed

トークン生成の仕組み:

  • JSONフォーマットでtctlコマンドを使用してトークンを生成
  • トークンを抽出
  • 「INVITE_TOKEN」変数を更新

トークン生成機能の使い方:

以下の変数を記入してください:

GENERATE_TOKEN: true # トークン生成を開始するために必要
GENERATE_TOKEN_COMBO: true # アプリとノードの両方のトークンを生成したい場合。この変数は以下の「GENERATE_TOKEN_<....>_ONLY」変数と併用しないでください。
GENERATE_TOKEN_SSH_ONLY: false # ノードトークンのみを生成したい場合
GENERATE_TOKEN_APP_ONLY: false # アプリトークンのみを生成したい場合
TELEPORT_TOKEN_HOST: "Jump" # tctlが実行されるホスト(SSH経由)
TOKEN_TTL: "2m" # トークンのTTL(有効期間)

ロール変数

グループ変数:

名前 タイプ
INVITE_TOKEN 文字列 4f622402dawdawdaw
CA_PIN 文字列 sha256:2awdwadwad678767awd768awdd
TELEPORT_HOST 文字列 teleport.domain.tld:443
TELEPORT_MAJOR_VERSION 整数 10
TELEPORT_MINOR_VERSION 浮動小数点 3.5
GENERATE_TOKEN 真偽値 true
GENERATE_TOKEN_COMBO 真偽値 true
GENERATE_TOKEN_SSH_ONLY 真偽値 false
GENERATE_TOKEN_APP_ONLY 真偽値 false
TELEPORT_TOKEN_HOST 文字列 "Jump"
TOKEN_TTL 文字列 "10m"

ホスト変数:

名前 タイプ
SSH_SERVICE 真偽値 true
APP_SERVICE 真偽値 true
CREATE_SSH_COMMANDS 真偽値 true
CREATE_APP_COMMANDS 真偽値 true
CREATE_COMMAND 真偽値 true
CREATE_OS_COMMAND 真偽値 true
CREATE_KERNEL_COMMAND 真偽値 true
CREATE_TELEPORT_COMMAND 真偽値 true
CREATE_HOSTNAME_COMMAND 真偽値 true
CREATE_VIRTUALIZATION_COMMAND 真偽値 true
TELEPORT_APPLICATION_NAME 文字列 proxmox
TELEPORT_APPLICATION_IGNORE_TLS 文字列 true
TELEPORT_APPLICATION_URI 文字列 https://192.168.200.1:8006

依存関係

このロールには依存関係はありません

例のプレイブック

プレイブック(トークン非生成):

- hosts: teleport
  become: true
  roles:
    - jamdoog.teleport
  vars:
    - INVITE_TOKEN: 4f622402dawdawdaw
    - CA_PIN: sha256:2awdwadwad678767awd768awdd
    - TELEPORT_HOST: domain.tld:443
    - TELEPORT_MINOR_VERSION: 3.2
    - TELEPORT_MAJOR_VERSION: 10
    - SSH_SERVICE: true
    - APP_SERVICE: true
    - CREATE_COMMANDS: true 
    - CREATE_HOSTNAME_COMMAND: true 
    - CREATE_OS_COMMAND: true
    - CREATE_KERNEL_COMMAND: true
    - CREATE_TELEPORT_COMMAND: true
    - CREATE_VIRTUALIZATION_COMMAND: true
    - TELEPORT_APPLICATION_NAME: "proxmox"
    - TELEPORT_APPLICATION_IGNORE_TLS: true
    - TELEPORT_APPLICATION_URI: "https://192.168.200.1:8006"

プレイブック(トークン生成):

- hosts: teleport
  become: true
  roles:
    - jamdoog.teleport
  vars:
    - GENERATE_TOKEN: true
    - GENERATE_TOKEN_COMBO: true
    - GENERATE_TOKEN_SSH_ONLY: false
    - GENERATE_TOKEN_APP_ONLY: false
    - TELEPORT_TOKEN_HOST: "Jump"
    - TOKEN_TTL: "2m"
    - CA_PIN: sha256:2awdwadwad678767awd768awdd
    - TELEPORT_HOST: domain.tld:443
    - TELEPORT_MINOR_VERSION: 3.2
    - TELEPORT_MAJOR_VERSION: 10
    - SSH_SERVICE: true
    - APP_SERVICE: true
    - CREATE_COMMANDS: true 
    - CREATE_HOSTNAME_COMMAND: true 
    - CREATE_OS_COMMAND: true
    - CREATE_KERNEL_COMMAND: true
    - CREATE_TELEPORT_COMMAND: true
    - CREATE_VIRTUALIZATION_COMMAND: true
    - TELEPORT_APPLICATION_NAME: "proxmox"
    - TELEPORT_APPLICATION_IGNORE_TLS: true
    - TELEPORT_APPLICATION_URI: "https://192.168.200.1:8006"

ライセンス

BSD

著者情報

このロールはJames Ledgerによって作成されました。私はhttps://jamesledger.netで情報を発信しています。

プロジェクトについて

A ansible role to automatically deploy a node as a teleport instance

インストール
ansible-galaxy install jamdoog.teleport
ライセンス
bsd-3-clause
ダウンロード
1.2k
所有者