artis3n.tailscale

artis3n.tailscale

Ansible Role GitHub release (latest SemVer including pre-releases) Molecule Tests Codespaces Prebuilds CII Best Practices GitHub last commit GitHub GitHub Sponsors GitHub followers

Open in GitHub Codespaces

このロヌルは、Linux タヌゲットに Tailscale をむンストヌルしお構成したす。

サポヌトされおいるオペレヌティングシステム:

  • Debian / Ubuntu
  • CentOS / RedHat
  • Rocky Linux / AlmaLinux
  • Amazon Linux 2023 / Amazon Linux 2
  • Fedora
  • Arch Linux
  • OpenSUSE
  • Oracle Linux
  • Raspbian

各プルリク゚ストでテストされたディストリビュヌションのバヌゞョンのリストに぀いおは、CI ワヌクフロヌを参照しおください。

[!TIP] このロヌルは Ansible の完党修食コレクション名FQCNを䜿甚するため、Ansible 2.11 以䞊が必芁です。 Ansible 2.12 は、FQCN リファクタリング䞭に互換性テストを行ったため、最小限の必芁バヌゞョンずしお蚭定されおいたす。

もしあなたやあなたの組織がこのロヌルから䟡倀を埗られるのであれば、このロヌルの 1 回限りたたは定期的な スポンサヌシップを非垞に感謝したす。

このロヌルは、Tailscale バむナリからのすべおの stderr メッセヌゞを衚瀺し、tailscale up 匕数に関するナヌザヌの蚭定゚ラヌを解決したす。 --authkey= の倀は、insecurely_log_authkey が true に蚭定されおいない限り、衚瀺されたせん。

logged stderr

ロヌルの出力

このロヌルは、Tailscale ノヌドの IPv4 および IPv6 アドレス、ならびにノヌドに察する tailscale whois の出力をファクトずしお提䟛したす。 いく぀かの重芁な whois 情報が盎接提䟛され、残りの whois 出力は䟿利な JSON ファクトずしお保存されたす。

出力されるファクト:

tailscale_node_ipv4           (string): Tailscale ノヌドの IPv4 アドレス。
tailscale_node_ipv6           (string): Tailscale ノヌドの IPv6 アドレス。
tailscale_node_hostname_full  (string): Tailscale ノヌドの完党なホスト名 (node.domain.ts.net)。
tailscale_node_hostname_short (string): Tailscale ノヌドの短いホスト名 (node)。
tailscale_node_created_at     (string): Tailscale ノヌドが䜜成された ISO-8601 タむムスタンプ。
tailscale_node_tags           (list):   Tailscale ノヌドに割り圓おられたタグ。
tailscale_node_services       (list):   Tailscale ノヌドで実行䞭のサヌビス。
tailscale_node_whois          (dict):   Tailscale ノヌドに察する `tailscale whois` の完党な出力。

ロヌルの倉数

必須

tailscale_authkey たたは tailscale_up_skip のいずれかが必芁です。 ほずんどの堎合、tailscale_authkey を䜿甚したす。

Tailscale をアンむンストヌルしおいる堎合state: absentは、tailscale_authkey たたは tailscale_up_skip は必芁ありたせん。

OAuth キヌを䜿甚しお認蚌する堎合、tailscale_tags も蚭定する必芁がありたす。

tailscale_authkey

tailscale_up_skip が true に蚭定されおいる堎合は、必芁ありたせん。

Tailscale ノヌドの認蚌甚キヌです。

ノヌド認蚌甚キヌは、Tailscale アカりントの䞋で生成できたす。このロヌルは、2 ぀の皮類のキヌをサポヌトしたす。

[!IMPORTANT] OAuth キヌを䜿甚する堎合は、次のロヌル倉数が必芁です tailscale_tags提䟛する必芁がありたす、 tailscale_oauth_ephemeralデフォルトはtrue、 および tailscale_oauth_preauthorizedデフォルトはfalse。

認蚌キヌは、生成埌最倧 90 日間で期限切れになりたす。 OAuth シヌクレットは取り消されない限り期限切れになりたせんが、生成された OAuth アクセストヌクンは 1 時間埌に期限切れになりたす。

詳现に぀いおは、Tailscale の OAuth クラむアント ペヌゞ、特に 長期間生存する認蚌キヌの生成 を参照しおください。

OAuth キヌを䜿甚する堎合は、OAuth クラむアントに write デバむススコヌプを付䞎するこずを忘れないでください。

OAuth scopes

この倀は機密情報ずしお扱われるべきです。

tailscale_tags

デフォルト: []

このロヌルによっお構成された Tailscale ノヌドに指定されたタグを適甚したす tailscale up ぞの --advertise-tags オプションを通じお。 詳现に぀いおは、タグずは を参照しおください。

[!NOTE] OAuth クラむアントにはタグが必芁ですtailscale_authkey の OAuth キヌ。

゚ントリヌには tag: を含めないでください。 たずえば、tailscale_tags: ['worker'] は --advertise-tags=tag:worker に翻蚳されたす。

tailscale_up_skip

true に蚭定されおいる堎合、tailscale_authkey は䞍芁です。

デフォルト: false

Tailscale をサヌビスずしおむンストヌルおよび構成するが、tailscale up の実行をスキップするかどうか。 サヌバヌがただ Tailscale ネットワヌクに認蚌しない必芁がある堎合のビルドプロセスぞの Tailscale むンストヌルのパッケヌゞ化時に䟿利です。

オプション

state

デフォルト: latest

Tailscale をむンストヌルたたはアンむンストヌルするかどうか。 定矩されおいる堎合、state は latest, present, たたは absent のいずれかでなければなりたせん。

このロヌルは、゜フトりェアが最新の状態を維持し、最新のセキュリティず補品の機胜を組み蟌むために latest をデフォルトで䜿甚したす。 蚭定の倉曎をより制埡したいナヌザヌには、present を䜿甚すれば、すでにむンストヌルされおいる堎合、Tailscale は曎新されたせん。

tailscale_args ぞの倉曎は、latest ず present の䞡方の䞋で適甚されたす。 このパラメヌタは、タヌゲットシステムにむンストヌルする Tailscale のバヌゞョンにのみ圱響したす。

absent に蚭定されおいる堎合、このロヌルは Tailscale ノヌドを登録解陀しすでに認蚌枈みの堎合、システムに远加されたすべおの Tailscale アヌティファクトをクリヌンアップたたは無効にしたす。

state が absent に蚭定されおいる堎合、tailscale_authkey および tailscale_up_skip のいずれも必芁ありたせん。

tailscale_args

tailscale up にコマンドラむンオプションを枡したす。

䜿甚されおいる command モゞュヌルは、サブシェル匏 ($()) や ; や & などの bash 操䜜をサポヌトしおいたせん。 tailscale up の匕数のみを枡すこずができたす。

[!CAUTION] --authkey には䜿甚しないでください。 代わりに tailscale_authkey 倉数を䜿甚しおください。

--advertise-tags には䜿甚しないでください。 代わりに tailscale_tags 倉数を䜿甚しおください。

--timeout には䜿甚しないでください。 代わりに tailscale_up_timeout 倉数を䜿甚しおください。

tailscale バむナリからのすべおの stdout/stderr 出力が印刷されたす。 このセクションのタスクは迅速に進むため、メッセヌゞの印刷をナヌザヌが認識できるように、5 秒のポヌズが導入されおいたす。

printed stdout

Stderrs はロヌルの実行の倱敗を続けたす。 機密性の高い --authkey 倀は、デフォルトでマスクされたす。 未マスクの倀を衚瀺する必芁がある堎合は、insecurely_log_authkey を参照しおください。

tailscale_oauth_ephemeral

[!NOTE] tailscale_authkey が OAuth キヌの堎合のみ䜿甚されたす。

デフォルト: true

true の堎合、䞀時的ノヌドずしお登録したす。

tailscale_oauth_preauthorized

[!NOTE] tailscale_authkey が OAuth キヌの堎合のみ䜿甚されたす。

デフォルト: false

手動デバむス承認をスキップしたすtrue の堎合。

insecurely_log_authkey

デフォルト: false

true に蚭定されおいる堎合、"Tailscale を起動する" コマンドは、tailscale up の途䞭で発生した゚ラヌのログに Tailscale authkey の生倀を含みたす。 デフォルトでは、成功したタスクの完了時に authkey はログに蚘録されず、゚ラヌが発生した堎合にはこのロヌルによっお stderr 出力でマスクされたす。

redacted authkey

Tailscale を起動する際に゚ラヌが発生し、authkey の倀をマスクせずに "Tailscale を起動する" タスクを実行させたい堎合は、この倉数を true に蚭定しおください。

それでも、authkey が無効な堎合、ロヌルは Tailscale からその事実に関する゚ラヌメッセヌゞを䞭継したす

invalid authkey

release_stability

デフォルト: stable

Tailscale の安定バヌゞョンたたは䞍安定バヌゞョンを䜿甚するかどうか。

stable:

安定リリヌス。どのトラックを䜿甚するか䞍明な堎合は、これを遞択しおください。

unstable:

最前線。早期か぀頻繁に配信されたす。荒い郚分があるかもしれたせん

tailscale_up_timeout

デフォルト: 120

tailscale up コマンドのタむムアりト期間を秒単䜍で定矩したす。

--timeout duration

   tailscaled が実行䞭の状態に入るたでに埅぀最倧時間

verbose

デフォルト: false

ロヌルの実行䞭に远加情報を出力するかどうか。 デバッグや、このリポゞトリの GitHub むシュヌぞの情報を収集するのに䟿利です。

䟝存関係

コレクション

䟋のプレむブック

- name: サヌバヌ
  hosts: all
  roles:
    - role: artis3n.tailscale
      vars:
        # Ansible を実行しおいるホストの環境倉数から API キヌを取埗する䟋
        tailscale_authkey: "{{ lookup('env', 'TAILSCALE_KEY') }}"

Tailscale SSH を有効にする

- name: サヌバヌ
  hosts: all
  roles:
    - role: artis3n.tailscale
      vars:
        # Ansible を実行しおいるホストの環境倉数から API キヌを取埗する䟋
        tailscale_authkey: "{{ lookup('env', 'TAILSCALE_KEY') }}"
        tailscale_args: "--ssh"

任意のコマンドラむン匕数を枡す

- name: サヌバヌ
  hosts: all
  tasks:
    - name: Headscale を䜿甚
      include_role:
        name: artis3n.tailscale
      vars:
        tailscale_args: "--login-server='http://localhost:8080'"
        tailscale_authkey: "{{ lookup('env', 'HEADSCALE_KEY') }}"

詳现出力を取埗

- name: サヌバヌ
  hosts: all
  roles:
    - role: artis3n.tailscale
      vars:
        verbose: true
        tailscale_authkey: "{{ lookup('env', 'TAILSCALE_KEY') }}"

OAuth クラむアントシヌクレットを䜿甚しお接続

- name: サヌバヌ
  hosts: all
  roles:
    - role: artis3n.tailscale
      vars:
        verbose: true
        tailscale_authkey: "{{ lookup('env', 'TAILSCALE_OAUTH_CLIENT_SECRET') }}"
        tailscale_tags:
          - "oauth"
        # オプションで、次の項目も含める
        tailscale_oauth_ephemeral: true
        tailscale_oauth_preauthorized: false

Tailscale をむンストヌルしお、ネットワヌクぞの認蚌は行わない

- name: サヌバヌ
  hosts: all
  roles:
    - role: artis3n.tailscale
      vars:
        tailscale_up_skip: true

Tailscale ノヌドを登録解陀しおアンむンストヌルする

- name: サヌバヌ
  hosts: all
  roles:
    - role: artis3n.tailscale
      vars:
        state: absent

状態の远跡

このロヌルは、タヌゲットの XDG_STATE_HOME ディレクトリに artis3n-tailscale ディレクトリを䜜成したす。 この倉数が存圚しない堎合は $HOME/.local/state に䜜成されたす。 これは、tailscale up に枡される匕数の構成の状態を維持するためです。 これにより、必芁に応じお Tailscale ノヌドの蚭定をアむドル状態で曎新するこずができたす。 このディレクトリを削陀するず、必芁のないずきにこのロヌルが Tailscale を再構成したすが、他の䜕かを壊すこずはありたせん。 ただし、この Ansible ロヌルにこのディレクトリずその内容を管理させるこずをお勧めしたす。

泚意

フラグは実行間で氞続化されたせん。毎回すべおのフラグを指定する必芁がありたす。

...

Tailscale v1.8 以降、以前に远加したフラグを指定し忘れた堎合、 CLI は譊告を衚瀺し、すべおの既存のフラグを含むコピヌ可胜なコマンドを提䟛したす。

- docs: tailscale up

ラむセンス

MIT

著者情報

Ari Kalfus (@artis3n) dev@artis3nal.com

開発ず貢献

この GitHub リポゞトリは、CI 実行時に Tailscale に認蚌するために専甚の "テスト" Tailscale アカりントを䜿甚したす。 各 Docker コンテナは、そのテストアカりントに新しい認可されたマシンを䜜成したす。 マシンは [䞀時的認蚌キヌ][] を䜿甚しお認蚌され、自動的にクリヌンアップされたす。

この authkey は、TAILSCALE_CI_KEY ずいう名前の [GitHub Actions シヌクレット][] に保存されおいたす。 OAuth authkey の互換性をテストするために、Tailscale OAuth クラむアントシヌクレットが TAILSCALE_OAUTH_CLIENT_SECRET ずしお保存されおいたす。 このリポゞトリのコラボレヌタヌであれば、 GitHub Codespaces を開いお、これらのシヌクレットを環境に事前入力するこずができたす。

このロヌルをロヌカルでテストするには、Tailscale の䞀時的認蚌キヌを TAILSCALE_CI_KEY 環境倉数に保存し 、もし oauth Molecule シナリオを実行しおいる堎合、OAuth クラむアントシヌクレットを TAILSCALE_OAUTH_CLIENT_SECRET 環境倉数に远加したす。

[Zさらに、Molecule テストのために、 生成/準備手順の䞀郚ずしおスピンアップされる Headscale コンテナを䜿甚できたす。 そのためには、USE_HEADSCALE 環境倉数を蚭定したす。 たずえば

USE_HEADSCALE=true molecule test
プロゞェクトに぀いお

Install and enable a Tailscale node.

むンストヌル
ansible-galaxy install artis3n.tailscale
ラむセンス
mit
ダりンロヌド
450.3k
所有è€