Terraformを使ったIPsec Site-to-Site VPNでAWSとGCPを接続する
この記事を使えばVPNインフラストラクチャを簡単にデプロイできる。Terraformはクラウド時代のあらゆることを実現できる自動化ツールだ。

今日は、自分のニーズに合わせて別のIaaC(Infrastructure as Code)を書いた。Amazon Web Services(AWS)とGoogle Cloud Platform(GCP)の間に安全なVPN接続(IPsec)を作成できる。
これで何ができるか?
AWS上でのカスタマーゲートウェイの作成。AWS上での仮想プライベートゲートウェイの作成。AWS上でのSite-to-Site VPN接続の作成。AWS上でのVPN接続アクセス用セキュリティグループの作成。GCP上でのVPN接続用外部IPアドレスの作成。GCP上でのVPN接続用ファイアウォールルールの管理と作成。GCP上でのルートルールの作成。
要件
- Compute Engine APIを有効にする(無効な場合)。
- サービスアカウントを作成する(Editorロールまたは任意のロールを付与)し、キーファイルをエクスポートする。
- Terraformの状態を保持するCloud Google Storageバケットを作成する。必要に応じて、サービスアカウントをバケットのメンバーとして追加するか、Terraformの状態を保持するS3バケットを作成する。
- AWS側のIAM権限を確認する。
使用方法
- リポジトリをクローンする
git clone git@github.com:flightlesstux/aws-to-gcp-vpn-w-terraform.git - Google SDKがインストールされていなくてもGoogle Platformに認証する。CI/CDパイプラインに本当に便利だ!既に
gcloud auth loginなどでGoogle Cloud Platformプロジェクトにログインしている場合は、このステップをスキップできる。export GOOGLE_APPLICATION_CREDENTIALS="service-account-key.json" - プロジェクトIDもTerraform経由で宣言されるが、値をエクスポートしないと以下のようなエラーが発生する可能性がある。
export GOOGLE_PROJECT="0123456789012"│ Error: project: required field is not set
│
│ with google_compute_instance_group_manager.this,
│ on group_manager.tf line 1, in resource "google_compute_instance_group_manager" "this":
│ 1: resource "google_compute_instance_group_manager" "this" { - AWSリージョンにリソースを作成するためにAWS Access Key IDとSecret Access Keyをエクスポートする。
AWS_ACCESS_KEY_ID=AKIA1SFAESADASFASR5D
AWS_SECRET_ACCESS_KEY=Aasdfiajfar1O9DFASDAA3rasdas02304adsq9re - 変数を設定する
variables.tfの値を編集する - Stateバケットの設定
state.tfファイルでTerraform stateバケットを設定する。AWS S3またはGoogle Cloud Storageを使用できる。 - 初期化する
terraform init - デプロイ!
terraform applyまたはterraform apply -auto-approve
リポジトリアドレス
https://github.com/flightlesstux/aws-to-gcp-vpn-w-terraform
この記事を楽しんでいただけたなら幸いだ。
Ercan の他のサイト
同じ著者、別の領域のサイトが2つ。