「DevOpsを支える今話題のHashiCorpツール群について」に参加してきたので、メモを共有します。
HashiCorpについてご紹介とツール解説
- Terraform
- クラウドを抽象化
- Vault
- セキュリティ
- IPアドレスではなく、アイデンティベースの管理
- Nomad
- k8sに似ている
- スケジュールの対象が広い(Dockerだけではない)
DeNA AIインフラでのTerraform活用について
AIインフラの課題
Terraformによる解決
- Terraformでテンプレート化
- AWS/GCP上にGPUを活用した機械学習インフラをInfra as Codeで素早く構築
Packerによる解決
- AWSはECRで、GCPはGCRで同等のDockerイメージを使いたい
分析インフラの課
- Hadoopをデータレイクにしている
- 分散系のミドルウェアは大変
- バージョンアップ
- 内製スクリプトなどの検証
- 環境の構築にはVagrantを使用
- 分散系のミドルウェアは大変
コンテナ基盤を支えるHashiCorpソフトウェア
ApplibotのDevOpsを支えるTerraform/Packer
前提
- k8sやDockerは使っていない
- LXDのようなシステムコンテナではない
- 独自コンテナ環境を提供する側の話
- Oohori/FastContainer/Haconiwa
デプロイフロー
- Vagrantで開発
- Packerでイメージをつくる
- Packerで作るイメージは最小限で全ロール共通化して使用
- TerraformのProvisionerは使用せずKnife-Zeroを使う
Image作成
使うもの
- RUNDECK
- Packer
Packer
- コンテナイメージの作成
- イメージ作成の流れをテンプレ-ト化
- before
- EC2の作成と破棄を手動でしており、面倒で漏れが多かった
- after
- コマンド一発
- てっくぼっと
負荷試験
使うもの
- Terraform
- 負荷をかけるにはJMeterを使用(EC2)
インフラの規模
- 最終的に本番と同等の環境(コストを考慮)
- 最初は最小スペック。徐々に大きくする
- 夜間は最小スペックに戻す
Terraform
- 拡張/縮小はvarsファイルの切り替えでOK
- hubotを使ってSlackで一発
新規環境構築
- アカウント自体の設定管理
- AWSのほぼすべてのサービスが揃っている
tfnotify - Show Terraform execution plan beautifully on GitHub
tfnotify
Terraformの実行結果をパースして、通知する内製ツール。