Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FastlyとTerraform Cloudで最高な自動化を実現しよう

FastlyとTerraform Cloudで最高な自動化を実現しよう

Fastly Yamagoya2022で登壇した資料です

Kazuto Kusama

March 04, 2023
Tweet

More Decks by Kazuto Kusama

Other Decks in Technology

Transcript

  1. Copyright © 2021 HashiCorp
    FastlyとTerraform Cloudで
    最高な自動化を実現しよう
    .

    View full-size slide

  2. Copyright © 2021 HashiCorp
    草間一人
    Sr. Solutions Engineer
    @jacopen
    Kazuto
    Kusama

    View full-size slide

  3. 会場のみなさんに聞きたい
    Fastlyといえば何?

    View full-size slide

  4. 会場のみなさんに聞きたい
    Fastlyといえば何?
    CDN
    VCL

    View full-size slide

  5. 会場のみなさんに聞きたい
    Fastlyといえば何?
    CDN
    VCL
    TLS
    WAF
    Compute

    View full-size slide

  6. めっちゃ便利だけど
    設定どうやって管理しよう?

    View full-size slide

  7. 自動化している 自動化していない

    View full-size slide

  8. で自動化しませんか?

    View full-size slide

  9. ▪ インフラのプロビジョニングツール
    ▪ 構成をHCL(HashiCorp Configration Language)で
    コード化
    ▪ Infrastructure as Codeを実現

    View full-size slide

  10. resource "aws_network_interface" "foo" {
    subnet_id = aws_subnet.my_subnet.id
    private_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.id
    device_index = 0
    }
    credit_specification {
    cpu_credits = "unlimited"
    }
    }
    Network Interface
    AMI
    Instance type
    Network interfaceと紐
    付け

    View full-size slide

  11. Fastly Terraform Provider

    View full-size slide

  12. Fastly Terraform Provider
    Compute@Edge
    TLS
    WAF
    VCL

    View full-size slide

  13. Customer
    何故Terraformで自動化が重要なのか

    View full-size slide

  14. Customer
    Backend

    View full-size slide

  15. Customer
    Backend
    Deploy

    View full-size slide

  16. Customer
    Backend
    Log, Metrics
    Deploy
    これらの環境をミス無く、効率よく管理

    View full-size slide

  17. Terraform Providers
    Cloud Network
    SaaS
    Orchestrator
    On-Prem
    Monitoring

    View full-size slide

  18. Terraformは便利、でも・・・
    規模が大きくなればなるほど
    悩みも増える

    View full-size slide

  19. Terraformは便利、でも・・・
    バージョン管理
    したい
    Gitにcommitしたら
    自動でPlanしたい
    Stateファイルを
    良い感じに管理したい

    View full-size slide

  20. ▪ HashiCorpが提供するSaaS
    ▪ Terraformの最適なワークフローを提供
    – 各種VCSとの連携(GitHub, GitLab, Azure DevOps etc..)
    – ステートの管理
    – 変数の管理
    ▪ 有償版のTerraform Cloud Businessもある
    – Policy as Code
    – Audit Log
    – SSO Integration

    View full-size slide

  21. ステートファイルの保存
    apply
    生成
    ステートファイル

    View full-size slide

  22. ステートファイルの保存
    apply
    生成
    ステートファイル

    View full-size slide

  23. Gitリポジトリとの連携
    push
    apply

    View full-size slide

  24. Gitリポジトリとの連携
    push apply

    View full-size slide

  25. Gitリポジトリとの連携
    push
    apply

    View full-size slide

  26. 複数人でTerraform運用
    チームが何人になっても
    Terraformの運用を
    スケールできる

    View full-size slide

  27. IaCでよくある悩み
    Fastly設定のコード化・自動化
    詳しくないメンバーが
    直接設定を変更してしまう
    差分が生まれる

    View full-size slide

  28. IaCでよくある悩み
    差分が生まれる
    管理されていない
    設定が入っていることによ
    るセキュリティ問題
    気づかずにTerraformを実
    行して設定がまき戻る問

    View full-size slide

  29. 1. 検知 2. 通知 3. ステート修正
    Drift Detection

    View full-size slide

  30. こういう場合はどうする?
    https://example.com/
    https://example.com/ui
    https://example.com/api
    https://example.com/auth
    On-prem
    S3
    Amplify
    チームのスケールに
    管理が追いつかない

    View full-size slide

  31. Workspace & terraform_remote_state
    FastlyをIaCするリポジトリ
    アプリをIaCするリポジトリ

    View full-size slide

  32. アプリのIaC
    リポジトリ & Workspace側
    S3 Bucketを作成 &
    website_endpointをoutput
    Terraform Cloud上のStateを
    terraform-fastly workspaceに共有

    View full-size slide

  33. FastlyのIaC
    リポジトリ & Workspace側
    Terraform Cloudの
    terraform-fastly-app workspaceの
    Stateを使うと宣言
    State内の
    output(website_endpoint)を
    backendのaddressに設定

    View full-size slide

  34. こういう場合はどうする?
    https://example.com/
    https://example.com/ui
    https://example.com/api
    https://example.com/auth
    On-prem
    S3
    Amplify
    自分たちのリソースは
    自分たちで管理
    リモートステートで
    緩やかに連携

    View full-size slide

  35. Thank You
    [email protected]
    www.hashicorp.com

    View full-size slide