Google Cloud環境
Citrix Virtual Apps and Desktopsを使用すると、Google Cloudでマシンをプロビジョニングおよび管理できます。この記事では、Machine Creation Services(MCS)を使用して、Citrix Virtual AppsまたはCitrix Virtual Desktopsサービス展開で仮想マシンをプロビジョニングする方法を説明します。
要件
- Citrix Cloudアカウント。この記事で説明する機能は、Citrix Cloudでのみ使用できます。
- Citrix DaaSサブスクリプション。詳しくは、「はじめに」を参照してください。
- Google Cloudプロジェクト。このプロジェクトには、マシンカタログに関連付けられたすべてのコンピューティングリソースが格納されます。既存のプロジェクトでも新しいプロジェクトでもかまいません。
- Google Cloudプロジェクトで4つのAPIを有効にします。詳しくは、「Google Cloud APIの有効化」を参照してください。
- Google Cloudサービスアカウント。サービスアカウントは、プロジェクトへのアクセスを可能にするために、Google Cloudに対して認証されます。詳しくは、「サービスアカウントの構成と更新」を参照してください。
- Googleプライベートアクセスの有効化。詳しくは、「プライベートGoogleアクセスの有効化」を参照してください。
Google Cloud APIの有効化
Citrix Virtual Apps and Desktopsの完全な構成インターフェイスでGoogle Cloud機能を使用するには、Google Cloudプロジェクトで次のAPIを有効にします:
- Compute Engine API
- Cloud Resource Manager API
- Identity and Access Management(IAM)API
- Cloud Build API
- Cloud Key Management Service(KMS)
Google Cloudコンソールから、次の手順を実行します:
-
左上隅のメニューで [APIとサービス]>[ダッシュボード] を選択します。
-
[ダッシュボード] 画面で、Compute Engine APIが有効になっていることを確認します。有効になっていない 場合、次の手順を実行します:
-
[APIとサービス]>[ライブラリ] の順に選択します。
-
検索ボックスに 「Compute Engine」 と入力します。
-
検索結果から、[Compute Engine API] を選択します。
-
[Compute Engine API] ページで、[Enable] を選択します。
-
-
Cloud Resource Manager APIを有効にします。
-
[APIとサービス]>[ライブラリ] の順に選択します。
-
検索ボックスに 「Cloud Resource Manager」 と入力します。
-
検索結果から、[Cloud Resource Manager API] を選択します。
-
[Cloud Resource Manager API] ページで、[Enable] を選択します。APIのステータスが表示されます。
-
-
同様に、[Identity and Access Management(IAM)API] および [Cloud Build API] を有効にします。
Google Cloud Shellを使用してAPIを有効にすることもできます。これを行うには、以下の手順に従います:
- Googleコンソールを開き、Cloud Shellを読み込みます。
-
Cloud Shellで次の4つのコマンドを実行します:
- gcloud services enable compute.googleapis.com
- gcloud services enable cloudresourcemanager.googleapis.com
- gcloud services enable iam.googleapis.com
- gcloud services enable cloudbuild.googleapis.com
- Cloud Shellでプロンプトが表示されたら、[Authorize] をクリックします。
サービスアカウントの構成と更新
注:
2024年4月29日、GCPはCloud Buildサービスのデフォルトの動作とサービスアカウントの使用に関する変更を導入します。詳しくは、「Cloud Buildサービスアカウントの変更」を参照してください。2024年4月29日より前にCloud Build APIが有効になっていた既存のGoogleプロジェクトは、この変更の影響を受けません。ただし、4月29日以降も既存のCloud Buildサービスの動作を継続する場合は、Cloud Build APIを有効にする前に、制約の適用を無効にする組織ポリシーを作成または適用できます。これにより、以下のコンテンツは「2024年4月29日より前」と「2024年4月29日以降」の2つに分割されます。新しい組織ポリシーを設定する場合は、「2024年4月29日より前」のセクションに従ってください。
2024年4月29日より前
Citrix Cloudは、Google Cloudプロジェクト内で次の3つの個別のサービスアカウントを使用します:
-
Citrix Cloudサービスアカウント:このサービスアカウントにより、Citrix CloudはGoogleプロジェクトにアクセスし、マシンをプロビジョニングおよび管理できます。このサービス アカウントは、Google Cloudによって生成された キー を使用してGoogle Cloudに対して認証されます。
ここで説明するように、このサービスアカウントを手動で作成する必要があります。詳しくは、「Citrix Cloudサービスアカウントの作成」を参照してください。
このサービスアカウントは、メールアドレスで識別できます。例:
<my-service-account>@<project-id>.iam.gserviceaccount.com
。 -
Cloud Buildサービスアカウント:このサービスアカウントは、「Google Cloud APIの有効化」に記載されているすべてのAPIを有効にすると自動的にプロビジョニングされます。自動的に作成されたサービスアカウントをすべて表示するには、Google Cloudコンソールで [IAM & admin]>[IAM] の順に移動し、[Google提供のロール付与を含める] チェックボックスをオンにします。
このサービスアカウントは、Project IDと、cloudbuildで始まるメールアドレスで識別できます。例:
<project-id>@cloudbuild.gserviceaccount.com
サービスアカウントに次の役割が付与されているかどうかを確認します。役割を追加する必要がある場合は、「Cloud Buildサービスアカウントへの役割の追加」で説明されている手順に従います。
- Cloud Buildサービスアカウント
- コンピューティングインスタンス管理者
- サービスアカウントユーザー
-
Cloud Computeサービスアカウント:このサービスアカウントは、Compute APIがアクティブ化されると、Google Cloudで作成されたインスタンスにGoogle Cloudによって追加されます。このアカウントには、操作を行うためのIAMの基本編集者の役割があります。ただし、より詳細な制御を行うためにデフォルトのアクセス権限を削除する場合は、次のアクセス権限を必要とする ストレージ管理者の役割を追加する必要があります:
- resourcemanager.projects.get
- storage.objects.create
- storage.objects.get
- storage.objects.list
このサービスアカウントは、Project IDと、computeで始まるメールアドレスで識別できます。例:<project-id>-compute@developer.gserviceaccount.com
。
Citrix Cloudサービスアカウントの作成
Citrix Cloudサービスアカウントを作成するには、次の手順に従います:
- Google Cloudコンソールで、[IAMと管理]>[サービスアカウント] の順に選択します。
- [Service accounts]ページで、[CREATE SERVICE ACCOUNT] を選択します。
- [Create service account] ページで必要な情報を入力してから、[CREATE AND CONTINUE] を選択します。
-
[Grant this service account access to project] ページで、[Select a role] ドロップダウンメニューをクリックし、必要な役割を選択します。役割を追加する場合は、[+ADD ANOTHER ROLE] をクリックします。
各アカウント(個人またはサービス)には、プロジェクトの管理を定義するさまざまな役割があります。このサービスアカウントに次の役割を付与します:
- コンピューティング管理者
- ストレージ管理者
- Cloud Buildエディター
- サービスアカウントユーザー
- クラウドデータストアユーザー
- Cloud KMS Crypto Operator
Cloud KMS Crypto Operatorには次の権限が必要です:
- cloudkms.cryptoKeys.get
- cloudkms.cryptoKeys.list
- cloudkms.keyRings.get
- cloudkms.keyRings.list
注:
すべてのAPIを有効にして、新しいサービスアカウントの作成中に、使用できる役割の完全な一覧を取得してください。
- [CONTINUE] をクリックします
- [Grant users access to this service account] ページでユーザーまたはグループを追加し、このサービスアカウントで操作を実行できるアクセス権をユーザーに付与します。
- [DONE] をクリックします。
- IAMメインコンソールに移動します。
- 作成されたサービスアカウントを識別します。
- 役割が正常に割り当てられていることを確認します。
注意事項:
サービスアカウントを作成するときは、次の点を考慮してください:
- [Grant this service account access to project] と Grant users access to this service account]の手順は任意です。これらのオプションの構成手順をスキップする場合、新しく作成されたサービスアカウントは [IAMと管理]>[IAM] ページには表示されません。
- サービスアカウントに関連付けられている役割を表示するには、オプションの手順をスキップせずに役割を追加します。このプロセスにより、構成されたサービスアカウントの役割が確実に表示されます。
Citrix Cloudサービスアカウントキー
Citrix DaaSで接続を作成するには、Citrix Cloudサービスアカウントキーが必要です。キーは資格情報ファイル(.json)に含まれています。キーを作成すると、ファイルが自動的にダウンロードされ、「Downloads」フォルダーに保存されます。キーを作成するときは、必ずキータイプをJSONに設定してください。それ以外の場合、Citrixの完全な構成インターフェイスでは解析できません。
サービスアカウントキーを作成するには、[IAM & Admin]>[Service accounts] に移動してCitrix Cloudサービスアカウントのメールアドレスをクリックします。[Keys] タブを選択してから、[Add Key]>[Create new key] を選択します。キーの種類として必ずJSONを選択してください。
ヒント:
Google Cloudコンソールの[Service accounts] ページを使用してキーを作成します。セキュリティのために、キーを定期的に変更することをお勧めします。既存のGoogle Cloud接続を編集することで、Citrix Virtual Apps and Desktopsアプリケーションに新しいキーを提供できます。
Citrix Cloudサービスアカウントへの役割の追加
Citrix Cloudサービスアカウントに役割を追加するには:
- Google Cloudコンソールで、[IAMと管理]>[IAM] の順に選択します。
-
[IAM]>[PERMISSIONS] ページで、作成したサービスアカウントを見つけ、メールアドレスで識別します。
例:
<my-service-account>@<project-id>.iam.gserviceaccount.com
- 鉛筆アイコンを選択して、サービスアカウントのプリンシパルへのアクセス権を編集します。
- 選択したプリンシパルオプションの [Edit access to “project-id”] ページで、[ADD ANOTHER ROLE] を選択してサービスアカウントに必要な役割を1つずつ追加し、[SAVE] を選択します。
Cloud Buildサービスアカウントへの役割の追加
Cloud Buildサービスアカウントに役割を追加するには:
- Google Cloudコンソールで、[IAMと管理]>[IAM] の順に選択します。
-
[IAM] ページで、Project IDと、cloudbuildで始まるメールアドレスで識別できるCloud Buildサービスアカウントを見つけます。
例:
<project-id>@cloudbuild.gserviceaccount.com
- 鉛筆アイコンを選択して、Cloud Buildアカウントの役割を編集します。
-
選択したプリンシパルオプションの [Edit access to “project-id”] ページで、[ADD ANOTHER ROLE] を選択してCloud Buildサービスアカウントに必要な役割を1つずつ追加し、[SAVE] を選択します。
注:
すべてのAPIを有効にして、役割の完全な一覧を取得します。
2024年4月29日以降
Citrix Cloudは、Google Cloudプロジェクト内で次の2つの個別のサービスアカウントを使用します:
-
Citrix Cloudサービスアカウント:このサービスアカウントにより、Citrix CloudはGoogleプロジェクトにアクセスし、マシンをプロビジョニングおよび管理できます。このサービス アカウントは、Google Cloudによって生成された キー を使用してGoogle Cloudに対して認証されます。
このサービスアカウントは手動で作成する必要があります。
このサービスアカウントは、メールアドレスで識別できます。例:
<my-service-account>@<project-id>.iam.gserviceaccount.com
。 -
Cloud Computeサービスアカウント:このサービスアカウントは、「Google Cloud APIの有効化」に記載されているすべてのAPIを有効にすると自動的にプロビジョニングされます。自動的に作成されたサービスアカウントをすべて表示するには、Google Cloudコンソールで [IAM & admin]>[IAM] の順に移動し、[Google提供のロール付与を含める] チェックボックスをオンにします。このアカウントには、操作を行うためのIAMの基本編集者の役割があります。ただし、より詳細な制御を行うためにデフォルトのアクセス権限を削除する場合は、次のアクセス権限を必要とする ストレージ管理者の役割を追加する必要があります:
- resourcemanager.projects.get
- storage.objects.create
- storage.objects.get
- storage.objects.list
このサービスアカウントは、Project IDと、computeで始まるメールアドレスで識別できます。例:
<project-id>-compute@developer.gserviceaccount.com.
サービスアカウントに次の役割が付与されているかどうかを確認します。
- Cloud Buildサービスアカウント
- コンピューティングインスタンス管理者
- サービスアカウントユーザー
Citrix Cloudサービスアカウントの作成
Citrix Cloudサービスアカウントを作成するには、次の手順に従います:
- Google Cloudコンソールで、[IAMと管理]>[サービスアカウント] の順に選択します。
- [Service accounts]ページで、[CREATE SERVICE ACCOUNT] を選択します。
- [Create service account] ページで必要な情報を入力してから、[CREATE AND CONTINUE] を選択します。
-
[Grant this service account access to project] ページで、[Select a role] ドロップダウンメニューをクリックし、必要な役割を選択します。役割を追加する場合は、[+ADD ANOTHER ROLE] をクリックします。
各アカウント(個人またはサービス)には、プロジェクトの管理を定義するさまざまな役割があります。このサービスアカウントに次の役割を付与します:
- コンピューティング管理者
- ストレージ管理者
- Cloud Buildエディター
- サービスアカウントユーザー
- クラウドデータストアユーザー
- Cloud KMS Crypto Operator
Cloud KMS Crypto Operatorには次の権限が必要です:
- cloudkms.cryptoKeys.get
- cloudkms.cryptoKeys.list
- cloudkms.keyRings.get
- cloudkms.keyRings.list
注:
すべてのAPIを有効にして、新しいサービスアカウントの作成中に、使用できる役割の完全な一覧を取得してください。
- [CONTINUE] をクリックします
- [Grant users access to this service account] ページでユーザーまたはグループを追加し、このサービスアカウントで操作を実行できるアクセス権をユーザーに付与します。
- [DONE] をクリックします。
- IAMメインコンソールに移動します。
- 作成されたサービスアカウントを識別します。
- 役割が正常に割り当てられていることを確認します。
注意事項:
サービスアカウントを作成するときは、次の点を考慮してください:
- [Grant this service account access to project] と Grant users access to this service account]の手順は任意です。これらのオプションの構成手順をスキップする場合、新しく作成されたサービスアカウントは [IAMと管理]>[IAM] ページには表示されません。
- サービスアカウントに関連付けられている役割を表示するには、オプションの手順をスキップせずに役割を追加します。このプロセスにより、構成されたサービスアカウントの役割が確実に表示されます。
Citrix Cloudサービスアカウントキー
Citrix DaaSで接続を作成するには、Citrix Cloudサービスアカウントキーが必要です。キーは資格情報ファイル(.json)に含まれています。キーを作成すると、ファイルが自動的にダウンロードされ、「Downloads」フォルダーに保存されます。キーを作成するときは、必ずキータイプをJSONに設定してください。それ以外の場合、Citrixの完全な構成インターフェイスでは解析できません。
サービスアカウントキーを作成するには、[IAM & Admin]>[Service accounts] に移動してCitrix Cloudサービスアカウントのメールアドレスをクリックします。[Keys] タブを選択してから、[Add Key]>[Create new key] を選択します。キーの種類として必ずJSONを選択してください。
ヒント:
Google Cloudコンソールの[Service accounts] ページを使用してキーを作成します。セキュリティのために、キーを定期的に変更することをお勧めします。既存のGoogle Cloud接続を編集することで、Citrix Virtual Apps and Desktopsアプリケーションに新しいキーを提供できます。
Citrix Cloudサービスアカウントへの役割の追加
Citrix Cloudサービスアカウントに役割を追加するには:
- Google Cloudコンソールで、[IAMと管理]>[IAM] の順に選択します。
-
[IAM]>[PERMISSIONS] ページで、作成したサービスアカウントを見つけ、メールアドレスで識別します。
例:
<my-service-account>@<project-id>.iam.gserviceaccount.com
- 鉛筆アイコンを選択して、サービスアカウントのプリンシパルへのアクセス権を編集します。
- 選択したプリンシパルオプションの [Edit access to “project-id”] ページで、[ADD ANOTHER ROLE] を選択してサービスアカウントに必要な役割を1つずつ追加し、[SAVE] を選択します。
Cloud Computeサービスアカウントに役割を追加する
Cloud Computeサービスアカウントに役割を追加するには:
- Google Cloudコンソールで、[IAMと管理]>[IAM] の順に選択します。
-
[IAM] ページで、Project IDと、computeで始まるメールアドレスで識別できるCloud Buildサービスアカウントを見つけます。
例:
<project-id>-compute@developer.gserviceaccount.com
- 鉛筆アイコンを選択して、Cloud Buildアカウントの役割を編集します。
-
選択したプリンシパルオプションの [Edit access to “project-id”] ページで、[ADD ANOTHER ROLE] を選択してCloud Buildサービスアカウントに必要な役割を1つずつ追加し、[SAVE] を選択します。
注:
すべてのAPIを有効にして、役割の完全な一覧を取得します。
ストレージ権限とバケットの管理
Citrix DaaSは、Google Cloudサービスのクラウドビルドエラーのレポートプロセスを改善します。このサービスは、Google Cloudでビルドを実行します。Citrix DaaSは、Google Cloudサービスがビルドログ情報をキャプチャするcitrix-mcs-cloud-build-logs-{region}-{5 random characters}
という名前のストレージバケットを作成します。このバケットには、30日後にコンテンツを削除するオプションが設定されています。このプロセスでは、接続に使用するサービスアカウントで、Google Cloudの権限がstorage.buckets.update
に設定されている必要があります。サービスアカウントにこの権限が設定されていない場合、Citrix DaaSはエラーを無視し、カタログの作成プロセスを続行します。この権限がないと、ビルドログのサイズが大きくなり、手動によるクリーンアップが必要になります。
プライベートGoogleアクセスの有効化
ネットワークインターフェイスに割り当てられた外部IPアドレスがVMにない場合、パケットは他の内部IPアドレスの宛先にのみ送信されます。プライベートアクセスを有効にすると、VMはGoogle APIおよび関連サービスで使用される外部IPアドレスのセットに接続します。
注:
プライベートGoogleアクセスが有効になっているかどうかに関係なく、パブリックIPアドレスを持つVMもパブリックIPアドレスを持たないVMもすべて、特にサードパーティのネットワークアプライアンスが環境にインストールされている場合、GoogleパブリックAPIにアクセスできる必要があります。
サブネット内のVMが、MCSプロビジョニング用のパブリックIPアドレスなしでGoogle APIにアクセスできるようにするには:
- Google Cloudで、[VPC network configuration] にアクセスします。
- [サブネットの詳細]画面で、[プライベートGoogleアクセス]をオンにします。
詳しくは、「プライベートGoogleアクセスの構成」を参照してください。
重要:
インターネットへのVMアクセスを防止するようにネットワークが構成されている場合は、VMが接続されているサブネットに対してプライベートGoogleアクセスを有効にすることに関連するリスクを、組織が想定していることを確認してください。
接続の追加
「接続とリソースの作成」の手順に従います。次の説明は、ホスト接続を設定する手順を示しています:
-
[管理]>[構成] の左側のペインで [ホスト] を選択します。
-
操作バーの [接続およびリソースの追加] を選択します。
-
[接続] ページで、[新しい接続を作成する] と [Citrixプロビジョニングツール] を選択してから [次へ] を選択します。
- 接続の種類。メニューから [Google Cloud] を選択します。
- 接続名。接続名を入力します。
-
[リージョン] ページで、メニューからプロジェクト名を選択し、使用するリソースを含むリージョンを選択して、[次へ] を選択します。
-
[ネットワーク] ページで、リソースの名前を入力し、メニューから仮想ネットワークを選択し、サブセットを選択してから [次へ] を選択します。このリージョンとネットワークの組み合わせを識別するためのわかりやすいリソース名を指定してください。名前に (Shared) サフィックスが付加された仮想ネットワークは、共有VPCを表しています。共有VPCにサブネットレベルのIAM役割を設定する場合、共有VPCの特定のサブネットのみがサブネットリストに表示されます。
注:
- リソース名は1~64文字にし、空白スペースのみにしたり記号(
\ / ; : # . * ? = < > | [ ] { } " ' ( ) ' )
)を含めたりすることはできません。
- リソース名は1~64文字にし、空白スペースのみにしたり記号(
-
[概要] ページで情報を確認してから、[完了] を選択し、[接続およびリソースの追加] ウィンドウを終了します。
接続とリソースを作成すると、作成した接続とリソースが一覧表示されます。接続を構成するには、接続を選択してから、操作バーで該当するオプションを選択します。
同様に、接続の下で作成されたリソースを削除、名前変更、またはテストすることができます。これを行うには、接続の下のリソースを選択してから、操作バーで該当するオプションを選択します。
マスター仮想マシンインスタンスと永続ディスクを準備する
ヒント:
永続ディスクは、仮想ディスクを表すGoogle Cloudの用語です。
マスター仮想マシンインスタンスを準備するには、計画されたマシンカタログの複製されたVDAインスタンスに必要な構成と一致するプロパティで仮想マシンインスタンスを作成して構成します。構成は、インスタンスのサイズとタイプのみに適用されるわけではありません。また、メタデータ、タグ、GPU割り当て、ネットワークタグ、サービスアカウントプロパティなどのインスタンス属性も含まれます。
マスタリングプロセスの一部として、MCSはマスターVMインスタンスを使用してGoogle Cloudインスタンステンプレートを作成します。次に、インスタンステンプレートを使用して、マシンカタログを構成する複製されたVDAインスタンスを作成します。複製されたインスタンスは、インスタンステンプレートが作成されたマスター仮想マシンインスタンスのプロパティ(VPC、サブネット、および永続ディスクのプロパティを除く)を継承します。
マスター仮想マシンインスタンスのプロパティを仕様に合わせて構成した後、インスタンスを起動し、インスタンスの永続ディスクを準備します。
ディスクのスナップショットを手動で作成することをお勧めします。これにより、意味のある命名規則を使用してバージョンを追跡でき、マスターイメージの以前のバージョンを管理するためのオプションが増え、マシンカタログの作成時間を節約できます。独自のスナップショットを作成しない場合、MCSが一時的なスナップショットを作成します(これはプロビジョニングプロセスの最後に削除されます)。
マシンカタログの作成
注:
マシンカタログを作成する前にリソースを作成してください。マシンカタログを構成するときは、Google Cloudで定められた命名規則を使用します。詳しくは、「バケットとオブジェクトの命名ガイドライン」を参照してください。
「マシンカタログの作成」のガイダンスに従ってください。次の説明は、Google Cloudのカタログに固有の説明です。
-
Web Studioにサインインし、左側のペインで [マシンカタログ] をクリックします。
-
操作バーで [マシンカタログの作成] を選択します。
-
[オペレーティングシステム] ページで、[マルチセッションOS] を選択してから [次へ] を選択します。
- Citrix Virtual Apps and DesktopsではシングルセッションOSもサポートしています。
-
[マシン管理] ページで、[電源管理されているマシン] および [Citrix Machine Creation Services] オプションを選択してから [次へ] を選択します。複数のリソースがある場合は、メニューから1つ選択してください。
-
[マスターイメージ] ページで、VMとカタログの最小機能レベルを選択してから [次へ] を選択します。単一テナント機能を使用する場合は、必ずノードグループプロパティが正しく構成されているイメージを選択してください。「ゾーン選択の有効化」を参照してください。
-
[ストレージの種類] ページで、このマシンカタログのオペレーティングシステムを格納するために使用するストレージの種類を選択します。次のストレージオプションにはそれぞれ、固有の価格とパフォーマンスの特性があります(IDディスクは、常にゾーン標準永続ディスクを使用して作成されます)。
- 標準永続ディスク
- バランス永続ディスク
- SSD永続ディスク
Google Cloudストレージオプションについて詳しくは、https://cloud.google.com/compute/docs/disks/を参照してください。
-
[仮想マシン] ページで、作成するVMの数を指定し、VMの詳細な仕様を表示してから、[次へ] を選択します。マシンカタログに単一テナントノードグループを使用する場合は、予約済み単一テナントノードが使用可能なゾーンのみを選択するようにしてください。「ゾーン選択の有効化」を参照してください。
-
[コンピューターアカウント] ページで、Active Directoryアカウントを選択してから [次へ] を選択します。
- [新しいActive Directoryアカウントを作成する] を選択する場合、ドメインを選択してからActive Directoryで作成されたプロビジョニング済みのVMコンピューターアカウントで名前付けスキームに対応した文字列を入力します。アカウント名前付けスキームに指定できる文字数は1~64文字であり、空白スペース、非ASCII文字、および特殊文字を含めることはできません。
- [既存のActive Directoryアカウントを使用する] を選択した場合、[参照] を選択し、選択したマシンの既存のActive Directoryコンピューターアカウントに移動します。
-
[ドメイン資格情報] ページで、[資格情報の入力] を選択し、ユーザー名とパスワードを入力し、[保存] を選択してから [次へ] を選択します。
- 入力する資格情報には、Active Directoryアカウント操作を実行する権限が必要です。
-
[概要] ページで、情報を確認し、カタログの名前を指定してから、[完了] を選択します。
注:
カタログ名は1~39文字にし、空白スペースのみにしたり記号(
\ / ; : # . * ? = < > | [ ] { } " ' ( ) ' )
)を含めたりすることはできません。
マシンカタログの作成が完了するまでに時間がかかる場合があります。ターゲットノードグループにマシンが作成されていることを確認するには、Google Cloudコンソールに移動します。
マシンプロファイルを使用してマシンカタログを作成する
Machine Creation Services(MCS)を使用してマシンをプロビジョニングするためのカタログを作成する場合、マシンプロファイルを使用して、仮想マシンからハードウェアプロパティをキャプチャし、カタログで新しくプロビジョニングされたVMに適用できます。MachineProfile
パラメーターが使用されていない場合、ハードウェアプロパティはマスターイメージVMまたはスナップショットからキャプチャされます。
明示的に定義する一部のプロパティ(StorageType
、CatalogZones
、CryptoKeyIs
など)は、マシンプロファイルから無視されます。
- マシンプロファイルを含むカタログを作成するには、
New-ProvScheme
コマンドを使用します。例:New-ProvScheme –MachineProfile "path to VM"
。MachineProfile
パラメーターを指定しない場合、ハードウェアプロパティはマスターイメージVM からキャプチャされます。 - 新しいマシンプロファイルでカタログを更新するには、
Set-ProvScheme
コマンドを使用します。例:Set-ProvScheme –MachineProfile "path to new VM"
。このコマンドは、カタログ内の既存VMのマシンプロファイルを変更しません。新しいマシンプロファイルは、カタログに追加された新しく作成されたVMのみにあります。 - マスターイメージを更新することもできますが、マスターイメージを更新しても、ハードウェアプロパティは更新されません。ハードウェアプロパティを更新する場合は、
Set-ProvScheme
コマンドを使用してマシンプロファイルを更新する必要があります。これらの変更は、カタログ内の新しいマシンにのみ適用されます。既存マシンのハードウェアプロパティを更新する場合、Request-ProvVMUpdate
コマンドを使用できます。
インスタンステンプレートとしてマシンプロファイルを使用してマシンカタログを作成する
マシンプロファイルの入力としてGCPインスタンステンプレートを選択できます。インスタンステンプレートはGCPのライトウェイトリソースであるため、費用対効果が非常に高くなります。
PowerShellコマンドを使用して、インスタンステンプレートとしてマシンプロファイルを使用して新しいマシンカタログを作成するには:
- PowerShellウィンドウを開きます。
-
asnp citrix*
を実行し、Citrix固有のPowerShellモジュールをロードします。 -
次のコマンドを使用して、GCPプロジェクトでインスタンステンプレートを見つけます:
cd XDHyp:\HostingUnits<HostingUnitName>\instanceTemplates.folder <!--NeedCopy-->
-
NewProvSchemeコマンドを使用して、インスタンステンプレートとしてマシンプロファイルを使用して新しいマシンカタログを作成します:
New-ProvScheme -ProvisioningSchemeName <CatalogName> -HostingUnitName <HostingUnitName> -IdentityPoolName <identity pool name> -MasterImageVM XDHyp:\HostingUnits<HostingUnitName> \Base.vm\Base.snapshot -MachineProfile XDHyp:\HostingUnits<HostingUnitName>\instanceTemplates.folder\mytemplate.template <!--NeedCopy-->
New-ProvSchemeコマンドについて詳しくは、「https://developer-docs.citrix.com/projects/citrix-daas-sdk/en/latest/MachineCreation/New-ProvScheme/」を参照してください。
- PowerShellコマンドを使用して、マシンカタログの作成を完了します。Remote PowerShell SDKを使用してカタログを作成する方法については、https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/を参照してください。
既存のマシンカタログのマシンプロファイルをインスタンステンプレートに変更するには:
- PowerShellウィンドウを開きます。
-
asnp citrix*
を実行し、Citrix固有のPowerShellモジュールをロードします。 -
次のコマンドを実行します:
Set-ProvScheme -ProvisioningSchemeName <CatalogName> -MachineProfile XDHyp:\HostingUnits<HostingUnitName>\instanceTemplates.folder<TemplateName>.template <!--NeedCopy-->
Set-ProvSchemeコマンドについて詳しくは、「https://developer-docs.citrix.com/projects/citrix-daas-sdk/en/latest/MachineCreation/Set-ProvScheme/」を参照してください。
マシンカタログの管理
カタログへのマシンの追加、マシンの更新、更新のロールバックを実行するには、「マシンカタログの管理」を参照してください。
電源管理
Citrix DaaSを使用すると、Google Cloudマシンの電源管理が可能になります。左側のペインの [検索] ノードを使用して、電源管理するマシンを検索します。次の電源操作が使用可能です:
- 削除
- 開始
- 再起動
- 強制再起動
- シャットダウン
- 強制シャットダウン
- デリバリーグループに追加
- タグの管理
- メンテナンスモードをオンにする
Autoscaleを使用してGoogle Cloudマシンの電源を管理することもできます。これを行うには、Google Cloudマシンをデリバリーグループに追加し、そのデリバリーグループのAutoscaleを有効にします。Autoscaleについて詳しくは、「Autoscale」を参照してください。
PowerShellを使用してプロビジョニングされたマシンを更新
Set-ProvScheme
コマンドは、プロビジョニングスキームを変更します。ただし、既存のマシンには影響しません。PowerShellコマンドのRequest-ProvVMUpdate
コマンドを使用して、現在のプロビジョニングスキームを既存の永続的マシンや非永続的マシン、またはマシンのセットに適用できるようになりました。現在GCPでは、マシンプロファイルがこの機能でサポートされているプロパティの更新です。
以下を更新できます:
- 単一のVM
- プロビジョニングスキームIDに関連付けられている特定のVMまたはすべての既存のVMのリスト
- プロビジョニングスキーム名に関連付けられている特定のVMまたはすべての既存のVMのリスト
既存のVMを更新するには:
-
既存のマシンの構成を確認します。例:
Get-ProvScheme | select ProvisioningSchemeName, ProvisioningSchemeVersion <!--NeedCopy-->
-
プロビジョニングスキームを更新します。例:
`Set-ProvScheme –ProvisioningSchemeName "my-catalog" –MachineProfile "XDHyp:\HostingUnits<hosting-unit>\machineprofileinstance.vm" <!--NeedCopy-->
-
VMの現在のプロパティが現在のプロビジョニングスキームと一致するかどうか、およびVMに保留中の更新アクションがあるかどうかを確認します。例:
Get-ProvVM | select VMName, ProvisioningSchemeUpdateRequested, ProvisioningSchemeVersion <!--NeedCopy-->
特定のバージョンのマシンを見つけることもできます。例:
Get-ProvVM -Filter "ProvisioningSchemeVersion -eq 1" | select VMName, ProvisioningSchemeVersion <!--NeedCopy-->
- 既存のマシンを更新します。
-
すべての既存のマシンを更新するには:
Request-ProvVMUpdate –ProvisioningSchemeName "my-catalog" <!--NeedCopy-->
-
特定のマシンのリストを更新するには:
Request-ProvVMUpdate -ProvisioningSchemeName "my-catalog" -VMName "vm1","vm2" <!--NeedCopy-->
-
Get-ProvVM
の出力に基づいてマシンを更新するには:Get-ProvVM -ProvisioningSchemeName "my-catalog" | Request-ProvVMUpdate <!--NeedCopy-->
-
-
スケジュール済みの更新があるマシンを見つけます。例:
Get-ProvVM -Filter "ProvisioningSchemeUpdateAfter" | select VMName, ProvisioningSchemeUpdateAfter <!--NeedCopy-->
-
マシンを再起動します。次回の電源投入時に、プロパティの変更が既存のマシンに適用されます。次のコマンドを使用して、更新されたステータスを確認できます:
Get-ProvVM | select VMName, ProvisioningSchemeUpdateRequested, ProvisioningSchemeVersion <!--NeedCopy-->
意図しないマシンの削除からの保護
Citrix DaaSを使用すると、Google Cloud上のMCSリソースを保護し、誤って削除されないようにすることができます。deletionProtection
フラグをTRUEに設定して、プロビジョニングされたVMを構成します。
デフォルトでは、MCSまたはGoogle Cloudプラグインを介してプロビジョニングされたVMは、InstanceProtectionが有効な状態で作成されます。この実装は、永続カタログと非永続カタログの両方に適用できます。非永続カタログは、インスタンスがテンプレートから再作成されるときに更新されます。既存の永続マシンの場合、Google Cloudコンソールでフラグを設定できます。フラグの設定について詳しくは、Googleのドキュメントのサイトを参照してください。永続カタログに追加された新しいマシンは、deletionProtection
が有効な状態で作成されます。
deletionProtection
フラグを設定したVMインスタンスを削除しようとすると、その要求は失敗します。ただし、権限のcompute.instances.setDeletionProtection
が付与されているか、IAMのCompute Adminの役割が割り当てられている場合は、リソースの削除を許可するフラグをリセットできます。
手動で作成したGoogle Cloudマシンのインポート
Google Cloudへの接続を作成してから、Google Cloudマシンを含むカタログを作成できます。次に、Citrix DaaSを使用して、Google Cloudマシンの電源を手動で再投入できます。この機能により、次のことが可能になります:
- 手動で作成したGoogle CloudマルチセッションOSマシンをCitrix Virtual Apps and Desktopsマシンカタログにインポートします。
- 手動で作成したGoogle CloudマルチセッションOSマシンをCitrix Virtual Apps and Desktopsカタログから削除します。
- 既存のCitrix Virtual Apps and Desktopsの電源管理機能を使用して、Google Cloud WindowsマルチセッションOSマシンの電源管理を行います。たとえば、これらのマシンの再起動スケジュールを設定します。
この機能には、Citrix Virtual Apps and Desktopsの既存のプロビジョニングワークフローの変更や、既存機能の削除は必要はありません。手動で作成されたGoogle Cloudマシンをインポートする代わりに、MCSを使用してCitrix DaaSの[完全な構成]インターフェイスでマシンをプロビジョニングすることをお勧めします。
共有仮想プライベートクラウド
共有仮想プライベートクラウド(VPC)は、共有サブネットが使用可能なホストプロジェクトと、リソースを使用する1つ以上のサービスプロジェクトで構成されます。共有VPCは、企業の共有Google Cloudリソースの制御、使用、管理を一元的に行うため、大規模なインストールでは望ましいオプションです。詳しくは、Googleのドキュメントのサイトを参照してください。
この機能により、Machine Creation Services(MCS)は、共有VPCに展開されたマシンカタログのプロビジョニングと管理をサポートします。このサポートは、現在ローカルVPCで提供されているサポートと同等の機能ですが、次の2つの点が異なります:
- ホスト接続の作成に使用するサービスアカウントに追加の権限を付与する必要があります。このプロセスにより、MCSは共有VPCリソースにアクセスして使用できるようになります。
- 受信用と送信用の2つのファイアウォール規則を作成する必要があります。これらのファイアウォール規則は、イメージのマスタリングプロセスで使用されます。
新しい権限が必要
ホスト接続を作成するときは、特定の権限を持つGoogle Cloudサービスアカウントが必要です。これらの追加の権限は、VPCベースのホスト接続を作成するために使用されるすべてのサービスアカウントに付与する必要があります。
ヒント:
これらの追加のアクセス権限は、Citrix DaaSにとって新しいものではありません。これらは、ローカルVPCの実装を容易にするために使用されます。共有VPCの場合、これらの追加権限により、共有VPCリソースへのアクセスが許可されます。
共有VPCをサポートするには、ホスト接続に関連付けられたサービスアカウントに追加の権限を最大4つ付与する必要があります:
- compute.firewalls.list - この権限は必須です。これにより、MCSは共有VPCに存在するファイアウォール規則のリストを取得できます。
- compute.networks.list - この権限は必須です。これにより、MCSがサービスアカウントで使用可能な共有VPCネットワークを識別できます。
- compute.subnetworks.list – この権限は、VPCの使用方法に応じてオプションとなります。これにより、MCSは可視の共有VPC内のサブネットを識別できます。この権限は、ローカルVPCを使用する場合は既に必須ですが、共有VPCホストプロジェクトでも割り当てる必要があります。
- compute.subnetworks.use - この権限は、VPCの使用方法に応じてオプションとなります。プロビジョニングされたマシンカタログでは、サブネットリソースを使用する必要があります。この権限は、ローカルVPCを使用する場合は既に必須ですが、共有VPCホストプロジェクトでも割り当てる必要があります。
これらの権限を使用する場合は、マシンカタログの作成に使用する権限の種類によって方法が異なることを考慮してください:
- プロジェクトレベルの権限:
- ホストプロジェクト内のすべての共有VPCへのアクセスを許可します。
- 権限#3と#4をサービスアカウントに割り当てる必要があります。
- サブネットレベルの権限:
- 共有VPC内の特定のサブネットへのアクセスを許可します。
- 権限#3と#4は、サブネットレベルの割り当てに組み込まれているため、サービスアカウントに直接割り当てる必要はありません。
組織のニーズとセキュリティ基準に合ったアプローチを選択します。
ヒント:
プロジェクトレベルとサブネットレベルの権限の違いについて詳しくは、Google Cloudのドキュメントを参照してください。
ファイアウォール規則
マシンカタログの準備中に、カタログのマスターイメージシステムディスクとして機能するマシンイメージが準備されます。このプロセスが発生すると、ディスクは一時的に仮想マシンに接続されます。このVMは、すべての受信および送信ネットワークトラフィックが禁止された、分離された環境で実行する必要があります。これは、2つのdeny-allファイアウォール規則によって実現されます:1つは受信トラフィック用で、もう1つは送信トラフィック用です。Google CloudローカルVCPを使用する場合、MCSはこのファイアウォールをローカルネットワーク上に作成し、マスタリングのためにマシンに適用します。マスタリングが完了すると、ファイアウォール規則がイメージから削除されます。
Shared VPCを使用するために必要な新しい権限の数は最小限に抑えることを推奨します。共有VPCは、より高レベルの企業リソースであり、通常はより厳格なセキュリティプロトコルを採用しています。このため、共有VPCリソース上のホストプロジェクトに2つのファイアウォール規則を作成します。1つは受信用、もう1つは送信用です。それらに最も高い優先度を割り当てます。次の値を使用して、これらの各規則に新しいターゲットタグを適用します:
citrix-provisioning-quarantine-firewall
MCSは、マシンカタログを作成または更新するときに、このターゲットタグを含むファイアウォール規則を検索します。次に、規則が正しいかを調べ、カタログのマスターイメージの準備で使用されたマシンにそれを適用します。ファイアウォール規則が見つからない場合、または規則は見つかったが規則やその優先度が正しくない場合には、次のようなメッセージが表示されます:
"Unable to find valid INGRESS and EGRESS quarantine firewall rules for VPC <name> in project <project>. " Please ensure you have created 'deny all' firewall rules with the network tag 'citrix-provisioning-quarantine-firewall' and proper priority." "Refer to Citrix Documentation for details."
共有VPCの構成
Citrix DaaSの完全な構成インターフェイスで共有VPCをホスト接続として追加する前に、次の手順を実行して、プロビジョニングするプロジェクトのサービスアカウントを追加します:
- IAM役割を作成します。
- CVADホスト接続の作成に使用するサービスアカウントを、共有VPCホストプロジェクトIAM役割に追加します。
- プロビジョニングするプロジェクトのCloud Buildサービスアカウントを、共有VPCホストプロジェクトIAM役割に追加します。
- ファイアウォール規則を作成します。
IAM役割を作成する
役割のアクセスレベル(プロジェクトレベルのアクセスか、またはサブネットレベルのアクセスを使用する、より制限されたモデル)を決定します。
IAM役割のプロジェクトレベルのアクセス。プロジェクトレベルのIAM役割には、次の権限を含めます:
- compute.firewalls.list
- compute.networks.list
- compute.subnetworks.list
- compute.subnetworks.use
プロジェクトレベルのIAM役割を作成するには、次の手順を実行します:
- Google Cloudコンソールで、[IAM & admin]>[Roles] の順に選択します。
- [Roles] ページで、[CREATE ROLE] を選択します。
-
[Create Role] ページで、役割名を指定します。[ADD PERMISSIONS] を選択します。
- [Add permissions] ページで、役割に権限を個別に追加します。権限を追加するには、[Filter table] フィールドで権限の名前を入力します。権限を選択し、[ADD] を選択します。
- [CREATE] を選択します。
サブネットレベルのIAM役割。この役割では、[CREATE ROLE] を選択した後、権限compute.subnetworks.list
とcompute.subnetworks.use
の追加が省略されます。このIAMアクセスレベルでは、新しい役割に権限compute.firewalls.list
とcompute.networks.list
を適用する必要があります。
サブネットレベルのIAM役割を作成するには、次の手順を実行します:
- Google Cloudコンソールで、[VPC network]>[Shared VPC] に移動します。[Shared VPC] ページが開き、ホストプロジェクトに含まれる共有VPCネットワークのサブネットが表示されます。
- [Shared VPC] ページで、アクセスするサブネットを選択します。
- 右上隅にある [ADD MEMBER] を選択して、サービスアカウントを追加します。
-
[Add members] ページで、次の手順を実行します:
- [New members] フィールドにサービスアカウントの名前を入力し、メニューでサービスアカウントを選択します。
- [Select a role] フィールドを選択し、[Compute Network User] を選択します。
- [SAVE] を選択します。
- Google Cloudコンソールで、[IAM & Admin]>[Roles] の順に選択します。
- [Roles] ページで、[CREATE ROLE] を選択します。
-
[Create Role] ページで、役割名を指定します。[ADD PERMISSIONS] を選択します。
- [Add permissions] ページで、役割に権限を個別に追加します。権限を追加するには、[Filter table] フィールドで権限の名前を入力します。権限を選択し、[ADD] を選択します。
- [CREATE] を選択します。
ホストプロジェクトのIAM役割にサービスアカウントを追加する
IAM役割を作成した後、次の手順を実行して、ホストプロジェクトのサービスアカウントを追加します:
- Google Cloudコンソールでホストプロジェクトに移動し、[IAM & admin]>[IAM] の順に選択します。
- [IAM] ページで、[ADD] を選択してサービスアカウントを追加します。
-
[Add members] ページで、次の操作を行います:
- [New members] フィールドにサービスアカウントの名前を入力し、メニューでサービスアカウントを選択します。
- 役割のフィールドを選択し、作成したIAM役割を入力して、メニューでその役割を選択します。
- [SAVE] を選択します。
これで、ホストプロジェクト用のサービスアカウントが構成されました。
Cloud Buildサービスアカウントを共有VPCに追加する
すべてのGoogle Cloudサブスクリプションは、プロジェクトID番号の後にサービスアカウントが指定され、その後にcloudbuild.gserviceaccount
が続きます。例:705794712345@cloudbuild.gserviceaccount
。
プロジェクトのプロジェクトID番号を確認するには、Google Cloudコンソールで [Home] と [Dashboard] を選択します:
画面の [Project Info] 領域でプロジェクト番号を探します。
Cloud Buildサービスアカウントを共有VPCに追加するには、次の手順を実行します:
- Google Cloudコンソールでホストプロジェクトに移動し、[IAM & admin]>[IAM]の順に選択します。
- [Permissions] ページで、[ADD]を選択してアカウントを追加します。
-
[Add members] ページで、次の手順を実行します:
- [New members] フィールドにCloud Buildサービスアカウントの名前を入力し、メニューでサービスアカウントを選択します。
-
[Select a role] フィールドを選択し、
Computer Network User
を入力して、メニューで役割を選択します。 - [SAVE] を選択します。
ファイアウォール規則の作成
マスタリングプロセスの一部として、MCSは選択されたマシンイメージをコピーし、それを使用してカタログ用のマスターイメージシステムディスクを準備します。マスタリングでは、MCSがディスクを一次仮想マシンに接続し、そこで準備スクリプトが実行されます。このVMは、すべての受信および送信ネットワークトラフィックが禁止された、分離された環境で実行する必要があります。分離された環境を作成するには、MCSに2つのdeny allファイアウォール規則(受信規則と送信規則)が必要です。したがって、ホストプロジェクトに次のように2つのファイアウォール規則を作成します:
- Google Cloudコンソールでホストプロジェクトに移動し、[VPC network]>[Firewall] の順に選択します。
- [Firewall] ページで、[CREATE FIREWALL RULE] を選択します。
-
[Create a firewall rule] ページで、次の操作を行います:
- 名前。規則名を入力します。
- Network:受信ファイアウォール規則を適用する共有VPCネットワークを選択します。
- Priority:値が小さいほど、規則の優先度は高くなります。小さい値(10など)を指定することをお勧めします。
- Direction of traffic:[Ingress] を選択します。
- Action on match:[Deny] を選択します。
- Targets:デフォルトの [Specified target tags] を使用します。
-
Target tags:「
citrix-provisioning-quarantine-firewall
」と入力します。 - Source filter:デフォルトの [IP ranges] を使用します。
-
Source IP ranges:すべてのトラフィックに一致する範囲を入力します。「
0.0.0.0/0
」と入力します。 - Protocols and ports:[Deny all] を選択します。
- [CREATE] を選択して規則を作成します。
- さらに規則を作成するには、手順1~4を繰り返します。[Direction of traffic] で、[Egress]を選択します。
接続の追加
Googleクラウド環境への接続を追加します。「接続の追加」を参照してください。
ゾーン選択の有効化
Citrix Virtual Apps and Desktopsでは、ゾーン選択をサポートしています。ゾーン選択では、VMを作成するゾーンを指定します。ゾーン選択により、管理者は選択したゾーン間に単一のテナントノードを配置できます。単一テナントを構成するには、Google Cloudで次の手順を実行する必要があります:
- Google Cloudの単一テナントノードを予約する
- VDAマスターイメージを作成する
Google Cloudの単一テナントノードを予約する
単一テナントノードを予約するには、Google Cloudのドキュメントを参照してください。
重要:
ノードテンプレートは、ノードグループで予約されているシステムのパフォーマンス特性を示すために使用されます。これらの特性には、vGPUの数、ノードに割り当てられたメモリの量、ノード上に作成されたマシンに使用されるマシンの種類が含まれます。詳しくは、Google Cloudのドキュメントを参照してください。
VDAマスターイメージを作成する
単一テナントノードにマシンを正常に展開するには、マスターVMイメージの作成時に追加の手順を実行する必要があります。Google Cloud上のマシンインスタンスには、ノードアフィニティラベルと呼ばれるプロパティがあります。単一テナントノードに展開されたカタログのマスターイメージとして使用されるインスタンスには、ターゲットノードグループの名前と一致するノードアフィニティラベルが必要です。これを実現するには、次の点に注意してください:
- 新しいインスタンスの場合は、インスタンスの作成時にGoogle Cloudコンソールでラベルを設定します。詳しくは、「インスタンスの作成時にノードアフィニティラベルを設定する」を参照してください。
- 既存のインスタンスの場合は、gcloudコマンドラインを使用してラベルを設定します。詳しくは、「既存のインスタンスのノードアフィニティラベルを設定する」を参照してください。
注:
共有VPCで単一テナントを使用する場合は、「共有仮想プライベートクラウド」を参照してください。
インスタンスの作成時にノードアフィニティラベルを設定する
ノードアフィニティラベルを設定するには、次の手順に従います:
-
Google Cloudコンソールで、[Compute Engine]>[VM instances] に移動します。
-
[VM instances] ページで、[Create instance] を選択します。
-
[Instance creation] ページで、必要な情報を入力または設定し、[management]、[security]、[disks]、[networking]、[sole tenancy] の順に選択して設定パネルを開きます。
-
[Sole tenancy] タブで、[Browse] を選択して、現在のプロジェクトで使用可能なノードグループを表示します。[Sole-tenant node] ページが開き、使用可能なノードグループのリストが表示されます。
-
[Sole-tenant node] ページで、リストから該当するノードグループを選択し、[Select] を選択して [Sole tenancy] タブに戻ります。[node affinity labels]フィールドに、選択した情報が入力されます。この設定により、インスタンスから作成されたマシンカタログが、選択したノードグループに展開されます。
-
[Create] を選択してインスタンスを作成します。
既存のインスタンスのノードアフィニティラベルを設定する
ノードアフィニティラベルを設定するには、次の手順に従います:
-
Google Cloud Shell端末ウィンドウで、gcloud compute instancesコマンドを使用してノードアフィニティラベルを設定します。gcloudコマンドに次の情報を含めます:
-
仮想マシンの名前。たとえば、「
s*2019-vda-base
」という名前の既存のVMを使用します。* -
ノードグループの名前。以前に作成したノードグループ名を使用します。例:
mh-sole-tenant-node-group-1
。 -
インスタンスが存在するゾーン。たとえば、仮想マシンは
*us-east-1b* zone
にあります。
たとえば、端末ウィンドウで次のコマンドを入力します:
gcloud compute instances set-scheduling "s2019-vda-base" --node-group="mh-sole-tenant-node-group-1" --zone="us-east1-b"
gcloud compute instancesコマンドについて詳しくは、Googleデベロッパーツールのドキュメント(https://cloud.google.com/sdk/gcloud/reference/beta/compute/instances/set-scheduling)を参照してください。
-
仮想マシンの名前。たとえば、「
-
インスタンスの [VM instance details] ページに移動し、[Node Affinities] フィールドにラベルが入力されていることを確認します。
マシンカタログの作成
ノードアフィニティラベルを設定した後、マシンカタログを構成します。
プレビュー:顧客管理暗号キー(CMEK)の使用
MCSカタログでは、顧客管理暗号キー(CMEK:Customer Managed Encryption Keys)を使用できます。この機能を使用する場合は、Google Cloudキー管理サービスのCryptoKey Encrypter/Decrypter
役割をCompute Engineサービスエージェントに割り当てます。Citrix DaaSアカウントには、キーが保存されているプロジェクトで正しい権限が必要です。詳しくは、「Cloud KMS鍵を使用してリソースを保護する」を参照してください。
Compute Engineサービスエージェントの形式は次のとおりです:service-<Project _Number>@compute-system.iam.gserviceaccount.com
。この形式は、デフォルトのCompute Engineサービスアカウントとは異なります。
注:
このCompute Engineサービスアカウントは、Googleコンソールの [IAM Permissions] 画面に表示されないことがあります。このような場合は、「Cloud KMS鍵を使用してリソースを保護する」で説明されている
gcloud
コマンドを使用します。
Citrix DaaSアカウントへのアクセス権限の割り当て
Google Cloud KMSの権限はさまざまな方法で設定できます。プロジェクトレベルのKMS権限、またはリソースレベルのKMS権限のいずれかを指定できます。詳しくは、「権限と役割」を参照してください。
プロジェクトレベルの権限
1つのオプションは、Citrix DaaSアカウントにCloud KMSリソースを参照するためのプロジェクトレベルの権限を提供することです。これを行うには、カスタム役割を作成し、次の権限を追加します:
cloudkms.keyRings.list
cloudkms.keyRings.get
cloudkms.cryptokeys.list
cloudkms.cryptokeys.get
Citrix DaaSアカウントにこのカスタム役割を割り当てます。これにより、インベントリ内の関連プロジェクトの地域キーを参照できます。
リソースレベルの権限
もう1つのオプションであるリソースレベルの権限の場合、Google Cloudコンソールで、MCSプロビジョニングに使用するcryptoKey
を参照します。Citrix DaaSアカウントを、カタログプロビジョニングに使用するキーリングまたはキーに追加します。
ヒント:
このオプションを使用すると、Citrix DaaSアカウントにCloud KMSリソースに対するプロジェクトレベルのリスト権限がないため、インベントリ内のプロジェクトの地域キーを参照できません。ただし、以下で説明する
ProvScheme
カスタムプロパティで正しいcryptoKeyId
を指定することにより、CMEKを使用してカタログをプロビジョニングできます。
カスタムプロパティを使用したCMEKによるプロビジョニング
PowerShellでプロビジョニングスキームを作成するときは、ProvScheme CustomProperties
でCryptoKeyId
プロパティを指定します。例:
'<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="CryptoKeyId" Value="<yourCryptoKeyId>" />
</CustomProperties>'
<!--NeedCopy-->
cryptoKeyId
は次の形式で指定する必要があります:
projectId:location:keyRingName:cryptoKeyName
たとえば、リージョンus-east1
にあるキーリングmy-example-key-ring
のキーmy-example-key
と、IDがmy-example-project-1
のプロジェクトを使用する場合、ProvScheme
カスタム設定は次のようになります:
'<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="CryptoKeyId" Value="my-example-project-1:us-east1:my-example-key-ring:my-example-key" />
</CustomProperties>'
<!--NeedCopy-->
このプロビジョニングスキームに関連するすべてのMCSプロビジョニングされたディスクとイメージは、このCMEK(顧客管理暗号キー)を使用します。
ヒント:
グローバルキーを使用する場合、顧客プロパティの場所はリージョン名ではなく
global
である必要があります。上記の例では、us-east1です。例:<Property xsi:type="StringProperty" Name="CryptoKeyId" Value="my-example-project-1:global:my-example-key-ring:my-example-key" />
。
顧客管理キーの交換
Google Cloudでは、既存の永続ディスクまたはイメージでのキーの交換をサポートしていません。マシンがプロビジョニングされると、作成時に使用されていたバージョンのキーに関連付けられます。ただし、新しいバージョンのキーを作成することはでき、その新しいキーは、カタログが新しいマスターイメージで更新されたときに作成される、新しくプロビジョニングされたマシンまたはリソースに使用されます。
キーリングに関する重要な注意事項
キーリングの名前を変更したり、削除したりすることはできません。また、構成時に予期しない料金が発生する場合があります。キーリングを削除すると、Google Cloudは次のエラーメッセージを表示します:
Sorry, you can't delete or rename keys or key rings. We were concerned about the security implications of allowing multiple keys or key versions over time to have the same resource name, so we decided to make names immutable. (And you can't delete them, because we wouldn't be able to do a true deletion--there would still have to be a tombstone tracking that this name had been used and couldn't be reused).
We're aware that this can make things untidy, but we have no immediate plans to change this.
If you want to avoid getting billed for a key or otherwise make it unavailable, you can do so by deleting all the key versions; neither keys nor key rings are billed for, just the active key versions within the keys.
<!--NeedCopy-->
ヒント:
詳しくは、「Editing or deleting a key ring from the console」を参照してください。
均一なバケットレベルのアクセスの互換性
Citrix DaaSは、Google Cloudの均一なバケットレベルのアクセス制御ポリシーと互換性があります。この機能は、サービスアカウントにアクセス許可を付与して、ストレージバケットなどのリソースの操作を許可するIAMポリシーの使用を強化します。均一なバケットレベルのアクセス制御により、Citrix DaaSでは、アクセス制御リスト(ACL)を使用して、ストレージバケットまたはそれらに格納されているオブジェクトへのアクセスを制御できます。Google Cloudの均一なバケットレベルのアクセスに関する概要情報については、「均一なバケットレベルのアクセス」を参照してください。構成情報については、「均一なバケットレベルのアクセス」を参照してください。
Google Cloud Marketplace
Google Cloud MarketplaceでCitrix提供イメージを参照して選択することで、マシンカタログを作成できます。現在、MCSはこの機能でマシンプロファイルワークフローのみをサポートします。
Google Cloud MarketplaceでCitrix VDA VM製品を検索するには、https://console.cloud.google.com/marketplaceにアクセスしてください。
カスタムイメージ、またはGoogle Cloud MarketplaceのCitrix Readyイメージを使用して、マシンカタログのイメージを更新できます。
注:
マシンプロファイルにストレージの種類の情報が含まれていない場合、値はカスタムプロパティから取得されます。
サポートされているGoogle Cloud Marketplaceイメージは次のとおりです:
- Windows 2019シングルセッション
- Windows 2019マルチセッション
- Ubuntu
マシンカタログを作成するためのソースとしてCitrix Readyイメージを使用する例:
New-ProvScheme -ProvisioningSchemeName GCPCatalog \
-HostingUnitName GcpHu -IdentityPoolName gcpPool -CleanOnBoot \
-MasterImageVM XDHyp:\HostingUnits\GcpHu\images.folder\citrix-daas-win2019-single-vda-v20220819.publicimage \
-MachineProfile XDHyp:\HostingUnits\GcpHu\Base.vm
<!--NeedCopy-->
サービスエンドポイントURL
次のURLにアクセスできる必要があります:
https://oauth2.googleapis.com
https://cloudresourcemanager.googleapis.com
https://compute.googleapis.com
https://storage.googleapis.com
https://cloudbuild.googleapis.com
Google Cloudプロジェクト
基本的に、Google Cloudプロジェクトには次の2種類があります:
- プロビジョニングプロジェクト:この場合、現在の管理者アカウントは、プロジェクトでプロビジョニングされたマシンを所有しています。このプロジェクトは、ローカルプロジェクトとも呼ばれます。
- 共有VPCプロジェクト: プロビジョニングプロジェクトで作成されたマシンが、共有VPCプロジェクトのVPCを使用するプロジェクト。プロジェクトのプロビジョニングに使用される管理者アカウントには、このプロジェクトでの権限が制限されています。具体的には、VPCを使用する権限のみです。
必要なGCPの権限
このセクションでは、GCPの権限の完全な一覧が示されています。機能を正しく動作させるには、このセクションで示した権限の完全なセットを使用します。
注:
2024年4月29日、GCPはCloud Buildサービスのデフォルトの動作とサービスアカウントの使用に関する変更を導入します。詳しくは、「Cloud Buildサービスアカウントの変更」を参照してください。2024年4月29日より前にCloud Build APIが有効になっていた既存のGoogleプロジェクトは、この変更の影響を受けません。ただし、4月29日以降も既存のCloud Buildサービスの動作を維持する場合は、APIを有効にする前に、制約の適用を無効にする組織ポリシーを作成または適用できます。新しい組織ポリシーを設定する場合でも、このセクションの既存の権限と、「Cloud Buildサービスアカウントの変更前」と記載されている項目に従うことができます。そうでない場合は、「Cloud Buildサービスアカウントの変更後」と記載されている既存の権限と項目に従います。
ホスト接続の作成
-
プロビジョニングプロジェクトにおいてCitrix Cloudサービスアカウントに必要な最低限の権限:
compute.instanceTemplates.list compute.instances.list compute.networks.list compute.projects.get compute.regions.list compute.subnetworks.list compute.zones.list resourcemanager.projects.get <!--NeedCopy-->
次のGoogle定義の役割には、上に一覧表示された権限があります:
- コンピューティング管理者
- クラウドデータストアユーザー
-
共有VPCプロジェクトにおいてCitrix Cloudサービスアカウントの共有VPCに必要な追加の権限:
compute.networks.list compute.subnetworks.list resourcemanager.projects.get <!--NeedCopy-->
次のGoogle定義の役割には、上に一覧表示された権限があります:
- コンピューティングネットワークユーザー
VMの電源管理
プロビジョニングプロジェクトにおいてCitrix Cloudサービスアカウントに必要な最低限の権限(電源管理のみのカタログの場合):
compute.instanceTemplates.list
compute.instances.list
compute.instances.get
compute.instances.reset
compute.instances.resume
compute.instances.start
compute.instances.stop
compute.instances.suspend
compute.networks.list
compute.projects.get
compute.regions.list
compute.subnetworks.list
compute.zones.list
resourcemanager.projects.get
compute.zoneOperations.get
<!--NeedCopy-->
次のGoogle定義の役割には、上に一覧表示された権限があります:
- コンピューティング管理者
- クラウドデータストアユーザー
VMの作成、更新、または削除
-
プロビジョニングプロジェクトにおいてCitrix Cloudサービスアカウントに必要な最低限の権限:
cloudbuild.builds.create cloudbuild.builds.get cloudbuild.builds.list compute.acceleratorTypes.list compute.diskTypes.get compute.diskTypes.list compute.disks.create compute.disks.createSnapshot compute.disks.delete compute.disks.get compute.disks.list compute.disks.setLabels compute.disks.use compute.disks.useReadOnly compute.firewalls.create compute.firewalls.delete compute.firewalls.list compute.globalOperations.get compute.images.create compute.images.delete compute.images.get compute.images.list compute.images.setLabels compute.images.useReadOnly compute.instanceTemplates.create compute.instanceTemplates.delete compute.instanceTemplates.get compute.instanceTemplates.list compute.instanceTemplates.useReadOnly compute.instances.attachDisk compute.instances.create compute.instances.delete compute.instances.detachDisk compute.instances.get compute.instances.list compute.instances.reset compute.instances.resume compute.instances.setDeletionProtection compute.instances.setLabels compute.instances.setMetadata compute.instances.setServiceAccount compute.instances.setTags compute.instances.start compute.instances.stop compute.instances.suspend compute.machineTypes.get compute.machineTypes.list compute.networks.list compute.networks.updatePolicy compute.nodeGroups.list compute.nodeTemplates.get compute.projects.get compute.regions.list compute.snapshots.create compute.snapshots.delete compute.snapshots.list compute.snapshots.get compute.snapshots.setLabels compute.snapshots.useReadOnly compute.subnetworks.get compute.subnetworks.list compute.subnetworks.use compute.zoneOperations.get compute.zoneOperations.list compute.zones.get compute.zones.list iam.serviceAccounts.actAs resourcemanager.projects.get storage.buckets.create storage.buckets.delete storage.buckets.get storage.buckets.list storage.buckets.update storage.objects.create storage.objects.delete storage.objects.get storage.objects.list compute.networks.get compute.resourcePolicies.use <!--NeedCopy-->
次のGoogle定義の役割には、上に一覧表示された権限があります:
- コンピューティング管理者
- ストレージ管理者
- Cloud Buildエディター
- サービスアカウントユーザー
- クラウドデータストアユーザー
-
共有VPCプロジェクトからVPCおよびサブネットワークを使用してホスティングユニットを作成するために、共有VPCプロジェクトにおいてCitrix Cloudサービスアカウントの共有VPCで必要な追加の権限:
compute.firewalls.list compute.networks.list compute.projects.get compute.regions.list compute.subnetworks.get compute.subnetworks.list compute.subnetworks.use compute.zones.list resourcemanager.projects.get <!--NeedCopy-->
次のGoogle定義の役割には、上に一覧表示された権限があります:
- コンピューティングネットワークユーザー
- クラウドデータストアユーザー
-
(Cloud Buildサービスアカウントの変更前):準備の指示ディスクをMCSにダウンロードするときに、プロビジョニングプロジェクトにおいてCloud BuildサービスアカウントでGoogle Cloud Buildサービスが必要とする最低限の権限:
-
(Cloud Buildサービスアカウントの変更後):準備の指示ディスクをMCSにダウンロードするときに、プロビジョニングプロジェクトにおいてCloud ComputeサービスアカウントでGoogle Cloud Computeサービスが必要とする最低限の権限:
compute.disks.create compute.disks.delete compute.disks.get compute.disks.list compute.disks.setLabels compute.disks.use compute.disks.useReadOnly compute.images.get compute.images.list compute.images.useReadOnly compute.instances.create compute.instances.delete compute.instances.get compute.instances.getSerialPortOutput compute.instances.list compute.instances.setLabels compute.instances.setMetadata compute.instances.setServiceAccount compute.machineTypes.list compute.networks.get compute.networks.list compute.projects.get compute.subnetworks.list compute.subnetworks.use compute.subnetworks.useExternalIp compute.zoneOperations.get compute.zones.list iam.serviceAccounts.actAs logging.logEntries.create pubsub.topics.publish resourcemanager.projects.get source.repos.get source.repos.list storage.buckets.create storage.buckets.get storage.buckets.list storage.objects.create storage.objects.delete storage.objects.get storage.objects.list <!--NeedCopy-->
次のGoogle定義の役割には、上に一覧表示された権限があります:
- Cloud Buildサービスアカウント(Cloud Buildサービスアカウントの変更後は、Cloud Computeサービスアカウントになります)
- コンピューティングインスタンス管理者
- サービスアカウントユーザー
-
準備の指示ディスクをMCSにダウンロードするときに、プロビジョニングプロジェクトにおいてCloud ComputeサービスアカウントでGoogle Cloud Buildサービスが必要とする最低限の権限:
resourcemanager.projects.get storage.objects.create storage.objects.get storage.objects.list <!--NeedCopy-->
次のGoogle定義の役割には、上に一覧表示された権限があります:
- コンピューティングネットワークユーザー
- ストレージアカウントユーザー
- クラウドデータストアユーザー
- (Cloud Buildサービスアカウントの変更前):準備の指示ディスクをMCSにダウンロードするときに、プロビジョニングプロジェクトにおいてCloud Buildサービスアカウントの共有VPCでGoogle Cloud Buildサービスが必要とする追加の権限:
-
(Cloud Buildサービスアカウントの変更後):準備の指示ディスクをMCSにダウンロードするときに、プロビジョニングプロジェクトにおいてCloud Computeサービスアカウントの共有VPCでGoogle Cloud Computeサービスが必要とする追加の権限:
compute.firewalls.list compute.networks.list compute.subnetworks.list compute.subnetworks.use resourcemanager.projects.get <!--NeedCopy-->
次のGoogle定義の役割には、上に一覧表示された権限があります:
- コンピューティングネットワークユーザー
- ストレージアカウントユーザー
- クラウドデータストアユーザー
-
プロビジョニングプロジェクトにおいてCitrix Cloudサービスアカウントのクラウドキー管理サービス(KMS)に必要な追加の権限:
cloudkms.cryptoKeys.get cloudkms.cryptoKeys.list cloudkms.keyRings.get cloudkms.keyRings.list <!--NeedCopy-->
次のGoogle定義の役割には、上に一覧表示された権限があります:
- コンピューティングKMS閲覧者
一般的な権限
以下はプロビジョニングプロジェクトでMCSがサポートするすべての機能に対するCitrix Cloudサービスアカウントの権限です。これらの権限では、今後も必要な互換性を提供する予定です。
resourcemanager.projects.get
cloudbuild.builds.create
cloudbuild.builds.get
cloudbuild.builds.list
compute.acceleratorTypes.list
compute.diskTypes.get
compute.diskTypes.list
compute.disks.create
compute.disks.createSnapshot
compute.disks.delete
compute.disks.get
compute.disks.setLabels
compute.disks.use
compute.disks.useReadOnly
compute.firewalls.create
compute.firewalls.delete
compute.firewalls.list
compute.globalOperations.get
compute.images.create
compute.images.delete
compute.images.get
compute.images.list
compute.images.setLabels
compute.images.useReadOnly
compute.instanceTemplates.create
compute.instanceTemplates.delete
compute.instanceTemplates.get
compute.instanceTemplates.list
compute.instanceTemplates.useReadOnly
compute.instances.attachDisk
compute.instances.create
compute.instances.delete
compute.instances.detachDisk
compute.instances.get
compute.instances.list
compute.instances.reset
compute.instances.resume
compute.instances.setDeletionProtection
compute.instances.setLabels
compute.instances.setMetadata
compute.instances.setTags
compute.instances.start
compute.instances.stop
compute.instances.suspend
compute.instances.update
compute.instances.updateAccessConfig
compute.instances.updateDisplayDevice
compute.instances.updateSecurity
compute.instances.updateShieldedInstanceConfig
compute.instances.updateShieldedVmConfig
compute.machineTypes.get
compute.machineTypes.list
compute.networks.list
compute.networks.updatePolicy
compute.nodeGroups.list
compute.nodeTemplates.get
compute.projects.get
compute.regions.list
compute.snapshots.create
compute.snapshots.delete
compute.snapshots.list
compute.snapshots.get
compute.snapshots.setLabels
compute.snapshots.useReadOnly
compute.subnetworks.get
compute.subnetworks.list
compute.subnetworks.use
compute.subnetworks.useExternalIp
compute.zoneOperations.get
compute.zoneOperations.list
compute.zones.get
compute.zones.list
resourcemanager.projects.get
storage.buckets.create
storage.buckets.delete
storage.buckets.get
storage.buckets.list
storage.buckets.update
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
cloudkms.cryptoKeys.get
cloudkms.cryptoKeys.list
cloudkms.keyRings.get
cloudkms.keyRings.list
compute.disks.list
compute.instances.setServiceAccount
compute.networks.get
compute.networks.use
compute.networks.useExternalIp
iam.serviceAccounts.actAs
compute.resourcePolicies.use
<!--NeedCopy-->
追加情報
この記事の概要
- 要件
- Google Cloud APIの有効化
- サービスアカウントの構成と更新
- プライベートGoogleアクセスの有効化
- 接続の追加
- マスター仮想マシンインスタンスと永続ディスクを準備する
- マシンカタログの作成
- マシンカタログの管理
- 電源管理
- 意図しないマシンの削除からの保護
- 手動で作成したGoogle Cloudマシンのインポート
- 共有仮想プライベートクラウド
- ゾーン選択の有効化
- プレビュー:顧客管理暗号キー(CMEK)の使用
- 均一なバケットレベルのアクセスの互換性
- Google Cloud Marketplace
- サービスエンドポイントURL
- Google Cloudプロジェクト
- 必要なGCPの権限
- 追加情報