プログラマーな日々

プログラマーです。AWS認定ソリューションアーキテクト–アソシエイト。好きなものは、C#, TaskChute Cloud, WorkFlowy, Backlog, AWSです。

「DevOpsを支える今話題のHashiCorpツール群について」に参加してきた

「DevOpsを支える今話題のHashiCorpツール群について」に参加してきたので、メモを共有します。

hashicorp.connpass.com

HashiCorpについてご紹介とツール解説

  • Terraform
    • クラウドを抽象化
  • Vault
    • セキュリティ
    • IPアドレスではなく、アイデンティベースの管理
  • Nomad
    • k8sに似ている
    • スケジュールの対象が広い(Dockerだけではない)

DeNA AIインフラでのTerraform活用について

speakerdeck.com

AIインフラの課題

Terraformによる解決

  • Terraformでテンプレート化
  • AWS/GCP上にGPUを活用した機械学習インフラをInfra as Codeで素早く構築

Packerによる解決

  • AWSはECRで、GCPはGCRで同等のDockerイメージを使いたい

分析インフラの課

  • Hadoopをデータレイクにしている
    • 分散系のミドルウェアは大変
      • バージョンアップ
      • 内製スクリプトなどの検証
        • 環境の構築にはVagrantを使用

コンテナ基盤を支えるHashiCorpソフトウェア

speakerdeck.com

ApplibotのDevOpsを支えるTerraform/Packer

speakerdeck.com

前提

  • 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

speakerdeck.com

tfnotify

Terraformの実行結果をパースして、通知する内製ツール。