Fastly Yamagoya2022で登壇した資料です
Copyright © 2021 HashiCorpFastlyとTerraform Cloudで最高な自動化を実現しよう.
View Slide
Copyright © 2021 HashiCorp草間一人Sr. Solutions Engineer@jacopenKazutoKusama
会場のみなさんに聞きたいFastlyといえば何?
会場のみなさんに聞きたいFastlyといえば何?CDNVCL
会場のみなさんに聞きたいFastlyといえば何?CDNVCLTLSWAFCompute
めっちゃ便利だけど設定どうやって管理しよう?
自動化している 自動化していない
で自動化しませんか?
▪ インフラのプロビジョニングツール▪ 構成をHCL(HashiCorp Configration Language)でコード化▪ Infrastructure as Codeを実現
resource "aws_network_interface" "foo" {subnet_id = aws_subnet.my_subnet.idprivate_ips = ["172.16.10.100"]tags = {Name = "primary_network_interface"}}resource "aws_instance" "foo" {ami = "ami-005e54dee72cc1d00"instance_type = "t2.micro"network_interface {network_interface_id = aws_network_interface.foo.iddevice_index = 0}credit_specification {cpu_credits = "unlimited"}}Network InterfaceAMIInstance typeNetwork interfaceと紐付け
Fastly Terraform Provider
Fastly Terraform Provider[email protected]TLSWAFVCL
Customer何故Terraformで自動化が重要なのか
CustomerBackend
CustomerBackendDeploy
CustomerBackendLog, MetricsDeployこれらの環境をミス無く、効率よく管理
Terraform ProvidersCloud NetworkSaaSOrchestratorOn-PremMonitoring
Terraformは便利、でも・・・規模が大きくなればなるほど悩みも増える
Terraformは便利、でも・・・バージョン管理したいGitにcommitしたら自動でPlanしたいStateファイルを良い感じに管理したい
▪ HashiCorpが提供するSaaS▪ Terraformの最適なワークフローを提供– 各種VCSとの連携(GitHub, GitLab, Azure DevOps etc..)– ステートの管理– 変数の管理▪ 有償版のTerraform Cloud Businessもある– Policy as Code– Audit Log– SSO Integration
ステートファイルの保存apply生成ステートファイル
Gitリポジトリとの連携pushapply
Gitリポジトリとの連携push apply
複数人でTerraform運用チームが何人になってもTerraformの運用をスケールできる
IaCでよくある悩みFastly設定のコード化・自動化詳しくないメンバーが直接設定を変更してしまう差分が生まれる
IaCでよくある悩み差分が生まれる管理されていない設定が入っていることによるセキュリティ問題気づかずにTerraformを実行して設定がまき戻る問題
1. 検知 2. 通知 3. ステート修正Drift Detection
こういう場合はどうする?https://example.com/https://example.com/uihttps://example.com/apihttps://example.com/authOn-premS3Amplifyチームのスケールに管理が追いつかない
Workspace & terraform_remote_stateFastlyをIaCするリポジトリアプリをIaCするリポジトリ
アプリのIaCリポジトリ & Workspace側S3 Bucketを作成 &website_endpointをoutputTerraform Cloud上のStateをterraform-fastly workspaceに共有
FastlyのIaCリポジトリ & Workspace側Terraform Cloudのterraform-fastly-app workspaceのStateを使うと宣言State内のoutput(website_endpoint)をbackendのaddressに設定
こういう場合はどうする?https://example.com/https://example.com/uihttps://example.com/apihttps://example.com/authOn-premS3Amplify自分たちのリソースは自分たちで管理リモートステートで緩やかに連携
Thank You[email protected]www.hashicorp.com