はじめに
- 筆者は現在、社内のGitリポジトリ基盤として GitHub Enterprise Server の導入検証をしています
- その中で、ライセンスの同期を主な目的として GitHub Connect などの調査や設定を進めており、その結果を基に情報をまとめています
構成
大まかな構成としては以下。
- EMU(Enterprise Managed User)でCloud版のユーザを発行
- Cloud版 を Server版 と GitHub Connect で連携し、ライセンス利用状況を同期できる状態に
- 主に開発面で利用するのは Server版 の予定
ユーザについて
Cloud版へのアクセス管理方法として、
- 個人用アカウントにアクセス権を付与する方法
- EMU(Enterprise Managed User)を、IdP経由で発行する方法
などがありますが、今回の話は後者を前提としています。
なお、「ユーザーの発行方法」と「ライセンス数の管理」は独立した仕組みです。どちらの方式であろうと、ライセンスキー発行やseat数のカウントにおける影響はありません。(ライセンスキーやseat数に関しては後述)
ライセンスモデルについて
GitHub Enterprise のライセンスモデルには、
- GHE(従量課金制)
- GHE(ボリューム/サブスクリプション、GHE Unified)
という2種類がありますが、今回の話は前者を前提としています。
後者の場合は、Cloud版のコンソールからではなく、GitHubセールスからライセンスキーを頂く形となります。
GitHub Connect とは何か?
そもそも、GitHub Connect についてご存じない方も多いと思います。
GitHub Connect を使用することで、Cloud版とServer版を連携することができます。
GitHub Connect を有効にしたら、どの機能を有効にするかを選べます。 たとえば、次のようなことができます。
- 環境間でライセンスの利用状況を自動的に同期する
- 検索結果とユーザー コントリビューション データを統合する
- GitHub.com に依存する機能を有効にする。これには、GitHub Advisory Database で追跡されるセキュリティの脆弱性に対する Dependabot alerts などが含まれます。
実際に困ったことやポイントの紹介
ライセンス管理で発生した課題
GitHub Enterpriseでは、ユーザーを「seat数」という単位で管理しています。当初は「Server版でユーザ発行をして、Cloud版とGitHub Connectで繋げるだけ(Cloud版ではユーザを発行する必要はない)」という理解でしたが、実際には以下の手順が必要であることが判明しました
- Cloud版でユーザ発行(Server版と同様のユーザ数)
- そのユーザ数(seat数)に基づいた、Server版用のライセンスキーの発行
- ライセンスキーをServer版に適用
という手順が必要であることが判明しました。
具体的なライセンスキーのダウンロード方法については、以下ドキュメントに記載があります。
なお、ライセンスの仕様に関しては以下ドキュメントが参考になります。
Cloud版でのライセンスキーの発行について
ライセンスキーを発行する際には、1つ注意点があります。
Cloud版でライセンスキーを発行する際には、お使いのCloud版にOrganizationの作成が必要という点です。
これは、Organizationが存在しない場合、Enterprise所属のユーザーが存在しないためライセンスキーを発行できない仕様と考えられます。
もし「Cloud版はライセンス数把握を目的として使うので、Cloud版側での手間を増やしたくない」といった場合は、Server版からファイルアップロードする手段もあります。
GitHub Connectを有効化したくない場合は、GitHub Enterprise ServerからファイルをGitHub.comにアップロードすることによって、手動でライセンスの利用状況を同期できます。
参考文献
その他、GitHub Connect や EMU に関しては以下の記事も参考にさせていただきました。