1.6K Views
May 14, 22
スライド概要
IaCのCI/CDを実現する Spaceliftを触ってみた
自己紹介 Name:ユータ Occupation:SRE Twitter:@Y0u281 (オーでなくゼロです) ブログ:https://zenn.dev/yuta28 Twitter
目次 ● Spaceliftについて ● CI/CD実装 ● Policy as Codeについて ● 課題 ● まとめ
Spaceliftについて ● Infra as Codeを実現してくれるCI/CDプラットフォーム ○ Terraform,Pulumiに対応 ○ Gitのリポジトリと連携するだけで自動で CI/CD基盤を構築 ● 実行権限や編集などの権限をコードベースで管理可能(Policy as Code) ● 日本語情報が一切ない(Spaceliftで検索すると私の記事が2番目にHit)
CI/CD実装 GitHubリポジトリをSpaceliftと連携
CI/CD実装 作成リソース ● VPC1個
CI/CD実装 リポジトリ連携後、PRで自動でplan(ドライラン)が起動
CI/CD実装 Dockerコンテナが起動し、その中でTerraformが実行される。
CI/CD実装 TerraformがAWS VPCを作成 AWS VPCが作成された !
CI/CD実装 Spaceliftからコマンド実行も可能
Policy as Codeについて 運用ルールや権限をコードで管理する考え ● ● ● 変更履歴が確認可能 以前のポリシーへのロールバックが容易 Git管理することでコードレビュー、CI/CDを実現 SpaceliftではOpen Policy Agent(OPA)とRegoで実現 https://github.com/spacelift-io/terraform-starter チュートリアル参照
Policy as Codeについて
Regoの書き方は割愛
package spacelift
# This task policy only allows you to exectute a few selected
commands.
JSONライクなクエリ言語
# You can read more about task policies here:
# https://docs.spacelift.io/concepts/policy/task-run-policy
allowlist := {
"ls",
"terraform taint random_password.secret" ,
右の例ではSpaceliftからの
}
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 }
Policy as Codeについて コマンドを制限するポリシーアタッチ後 リソースの削除コマンドが できなくなる
課題 ● Rego言語の知見がまだ日本語記事が少ない ● Contextsの考えがわからない ● モジュール管理で一つのリポジトリで複数のTerraformを実行する場合、同じリ ポジトリで連携し直す必要がある。
まとめ
まとめ 面白いプロダクトだけど日本語が少なく 使いこなせる自信がない (泣) LinkedInで開発者とつながっているので、 興味ありましたらおつなぎします。
ありがとうございました より詳しい内容は以下のブログで↓ TerraformのCI/CD基盤を自動構築してく れるサービスSpaceliftを触ってみた (zenn.dev)