Terraformを使用したWallarmの管理¶
インフラストラクチャの管理にTerraformを使用している場合、Wallarmの管理にもそれを使用すると便利です。Terraform向けのWallarmプロバイダーを使用すると実現できます。
要件¶
-
Terraformの基礎知識
-
Terraform 0.15.5以降のバイナリ
-
USまたはEUのCloudにあるWallarm ConsoleでAdministratorroleを持つアカウントへのアクセス
-
US Wallarm Cloudで作業する場合は
https://us1.api.wallarm.com
、EU Wallarm Cloudで作業する場合はhttps://api.wallarm.com
へのアクセスが必要です。アクセスがファイアウォールでブロックされていないことを確認してください
プロバイダーのインストール¶
-
次をTerraformの構成にコピー&ペーストします:
-
terraform init
を実行します。
プロバイダーをWallarmアカウントに接続する¶
USまたはEU CloudのWallarmアカウントにWallarm Terraformプロバイダーを接続するには、Terraformの構成にAPIアクセス認証情報を設定します:
-
<WALLARM_API_TOKEN>
はお使いのWallarmアカウントのAPIにアクセスするためのトークンです。取得方法→ -
<CLIENT_ID>
はテナント(クライアント)のIDで、マルチテナンシー機能を使用する場合にのみ必要です。こちらの説明に従ってuuid
ではなくid
を使用してください。
詳細はWallarmプロバイダーのドキュメントを参照してください。
プロバイダーでWallarmを管理する¶
Wallarmプロバイダーを使用すると、Terraform経由で次の項目を管理できます:
記載の操作方法はWallarmプロバイダーのドキュメントを参照してください。
使用例¶
以下はWallarm用のTerraform構成例です:
provider "wallarm" {
api_token = "<WALLARM_API_TOKEN>"
api_host = "https://us1.api.wallarm.com"
}
resource "wallarm_global_mode" "global_block" {
waf_mode = "default"
}
resource "wallarm_application" "tf_app" {
name = "Terraform Application 001"
app_id = 42
}
resource "wallarm_rule_mode" "tiredful_api_mode" {
mode = "monitoring"
action {
point = {
instance = 42
}
}
action {
type = "regex"
point = {
scheme = "https"
}
}
}
構成ファイルを保存し、その後terraform apply
を実行します。
この構成は次の処理を行います:
-
US Cloud → 企業アカウントに、指定のWallarm APIトークンで接続します。
-
resource "wallarm_global_mode" "global_block"
→ グローバルフィルタリングモードをLocal settings (default)
に設定します。これは各ノードでローカルにフィルタリングモードを制御することを意味します。 -
resource "wallarm_application" "tf_app"
→ 名前がTerraform Application 001
、IDが42
のアプリケーションを作成します。 -
resource "wallarm_rule_mode" "tiredful_api_mode"
→ IDが42
のアプリケーションにHTTPSプロトコルで送信されるすべてのリクエストに対して、トラフィックのフィルタリングモードをMonitoring
に設定するルールを作成します。
WallarmとTerraformに関するさらなる情報¶
Terraformは、多数のインテグレーション(プロバイダー)と、すぐに使用できる構成(モジュール)をサポートしており、複数のベンダーが公開レジストリに提供しています。
このレジストリには、Wallarmが次を公開しています:
-
TerraformでWallarmを管理するためのWallarmプロバイダー。本記事で説明しています。
-
Terraform互換の環境からAWSにノードをデプロイするためのWallarmモジュール。
これら2つは目的の異なる独立したツールです。一方を使用するためにもう一方は必要ありません。