Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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 }

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

まとめ

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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