$30 off During Our Annual Pro Sale. View Details »

IaCのCI_CDを実現するSpaceliftを触ってみた

YouYou
February 28, 2022

 IaCのCI_CDを実現するSpaceliftを触ってみた

YouYou

February 28, 2022
Tweet

More Decks by YouYou

Other Decks in Programming

Transcript

  1. IaCのCI/CDを実現する
    Spaceliftを触ってみた

    View Slide

  2. Name:ユータ
    Occupation:SRE
    Twitter:@Y0u281 (オーでなくゼロです)
    ブログ:https://zenn.dev/yuta28
    自己紹介
    Twitter

    View Slide

  3. 目次 ● Spaceliftについて
    ● CI/CD実装
    ● Policy as Codeについて
    ● 課題
    ● まとめ

    View Slide

  4. Spaceliftについて
    ● Infra as Codeを実現してくれるCI/CDプラットフォーム
    ○ Terraform,Pulumiに対応
    ○ Gitのリポジトリと連携するだけで自動で CI/CD基盤を構築
    ● 実行権限や編集などの権限をコードベースで管理可能(Policy as Code)
    ● 日本語情報が一切ない(Spaceliftで検索すると私の記事が2番目にHit)

    View Slide

  5. CI/CD実装
    GitHubリポジトリをSpaceliftと連携

    View Slide

  6. CI/CD実装
    作成リソース
    ● VPC1個

    View Slide

  7. CI/CD実装
    リポジトリ連携後、PRで自動でplan(ドライラン)が起動

    View Slide

  8. CI/CD実装
    Dockerコンテナが起動し、その中でTerraformが実行される。

    View Slide

  9. CI/CD実装
    TerraformがAWS VPCを作成
    AWS VPCが作成された!

    View Slide

  10. CI/CD実装
    Spaceliftからコマンド実行も可能

    View Slide

  11. Policy as Codeについて
    運用ルールや権限をコードで管理する考え

    ● 変更履歴が確認可能
    ● 以前のポリシーへのロールバックが容易
    ● Git管理することでコードレビュー、CI/CDを実現
    SpaceliftではOpen Policy Agent(OPA)とRegoで実現
    https://github.com/spacelift-io/terraform-starter チュートリアル参照

    View Slide

  12. Policy as Codeについて
    Regoの書き方は割愛
    JSONライクなクエリ言語
    右の例ではSpaceliftからの
    コマンド実行を制限
    package spacelift
    # This task policy only allows you to exectute a few selected
    commands.
    # You can read more about task policies here:
    # https://docs.spacelift.io/concepts/policy/task-run-policy
    allowlist := {
    "ls",
    "terraform taint random_password.secret" ,
    }
    allowed { allowlist[_] == input.request.command }
    deny["Only selected commands are allowed" ] { not allowed }
    # Learn more about sampling policy evaluations here:
    # https://docs.spacelift.io/concepts/policy#sampling-policy-inputs
    sample { true }

    View Slide

  13. Policy as Codeについて
    コマンドを制限するポリシーアタッチ後
    リソースの削除コマンドが
    できなくなる

    View Slide

  14. 課題
    ● Rego言語の知見がまだ日本語記事が少ない
    ● Contextsの考えがわからない
    ● モジュール管理で一つのリポジトリで複数のTerraformを実行する場合、同じリ
    ポジトリで連携し直す必要がある。

    View Slide

  15. まとめ

    View Slide

  16. まとめ
    面白いプロダクトだけど日本語が少なく
    使いこなせる自信がない (泣)
    LinkedInで開発者とつながっているので、
    興味ありましたらおつなぎします。

    View Slide

  17. ありがとうございました
    より詳しい内容は以下のブログで↓
    TerraformのCI/CD基盤を自動構築してく
    れるサービスSpaceliftを触ってみた
    (zenn.dev)

    View Slide