VPC メッシュ ネットワークの作成を自動化する
導入
複数の Virtual Private Cloud (VPC) にわたってメッシュ ネットワークを作成することは、分離性とセキュリティを維持しながらクラウド リソース間のシームレスな通信を確保する強力な方法です。 VPC メッシュ ネットワークは、すべての VPC が他のすべての VPC に接続され、それらすべての間に直接パスが作成されるネットワーク トポロジです。この種のセットアップは、複数の VPC にわたる高可用性、フォールト トレランス、低遅延通信が必要な複雑なアーキテクチャに最適です。
このチュートリアルでは、Bash スクリプトを使用して、DigitalOcean で VPC メッシュ ネットワークを作成するプロセスを自動化する手順を説明します。このスクリプトにより、VPC とピアリングの管理が簡素化され、次のことが可能になります。
- VPC メッシュ ネットワークの構築: 安全で分離された通信のために、相互接続された VPC のネットワークを確立します。
- ピアリング管理の自動化: DigitalOcean API を手動で操作することなく、複数の VPC ピアリングを簡単に作成および管理できます。
- 既存の VPC ピアリングの監視: VPC ピアリングの現在の状態を表示して、ネットワーク構成が適切であることを確認します。
前提条件
- DigitalOcean アカウント: 1 つ以上の VPC にアクセスできるアクティブな DigitalOcean アカウントが必要です。
- DigitalOcean API トークン: DigitalOcean API を認証して操作するには、有効な DigitalOcean API トークンが必要です。 DigitalOcean API ダッシュボードで API トークンを生成できます。
- jq: スクリプトは
jq
を使用して DigitalOcean API からの JSON 応答を解析します。マシンにインストールされていることを確認してください。
次のコマンドを使用して jq
をインストールできます。
Ubuntu/Debian の場合:
sudo apt-get install jq
CentOS/RedHat の場合:
sudo yum install jq
Bash スクリプトのインストールと使用
スクリプトを使用するには、まず次のコマンドを使用してサーバーまたはローカル マシンにスクリプトをダウンロードします。
wget https://solutions-files.ams3.cdn.digitaloceanspaces.com/VPC-Mesh/manage-peering.sh
次に、実行権限を付与してスクリプトを実行します。
chmod +x manage-peering.sh
./manage-peering.sh
プロンプトが表示されたら、DigitalOcean API トークンを入力してスクリプトを認証します。
Enter your DigitalOcean API token:
次のオプションを含むメニューが表示されます。
Select an option:
1. List the VPCs
2. List the VPC peerings
3. Create new VPC peerings
4. Exit
Enter your choice:
- VPC をリストする: DigitalOcean アカウント内のすべての VPC を表示します。
- VPC ピアリングの一覧表示: VPC 間の既存のピアリングを表示します。
- 新しい VPC ピアリングの作成: VPC を選択し、ピアリングを作成してメッシュ ネットワークを確立します。
- 終了: スクリプトを終了します。
スクリプト関数
APIトークンの有効性を確認する
スクリプトはまず、DigitalOcean API に VPC のリストをクエリすることで、提供された DigitalOcean API トークンが有効かどうかを確認します。トークンが無効な場合、スクリプトはエラー メッセージを表示して終了します。
VPC をリストする
この関数は、DigitalOcean アカウントに関連付けられているすべての VPC を取得してリストします。次の詳細が表示されます。
- VPC ID: VPC の一意の識別子。
- 名前: VPC の名前。
- リージョン: VPC が配置されているリージョン。
リストは、VPC ID と名前の長さに基づいて調整される列を含む、クリーンで動的なテーブルにフォーマットされます。
VPC ピアリングの一覧表示
この関数は、アカウント内のすべての既存の VPC ピアリングを取得して表示します。出力には次のものが含まれます。
- ピアリング名: VPC ピアリング接続の名前。
- ステータス: ピアリングの現在のステータス。
これは、どの VPC がすでに接続されているかを追跡し、重複したピアリングの作成を回避するのに役立ちます。
VPC ピアリングの作成
これはスクリプトの主な機能であり、選択した VPC 間に新しい VPC ピアリングを作成できるようになります。スクリプトは次の手順を実行します。
- オプションで既存の VPC ピアリングをリストするように求められます。
- 利用可能なすべての VPC が表示され、ピアリングする VPC を選択できます。
- 選択した VPC の可能なすべての組み合わせを自動的に生成し、それらの間のピアリングの作成を試みます。
- ピアリングがすでに存在する場合は、スクリプトによって通知されます。
- このスクリプトは各ピアリングの試行のステータスを出力し、ピアリングが成功したか、すでに存在しているかを示します。
ピアリングを作成した後、スクリプトは一時ファイルをクリーンアップし、メイン メニューに戻ります。
ワークフロー例
VPC のリスト: VPC をリストするオプション 1 を選択すると、出力は次のようになります。
Available VPCs: No VPC ID Name Region ---- -------------------------------- ------------ ------- 1 vpc-123456789abcdef VPC-1 NYC1 2 vpc-abcdef123456789 VPC-2 SFO2 3 vpc-987654321abcdef VPC-3 NYC1
VPC ピアリングのリスト: オプション 2 を選択して既存のピアリングを表示すると、次のように表示されます。
Existing VPC Peerings: No Peering Name Status ---- -------------------------------- -------- 1 peering-VPC-1-VPC-2 active 2 peering-VPC-2-VPC-3 active
VPC ピアリングの作成: オプション 3 を選択すると、ピアリング用の VPC を選択するよう求められます。例えば:
Select VPCs to create peerings (e.g., 1 3): 1 vpc-123456789abcdef VPC-1 NYC1 2 vpc-abcdef123456789 VPC-2 SFO2 Enter the numbers of the VPCs you want to peer (space-separated): 1 2 Creating peering: peering-VPC-1-VPC-2 between VPC-1 and VPC-2 VPC peering between VPC-1 and VPC-2 has been created.
トラブルシューティング
- 無効な API トークン: API トークンが無効な場合、スクリプトは通知して終了します。正しいトークンが生成されていること、および VPC にアクセスするための十分な権限があることを確認してください。
- ピアリングはすでに存在します: すでに存在するピアリングを作成しようとすると、スクリプトはピアリングがすでに確立されているという警告を表示します。
- jq がありません: jq がインストールされていない場合、スクリプトは JSON を解析しようとすると失敗します。システムに適切なパッケージ マネージャーを使用して jq をインストールします。
結論
このスクリプトは、DigitalOcean インフラストラクチャ内の VPC ピアリングを管理するためのシンプルかつ効率的な方法を提供し、相互接続された VPC のメッシュ ネットワークの構築と維持を容易にします。このスクリプトは、VPC ピアリングのリスト、管理、作成のプロセスを自動化することで、VPC 構成タスクを合理化し、時間を節約し、エラーの可能性を減らします。
このツールを使用すると、次のことが可能になります。
- 複数の VPC をシームレスに相互接続し、異なるリージョンやプロジェクト間で安全な通信を可能にします。
- 既存の VPC とピアリングをすばやくリストし、ネットワーク トポロジを完全に把握できるようにします。
- VPC ピアリングを簡単に作成および管理し、手動介入なしでネットワークを拡張します。