IaCジャーニーの紹介
by
msato
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
IaCジャーニーマップの紹介 2023年12月15日 クラスメソッド AWS事業本部 佐藤 雅樹 1
Slide 2
Slide 2 text
resource “my_profile” “this” { name = “佐藤雅樹” company = “クラスメソッド株式会社” department = “ソリューションアーキテクト” Interest = [ “CI/CD”, “IaC” ] } 2 自己紹介 2
Slide 3
Slide 3 text
3 本セッションの対象聴講者、ゴール ● 対象者 ○ IaCの導入を検討している方 ○ IaCをすでに適用していて、課題に向き合っている方 ● ゴール ○ 組織のIaC利用の成熟度を上げるために、必要なステップがわ かる
Slide 4
Slide 4 text
4 IaCジャーニーマップとは クラスメソッド作成の「IaCを導入させるためのステージ分けさ れた、ロードマップ」
Slide 5
Slide 5 text
5 ペルソナ ● Webシステムを運営している事業会社 ○ システムはAWS上で稼働 ● インフラチームは3名 ○ IaCの経験者は無し、プログラミング経験も無し ● インフラの設定変更は手動で行なっている
Slide 6
Slide 6 text
6 課題 ● インフラ規模は拡大していて、以下のような課題がある ○ インフラ構築や変更のリードタイムが長い ○ 手動変更によって作業ミスが発生してしまった
Slide 7
Slide 7 text
7 IaCジャーニーマップ ここからスタート
Slide 8
Slide 8 text
8 Stage.2 IaC導入 ToDo ● ツール選定(IaCツール、VCS) ● 実行環境の整備(ローカル/リモート) ● 既存リソースのImport ● 各種フローの整備 ● ツールのチーム内への普及 ● ...etc ※太字部分を解説
Slide 9
Slide 9 text
9 Stage.2 IaC導入 ツール選定 ● IaCツール: Terraform ○ ツールの学習コストを抑えたい ○ AWS以外にも将来的に、別クラウドやSaaSも管理したい ● VCS: GitLab ○ アプリケーションチームがGitLabを使っていた
Slide 10
Slide 10 text
10 Stage.2 IaC導入 実行環境 ● ローカル ○ リモート環境用のサーバーを維持したくない ○ tfenvでTerraformバージョンを合わせる運用とする ○ ローカルにAWS認証情報が必要だが、一旦許容する
Slide 11
Slide 11 text
11 Stage.2 IaC導入 構成図
Slide 12
Slide 12 text
12 Stage.2 IaC導入 振り返り ✅ 解決できたこと ○ IaCコードを再利用することで、リードタイム短縮 ○ コード化したことで、変更履歴がGitで確認できるように ○ レビューがしやすくなり、作業ミス減少・品質向上 ❌ 課題 ○ ローカルのAWS認証情報を使って、承認(レビュー)なしで、イン フラを変更できてしまう ○ コマンドの手動実行ミス
Slide 13
Slide 13 text
13 Stage.3 デプロイパイプライン ToDo ● デプロイパイプラインツールの選定 ● デプロイフローの整備 ● デプロイ方法の切り替え ● ...etc ※太字部分を解説
Slide 14
Slide 14 text
14 Stage.3 デプロイパイプライン ツール選定
Slide 15
Slide 15 text
15 Terraform Cloud
Slide 16
Slide 16 text
Pros - Terraformのデプロイに最適化されている - 少ない工数でデプロイパイプラインを構築可能 - ツール用のインフラの構築・運用が不要 - Stateファイルの管理機能等、その他機能も充実 - HashiCorp社のサポートを受けれる Cons - デフォルト設定では、VCS上でPlan等の実行結果が見れな い - その他の方法より料金が高い Terraform Cloud 16
Slide 17
Slide 17 text
17 CIツール(Github Actions, GitLab CI/CD)
Slide 18
Slide 18 text
18 Pros - アプリケーションのデプロイとツールを統一できる - ツール用のインフラの構築・運用が不要(SaaS製品の場合) Cons - パイプライン処理の作り込みが必要 - (Terraform CloudやAtlantisと比較して) - 環境の数が増えるとデプロイ設定用のファイルが増えて管 理が大変 CIツール(Github Actions, GitLab CI/CD)
Slide 19
Slide 19 text
19 Stage.3 デプロイパイプライン ツール選定 ● Terraform Cloud ○ パイプラインの構築・維持コストを最小化したい ○ HashiCorp社のサポートを受けたい
Slide 20
Slide 20 text
20 Stage.3 デプロイパイプライン
Slide 21
Slide 21 text
21 Stage.3 デプロイパイプライン ✅ 解決できたこと ○ 手動コマンド実行によるミスを防止 ○ ローカルのAWS認証情報を廃止、デプロイツール上で一元管 理
Slide 22
Slide 22 text
22 しばらく経ち IaC運用が軌道に乗ってきた
Slide 23
Slide 23 text
23 IaCの利用規模拡大 規模が大きくなり、以下の課題が発生 ❌ 課題 ○ コードレビューの負荷が高く、リリースサイクルが遅くなってい る ■ 以下のようなインフラコードのPR(MR)が上がってくる - 自社のガイドラインに違反している - セキュアな設定になっていない ○ 手動運用時より障害は減ったが、もっと減らしたい
Slide 24
Slide 24 text
Stage.4 スキャン・テスト・ビルド 24 ● 自動テストを導入する ○ 静的解析 ○ プランテスト ○ ユニットテスト ○ 統合テスト ○ E2Eテスト ● ...etc ※太字部分を解説
Slide 25
Slide 25 text
25 静的解析 terraform validate tflint Snyk IaC 説明 Terraformの組み込 みコマンド リンターツール セキュリティスキャ ンツール チェック対象 文法 プロバイダー (AWS,GCP,Azure) の特定の制約やエ ラー 例) AMIやインスタ ンスタイプの検証 作成されるリソース のセキュリティ 例) S3バケットが暗 号化されてない Terraformコードを解析する(実際のコード実行は無し)
Slide 26
Slide 26 text
● TerraformのPlan結果を解析する ● 静的解析との比較 ○ Pros - Planを実行するため、より踏み込んだ解析が可能 ○ Cons - プロバイダ(AWS,Azure, Google Cloud)の認証情報が必要 ● ポリシーの例 ○ 「ManagedBy = terraform」タグがついていないリソースのデプ ロイ禁止 ○ 金曜日にデプロイすることを禁止 26 プランテスト
Slide 27
Slide 27 text
27 プランテスト Open Policy Agent (OPA) HashiCorp Sentinel Snyk IaC (内部でOPA利用) 対象 Terraform,Kubern etes,Envoy等 HashiCorp製品 (Terraform,Vault,N omad,Consul) Terraform,CloudF ormation,Kubernet es等 言語 Rego Sentinel Rego
Slide 28
Slide 28 text
選定したツール 28 ● 静的解析: terraform validate,tflint, Snyk IaC ○ 役割が異なるため、全て組み込む ● プランテスト: Snyk IaC,OPA ○ Terraform Cloudがサポートしているため組み込み易い ○ KubernetesやEnvoyにも対象を広げていきたい ○ Terraform Cloudでカスタムルールを使う場合、OPAの方が使 い回ししやすい
Slide 29
Slide 29 text
29 Stage.4 スキャン・テスト・ビルド
Slide 30
Slide 30 text
30 Stage.4 スキャン・テスト・ビルド ✅ 解決できたこと ○ レビュー負荷が軽減、リリースサイクル向上 ○ 早期にミスを検出できるようになり、障害のリスク軽減
Slide 31
Slide 31 text
31 Stage.5 発展的なIaC活用 ● インフラセルフサービス化 ○ No-Code Provisioning(Terraform Cloud) ● AWSアカウント払い出し&ベースライン設定 ○ AFT、CfCT
Slide 32
Slide 32 text
32 まとめ IaC運用の成熟度向上に、IaCジャーニーマップを 是非お役立てください
Slide 33
Slide 33 text
33 関連URL Terraform Cloud - https://developer.hashicorp.com/terraform/cloud-docs Snyk - https://snyk.io/jp/product/infrastructure-as-code-security/ Terraformのデプロイパイプラインに使用できるツールをまとめてみた - https://dev.classmethod.jp/articles/terraform-deploy-pipeline-tool/ Snyk IaCでTerraformコードのセキュリティ解析をしてみた - https://dev.classmethod.jp/articles/snyk-infrastructure-as-code-security-overvie w/ Terraform CloudのOPA Policy適用のチュートリアルをやってみた - https://dev.classmethod.jp/articles/terraform-cloud-opa-policy-tutorial/