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

HCP Terraformで品質を極める 自動化推進チームの実践ガイド

HCP Terraformで品質を極める 自動化推進チームの実践ガイド

倉本 亮世
株式会社 JAL インフォテック
インフラ自動化推進チーム(ATLAS)

大学院を卒業後、新卒としてJALインフォテックに入社。 Webアプリ開発を経験し、2022年からインフラ自動化推進チームATLASに所属。

More Decks by ファインディ株式会社(イベント資料アップ用)

Other Decks in Technology

Transcript

  1. © 2025 JAL Information Technology 自己紹介 株式会社JALインフォテック ATLASチーム 倉本 亮世

    (2020年入社) resource “profile” “kuramoto” { career = { name = “インフラエンジニア” skills = [“AWS”,“Terraform”,“Ansible”] team = “ATLAS” } hobby = [“ボードゲーム”, “ゴルフ”] }
  2. © 2025 JAL Information Technology 株式会社 JALインフォテック HP https://www.jalinfotec.co.jp/ 代表者

    代表取締役社長執行役員 小山 英之 設立 1978年8月 本社所在地 東京都港区芝浦3-1-1 msb Tamachi 田町ステーションタワー N 12F 航空× IT 
 安心・安全・快適 
 のために
 ITシステムを 
 ワンストップで 
 多角的な
 ビジネスフィールド 

  3. © 2025 JAL Information Technology 目次 • 自動化推進チームATLASとは • Terraform品質向上の取り組み

    ◦ コード品質の重要性 ◦ 3つの取り組み紹介 • 今後の取り組み
  4. © 2025 JAL Information Technology チーム理念 1. JALの大多数のシステムにおいて構築/維持管理作業の 効率化を図る 2.

    JALシステムの品質を向上させる Automation TooLing And Standards = ATLAS 自動化 標準化 ツール化
  5. © 2025 JAL Information Technology 活動内容 ATLAS 自動化されたものを使いやすく 02 自動化

    標 準 で 使 え る 範 囲 を 広 げ る 03 ツール化 01 標準化 標 準 化 さ れ た 設 計 を 自 動 化 RHEL/Windows/Amazon LinuxなどのOS/MW標準化 非機能設計の標準化 HCP Terraform Ansible Automation Platform Terraform Ansible
  6. © 2025 JAL Information Technology Terraform推進の歴史 2021 2022 IaCツールとして 


    Terraformを採用 
 
 複数のIaCツールの利用検証を実施。 
 「機能性」と「使いやすさ」を考慮し 
 Terraformを採用する。 
 8月 社内教育を開始 
 
 社内のインフラ担当者を対象 にTerraformの概要や利用方 法など教育活動を行い利用推 進を図る
 11月 HCP Terraformの導入に向けて 
 ユースケースの洗い出し 
 
 実際の運用から
 必要なユースケースを整理。 
 5月 PoC検証を開始 
 
 PoCライセンスを利用し、 
 洗い出したシナリオが 
 実現可能かを検証。 
 6月 正式にHCP Terraformの 
 ライセンスを契約 
 
 社内でHCPtの利用を開始。 
 ATLASがHCPtの管理を担う。 
 8月
  7. © 2025 JAL Information Technology 社外活動(HashiConf参加) HashiConf 2023 in サンフランシスコ

    HashiConf 2024 in ボストン Terraform / VaultなどHashiCorp社製品の最新情報キャッチアップ
  8. © 2025 JAL Information Technology HashiConf 2024 Hallway Track HashiCorp

    Strategy Day 2023 / 2024 HashiTalks 2023 / 2024 社外講演(HashiConf / Strategy Day / HashiTalks ) 社内での信頼性向上 & 社外への知名度向上
  9. © 2025 JAL Information Technology Terraformのコード品質の重要性 • 再利用性 品質の高いコード =

    再利用しやすい - 高い可読性 - 適度な汎用性 ➡ 再利用時の手間を減らすことでインフラ提供スピードが向上 • セキュリティ 品質の高いコード = セキュリティリスクが少ない - シークレット管理 - 権限管理 - ネットワーク管理 ➡ システム全体のセキュリティリスクを低減
  10. © 2025 JAL Information Technology ATLASが実施しているコード品質向上の取り組み 維持管理フェーズ 計画フェーズ 開発フェーズ ATLASでのフォロースコープ

    技術教育 ATLASチームから プロジェクトメンバーへ Terraformの初期教育を 実施する Terraform利用の 「最初の一歩」をスムーズに 技術支援 技術的課題の調査/ 検討/解決を支援する コードレビュー 再利用性/セキュリティの観点 でコードをレビューする コード品質を高め Terraformへの理解を深める
  11. © 2025 JAL Information Technology 技術支援 目的:技術的なつまずきを解消し、プロジェクトを円滑に進める    支援体制を強化することでTerraformを安心して利用してもらう 支援方法: -

    構築作業開始前にMTGを行い、どの程度支援が必要かを確認する - 支援用チャットスペースを作成して、チャットベースで相談を受ける 相談例: - planエラーが解決できません - この設定をしたいけどどのパラメータを使うかわからない - インターネットを介さずに構築作業を行いたい - PCIDSS対応のシステムですが利用できますか?
  12. © 2025 JAL Information Technology コードレビュー Terraformスタイルガイド観点 #------- RDSインスタンス -------#

    resource "aws_db_instance" "postgres-db" { db_name = "DATABASE" engine = "postgres" engine_version = "15.7" instance_class = "db.m5d.large" identifier = "posgres-db" username = var.db_username password = var.db_password } リソース名の区切り文字に ハイフン(-)を使っている イコール(=)が揃っていない インデントが統一されていない
  13. © 2025 JAL Information Technology コードレビュー Terraformスタイルガイド観点 #------- RDSインスタンス -------#

    resource "aws_db_instance" "postgres_db" { db_name = "DATABASE" engine = "postgres" engine_version = "15.7" instance_class = "db.m5d.large" identifier = "postgres-db" username = var.db_username password = var.db_password } #------- RDSインスタンス -------# resource "aws_db_instance" "postgres-db" { db_name = "DATABASE" engine = "postgres" engine_version = "15.7" instance_class = "db.m5d.large" identifier = "postgres-db" username = var.db_username password = var.db_password } 可読性アップ↑↑
  14. © 2025 JAL Information Technology コードレビュー 効率性/再利用性の観点 #------- RDSインスタンス -------#

    resource "aws_db_instance" "postgres_db" { db_name = "DATABASE" engine = "postgres" engine_version = "15.7" instance_class = "db.m5d.large" identifier = "postgres-db-dev" db_subnet_group_name = "subnet_name" tags = { Name = "postgres-db-dev" SystemName = "system" Environment = "dev" } } 環境に依存する文字が含まれている リソース名やIDなどがべた書きされている tagのような共通して利用するものを すべてのリソースに記述している
  15. © 2025 JAL Information Technology コードレビュー 効率性/再利用性の観点 #------- RDSインスタンス -------#

    resource "aws_db_instance" "postgres_db" { db_name = "DATABASE" engine = "postgres" engine_version = "15.7" instance_class = "db.m5d.large" identifier = "postgres-db-dev" db_subnet_group_name = "subnet_name" tags = { Name = "postgres-db-dev" SystemName = "system" Environment = "dev" } } #------- RDSインスタンス -------# resource "aws_db_instance" "postgres_db" { db_name = "DATABASE" engine = "postgres" engine_version = "15.7" instance_class = "db.m5d.large" identifier = "postgres-db-${var.env}" db_subnet_group_name = aws_db_subnet_group.this.name tags = merge(local.common_tags, { Name = "postgres-db-${var.env}" }) } 効率性/再利用性 アップ↑↑
  16. © 2025 JAL Information Technology コードレビュー セキュリティの観点 #------- RDSインスタンス -------#

    resource "aws_db_instance" "postgres_db" { db_name = "DATABASE" engine = "postgres" engine_version = "15.7" instance_class = "db.m5d.large" identifier = "postgres-db" username = "postgres" password = "abcd1234" } パスワードがハードコーディングされている
  17. © 2025 JAL Information Technology コードレビュー セキュリティの観点 HCP Terraform Variables

    #------- RDSインスタンス -------# resource "aws_db_instance" "postgres_db" { db_name = "DATABASE" engine = "postgres" engine_version = "15.7" instance_class = "db.m5d.large" identifier = "postgres-db" username = var.username password = var.password } #------- RDSインスタンス -------# resource "aws_db_instance" "postgres_db" { db_name = "DATABASE" engine = "postgres" engine_version = "15.7" instance_class = "db.m5d.large" identifier = "postgres-db" username = "postgres" password = "abcd1234" } セキュリティ リスク↓↓
  18. © 2025 JAL Information Technology ATLASが実施しているコード品質向上の取り組み 維持管理フェーズ 高品質なコードで  維持管理が簡単に! 計画フェーズ

    技術教育 開発フェーズ 技術支援 コードレビュー ATLASでのフォロースコープ ・・・あれ? 修正するときの品質 確保は? 高品質なコード開発とインフラ環境の提供
  19. © 2025 JAL Information Technology 今後取り組みたい内容 HCP Terraform ハンズオン教育 03

    コーディング重視の実践型ハンズオン教育の実施  ⇒ 会社全体のTerraform基礎能力の向上  ⇒ 新規参画者のTerraform利用をスムーズに 標準構成の プライベートモジュール化 02 よく使われる構成のプライベートモジュール化  ⇒ コード化の工数削減  ⇒ システム全体の品質の均一化 Git Pipelineによる コードの静的解析 01 コード解析をCI/CDパイプラインで実施  ⇒ コードレビューの負担減  ⇒ コードの最低品質を確保
  20. © 2025 JAL Information Technology ATLASが実施しているコード品質向上の取り組み 維持管理フェーズ Terraform Pipeline ハンズオン教育

    計画フェーズ 技術教育 ハンズオン教育 開発フェーズ 技術支援 コードレビュー Terraform Pipeline プライベートモジュール活用 ATLASでのフォロースコープ 自動化された高品質なコード開発とインフラ環境の提供 & 高品質なTerraform開発者の確保
  21. © 2025 JAL Information Technology • HashiCorp製品(Terraform)ロゴの使用はブランドガイドラインに基づく。 • その他記載されている商品名、サービス名、会社名は、各社の商標または登録商標です。 •

    他の商標はすべて各商標所有者の財産です。 • 本資料で使用しているイラストや写真素材は、弊社が契約する素材提供サービスが提供するロイヤリティフリー素材を使用していま す。 [免責事項]
 本資料に掲載されている情報は、情報提供を目的にしたものであり、いかなる参加者に対しても、法律的またはその他の指導や助言を意図したものではありません。 
 本資料への情報の掲載にあたっては万全を期しておりますが、その内容の正確性、完全性、公正性及び確実性を保証するものではありません。 
 従いまして、本資料の利用、使用、ダウンロードをするなどの行為に関連して生じたいかなる損害についても、理由の如何に関わらず、当社は一切の責任を負わない ものとします。 
 また、本資料に掲載されている外部サイトへのリンクは、第三者が運営しているものであり、当社では管理しておりません。 
 当社が、その正確性や第三者のサイトに掲載されている情報について内容の正確性を保証ないし推奨するものではありません。 
 本資料に記載されている文書、画像などの著作権は、特段の記載がない限り、株式会社JALインフォテック又は株式会社JALインフォテックに権利を許諾する第三者 に帰属します。 
 本資料の内容について、株式会社JALインフォテックに無断で転載、複製等をすることを禁止します。 
 商標および著作物について