Splunk On-CallのTerraformインテグレーション 🔗
Terraformのモジュールとプロバイダーは、サービスが依存するアプリケーションを設定するための拡張機能です。例えば、モニタリングツール、オンコール、通信などです。HashiCorp検証済み`Splunk On-Call Terraformプロバイダー<https://registry.terraform.io/providers/splunk/victorops/latest>`__を使用することで、チームはアプリケーションに関連するSplunk On-Callセットアップステップを完全に自動化することができます。
新しいサービスをデプロイする際によくあるシナリオとして、Splunk On-Callがそのサービスに関連するアラートを適切なユーザーに通知するように設定することがあります。Terraformを使えば、これを宣言的な方法で完全に自動化することができ、新しいサービスが初日からSplunk On-Callで適切に監視されるようになります。
要件 🔗
このインテグレーションは以下のバージョンのSplunk On-Callと互換性があります:
Starter
Growth
エンタープライズ
開始するステップ 🔗
sp-oncall.tf
という名前のファイルを新規作成し、以下の内容を貼り付けます:
`
# Install VictorOps Terraform Provider
terraform {
required_providers {
victorops = {
source = "splunk/victorops"
version = "0.1.4"
}
}
}
`
ファイルを保存し、ターミナルに次のように入力します:
`sh
terraform init
`
これは、Terraform レジストリからSplunk On-Call Terraformプロバイダーをダウンロードしてインストールします。
プロバイダーはREST APIを使用してSplunk On-Callと通信するため、APIキーを提供する必要があります。手順については Splunk On-Call API を参照してください。
Splunk On-CallからAPI IDとAPIキーをコピーし、以下のフォーマットに従って貼り付けます:
`
provider "victorops"
{
api_id = "your api id goes here"
api_key = "your api key goes here"
}
`
次に、Splunk On-Call リソースを作成します。TFファイルに以下を貼り付けます:
`
# Create a team within victorops
resource "victorops_team" "team" {
name = "DevOps-Test"
}
# Create a user within the victorops organization
resource "victorops_user" "user1" {
first_name = "John"
last_name = "Doe"
user_name = "john.doe-test"
email = "john.doe@example.org"
is_admin = "false"
}
# Assign user to a team
resource "victorops_team_membership" "test-membership" {
team_id = victorops_team.team.id
user_name = victorops_user.user1.user_name
}
# Create email contact method for a user
resource "victorops_contact" "contact_email" {
user_name = victorops_user.user1.user_name
type = "email"
value = "john.doe2@example.org"
label = "test email"
}
# Create phone number contact method for a user
resource "victorops_contact" "contact_phone" {
user_name = victorops_user.user1.user_name
type = "phone"
value = "+12345678900"
label = "test phone"
}
# Create an Escalation Policy for the team
resource "victorops_escalation_policy" "devops_high_severity" {
name = "High Severity"
team_id = victorops_team.team.id
step {
timeout = 0
entries = [
{
type = "user"
username = "john.doe-test"
}
]
}
}
# Create a Routing Key that uses the above Escalation Policy
resource "victorops_routing_key" "infrastructure_high_severity" {
name = "infrastructure-high-severity"
targets = [victorops_escalation_policy.devops_high_severity.id]
}
`
注釈
TerraformプロバイダーはSplunk On-CallのパブリックAPIを呼び出します。そのため、現時点ではTerraformから作成できるのはユーザーレベルのユーザーだけです。ユーザーのアクセス許可レベルの編集は、ユーザー作成後にUIから行う必要があります。
前のコード内のコメントで、各ブロックが何をするのかを説明しています。使用している各リソースの詳細については、GitHubの`プロバイダードキュメント<https://registry.terraform.io/providers/splunk/victorops/latest/docs>`__を参照ください。
ファイルを保存し、ターミナルで以下のコマンドを入力します:
`
terraform plan
`
この結果、Terraformが作成できるリソースの概要が表示されます。
次に、Splunk On-Callでリソースの作成を開始するには、以下のコマンドを入力します:
`
terraform apply
`
yes
と入力して承認すると、以下のような出力が表示されます:
`
victorops_team.team: Creating...
victorops_user.user1: Creating...
victorops_team.team: Creation complete after 1s [id=team-0mnx4iUkiP2OkqCt]
victorops_escalation_policy.devops_high_severity: Creating...
victorops_user.user1: Creation complete after 2s [id=john.doe-test]
victorops_contact.contact_email: Creating...
victorops_team_membership.test-membership: Creating...
victorops_contact.contact_phone: Creating...
victorops_escalation_policy.devops_high_severity: Creation complete after 1s [id=pol-tRi4Mn8fyGoN6p8b]
victorops_routing_key.infrastructure_high_severity: Creating...
victorops_contact.contact_phone: Creation complete after 1s [id=554c80cf-b6b7-465d-ab9f-0884b41a98fc]
victorops_contact.contact_email: Creation complete after 1s [id=a56f04be-04fa-4edb-a349-1705e1ac5a1c]
victorops_routing_key.infrastructure_high_severity: Creation complete after 1s [id=infrastructure-high-severity]
victorops_team_membership.test-membership: Creation complete after 2s [id=team-0mnx4iUkiP2OkqCt_john.doe-test]
Apply complete! Resources: 7 added, 0 changed, 0 destroyed.
`
Splunk On-Callにログインし、チームタブを選択します。新しいチームが DevOps-Test
という名前または設定ファイルでチームに指定した名前で作成されていることを確認します。
チーム内では、設定ファイルで定義されたユーザーとエスカレーションポリシー、および Settings、Routing Key タブのルーティングキーを参照してください。