terraformでbrandのimport

terraformでbrand(同意画面の設定)をimportした際にエラーとなったのでメモ。

terraform import google_iap_brand.project_brand <brand_name>

これでimportすると以下のエラー

Error: Saw <brand_name> when the name is expected to have shape projects/{{project}}/brands/{{name}}

というわけでそれに従ってフォーマットを変えて実行

terraform import google_iap_brand.project_brand projects/<project_id>/brands/<brand_name>

すると以下のエラー

Error when reading or editing IapBrand "projects/<project_id>/brands/<brand_name>": googleapi: Error 400: Unable to parse project number and brand. Use following format: projects/{ProjectNumber|ProjectId}/brands/{brand}

エラーに書かれた形になってると思ったのだがエラーが出てるので違うらしい。{brand}の部分がbrand名ではないということか。

で、少しググっていると以下のissueを発見
https://github.com/hashicorp/terraform-provider-google/issues/6100#issuecomment-613717470

そこに書かれた形式でやったら成功

terraform import google_iap_brand.project_brand projects/<project_id>/brands/<project_id>

単純にproject_idでよかったらしい

vpn用routing tableへのentry追加

vpnを繋いで特定のhostへアクセスしたい場合の設定をメモ

やることとしてはvpn用routing tableへentry追加するだけ

macを使ってる場合の手順はこちら

  1. ifconfigを実行
  2. vpnに繋ぐ
  3. ifconfigを実行
  4. 新しく出てきたinterfaceがvpn用のもの(ipsec0とする)
  5. sudo route add -net <host名 or ip> -interface ipsec0

参考

【macOS】特定のドメインへの接続だけVPNを経由させる方法【Big Sur】 | ツインターボのブログ

gcpのloadbalancerにてパスの振り分けでcdnにアクセスした際に404

loadbalancerではurlに応じてbackendを振りわけることが可能で、例えば以下のような設定ができる。

https://example.com/app/* -> app serverとなるcloudrunのインスタンスへ
https://example.com/web/* -> cloud storageへ

以下のurlにアクセスしたとき

https://example.com/web/aaa/bbb.txt

cloud storageにアクセスがいくが、取得されるファイルはwebという名前のbucket内にあるディレクトリaaa直下のbbb.txtというファイルである。

loadbalancer側の設定としては上記に書いたように /web/* ならこちら、のような形の設定を行っているため、* の部分が展開されてbackend側で使われると勝手にイメージしていたが間違いだった。

意図していた通りに*の部分だけをbackend側に渡したい場合、詳細設定に含まれる"パスの接頭辞の書き換えとして / を指定しておけばOK。

Cloud Load Balancingでマッチしたパスを特定のサービスに振り分ける

terraformでの設定なら path_prefix_rewrite を設定しておけばよい。

https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_url_map#path_prefix_rewrite