HashiCorp 会社紹介
Takayuki Kaburagi, Solutions Engineer,
HashiCorp Japan K.K
@kabuctl
kabu@hashicorp.com
https://blog.kabuctl.run
https://github.com/tkaburagi
Copyright © 2019 HashiCorp
© 2018 HashiCorp
Networking
Connect infrastructure
and applications
Development
Run applications
Security
Secure applications and
infrastructure
Operations
Provision Infrastructure
The 4 essential
elements of
dynamic
infrastructure
20THE HASHICORP STACK
About
Terraform
400+
20k+
12.5k+
150+
1200+
2014
顧客数
週間ダウンロード数
GitHub スター
連携プロバイダ
コントリビュータ
プロダクトローンチ
Terraformによるプロビジョニング自動化
● パラメータシートでの構成管理
● コンソールによりGUIでの操作
● 担当チーム間でのやり取り
● 一部スクリプト化して自動化
● 使うIaaSでAPIやGUIの利用も異なる
● Infrastructure as Codeにてコード化
● TerraformがIaaS APIを実行し、コード
に従って環境を構築
● 様々なシステム構成を定義可能
● マルチクラウドで同じ仕組みを利用
よくある一般的な運用 Terraformによる自動化
作業時間やコミュニケーションが増え、
人的ミスも起こりやすい
自動化や標準化が促進され、
ミスや作業にかかる工数を改善
Terraform: Infrastructure as Code
resource "vsphere_virtual_machine" "vm" {
name = "terraform-test"
resource_pool_id = "******"
datastore_id = "******"
num_cpus = 2
memory = 1024
network_interface {
network_id = "******"
}
disk {
label = "disk0"
size = 20
}}
tfconfig
tfstate
Provider 一覧
...
Core Provider
Infrastructure as Code
再利用可能なソースコード
としてインフラの構成を
定義する
インフラのあるべき姿を
コードで検証・レビューする
Multi-Cloud Management
ワークフローは変えずに、
プライベートクラウド・
パブリッククラウド・
外部サービスを導入
Self-Service
Infrastructure
デベロッパーとオペレータ間で
インフラの
プロビジョニングを共有する
OSSユーザの一般的なワークフロー
Plan
Apply
Cost Estimation
Policy Check
State
Terraform Enterprise
Vars
ModuleRegistry
Terraform
Enterprise
機能名 概要
Auth Integration / RBAC
Active Directory, Okta, OneLoginなどとの認証連携とロールに基づいたア
クセスコントロールのサポート
Variable Storage キーやパスワードを安全に保管し、簡単に利用するためのストレージ
State Storage
ステートのシングルレポジトリを提供し、プラン時の読み込みやバージョン管理
等を実施
VCS Connection Version Controlシステムとのネイティブな連携
Cost Estimation プロビジョニングするIaaSのコストを算出
Policy as Code (Sentinel) ポリシーを設定し、レビュー作業を自動化
Private Module Registry チーム間に閉じたモジュールレジストリとエディタを提供
Audit Logs Terraform上の監査ログの取得
Notifications SlackやWebhookなどによる通知設定
Plan
Apply
Cost Estimation
Policy Check
State
VCS Integration
Vars
ModuleRegistry
● Public, PrivateのVCSとネイティブで連携
● Webhookで更新を取得
● ブランチごとにTerraformのワークスペースを分割可
能(Test / Dev / QA)
● GitHub, GitLab, BitBucket
Plan
Apply
Cost Estimation
Policy Check
State
Variables Storage
Vars
ModuleRegistry
● Security上重要なデータをVaultで暗号化し格納
● Plan時に自動でvarにインジェクトされ、ファイルやOS
にセットが不要
Plan
Apply
Cost Estimation
Policy Check
State
State Storage
Vars
ModuleRegistry
● Plan時に内部のステートファイル用レポジトリから最新が取
得され、チーム間での共有が不要に
● ステートファイルはVaultで暗号化され保存される
● バージョン管理がなされ、構成変化をトラッキング可能
Plan
Apply
Cost Estimation
Policy Check
State
Cost Estimation
Vars
ModuleRegistry
● Plan後にIaaSのコスト予測を実行し、事前に把握可能に
● コンフィグでプロビジョニングするIaaSコストに対する予測
● ポリシーチェックと組み合わせ承認フローに入れるこも可能
Plan
Apply
Cost Estimation
Policy Check
State
Policy as Code (Sentinel)
Vars
ModuleRegistry
● プロジェクトのポリシーをコード化し承認フローを自動化
● Sentinel Languageによる記述
● ポリシーの例
○ インスタンスタイプ / インスタンスサイズ
○ 実行可能時間
○ リージョン, Availability Zone
○ タグ / ラベルの付与
○ セキュリティグループのCIDRブロックのレンジ
Plan
Apply
Cost Estimation
Policy Check
State
Private Modul Registry
Vars
ModuleRegistry
● チーム内だけで再利用したいコンフィグレーションをモジュール化
し、再利用可能に
● Design Configurationによりモジュールに定義されている変数を
自動で検知
● GitHubのリリースと連携し、同じモジュール内でのバージョン選
択が可能
Terraformによる運用自動化
ソリューションイメージ
● ポリシーのコード化と共通化
○ IaaSリソース利用量の制限
○ NWセキュリティポリシー
SRE
SRE
SRE
● 各コンポーネントの共通モジュール化
○ VM
○ ネットワーク
○ アクセスコントロール
○ データベースなど
● 共通モジュールを活用したシステム構成のテン
プレート化
○ 環境: 開発、ステージング
○ サーバ構成
○ データベース設定
VM Postgres Ruby
Load
Balancer
MySQL ACL
Terraform
Enterprise
Delivery
Methods
Hosted SaaS
Terraform Cloud
▪ No special requirements*
▪ No internal resources to
manage Terraform
▪ No policy or governance
requirements
Private Install
Private Terraform
▪ Infrastructure & applications
behind a firewall
▪ Data sovereignty requirements
▪ Regulatory compliance
requirements
▪ HA requirements
▪ Performance requirements
ENTERPRISE ENTERPRISE
HASHICORP
INFRASTRUCTURE
ORGANIZATION’S
INFRASTRUCTURE
HashiCorp Terraform Enterprise 紹介

HashiCorp Terraform Enterprise 紹介