今日は、自分のニーズに合わせて別の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上でのルートルールの作成。

要件

使用方法

  1. リポジトリをクローンする

    git clone git@github.com:flightlesstux/aws-to-gcp-vpn-w-terraform.git

  2. Google SDKがインストールされていなくてもGoogle Platformに認証する。CI/CDパイプラインに本当に便利だ!既にgcloud auth loginなどでGoogle Cloud Platformプロジェクトにログインしている場合は、このステップをスキップできる。

    export GOOGLE_APPLICATION_CREDENTIALS="service-account-key.json"

  3. プロジェクト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" {



  4. AWSリージョンにリソースを作成するためにAWS Access Key IDとSecret Access Keyをエクスポートする。

    AWS_ACCESS_KEY_ID=AKIA1SFAESADASFASR5D
    AWS_SECRET_ACCESS_KEY=Aasdfiajfar1O9DFASDAA3rasdas02304adsq9re


  5. 変数を設定する

    variables.tfの値を編集する

  6. Stateバケットの設定

    state.tfファイルでTerraform stateバケットを設定する。AWS S3またはGoogle Cloud Storageを使用できる。

  7. 初期化する

    terraform init

  8. デプロイ!

    terraform apply または terraform apply -auto-approve

リポジトリアドレス

https://github.com/flightlesstux/aws-to-gcp-vpn-w-terraform

この記事を楽しんでいただけたなら幸いだ。