OpenStack
Terraform/Pulumi
OpenStack Days Tokyo 2019
NTT 1
(Keiichi Hikita)
• Terraform OpenStack ( )
• Terraform 2 ,
Git, GitHub,
Pull Request
OpenStack Heat,
AWS CloudFormation
(Keiichi Hikita)
NTT 3
Enterprise Cloud OpenStack
• GUI(OpenStack Horizon )
• ( Heat/Flame )
OSS
• Horizon
• Heat-Dashboard, Qinling-Dashboard
• Terraform Provider (for Enterprise Cloud)
1. IaC
2. Terraform 4 (+Demo)
3. Pulumi (+Demo)
1. IaC
Original ComponentsOpenStack Components
Enterprise Cloud 2.0
• 2016/3 11
• 22,509 VM / 61,371 vCPUs ( )
• 2,520 Hypervisors ( )
•
• OpenStack API
Keystone Heat Swift
Nova Cinder Glane
SD-Exchange 6
…
…
: 2019/3/23
Horizon
GUI
IaC(Infrastructure As Code)
/ /
: https://www.ntt.com/business/services/cloud/iaas/enterprise-cloud/scene/scene02.html
お客様インフラ
IaC(Infrastructure As Code) ( )
SI IaaS
SI /SIer
ネットワーク機能 ネットワーク機能 ネットワーク機能
ECL2.0
8
自動化したい
レイヤー
Terraform
• 複数のサービスに対応可能
• 自社サービス( )機能の組み込みが可能
なオーケストレーションツールの必要性
1 3 32 12 12
3 2 "
12
Terraform
• Heat, CloudFormation (HCL or JSON) API
• OpenStack AWS, Provider(= 0 )
• State
Provider
1 API(tf 0 )
1
state(
0 )
State
(teraform.tfstate)
1 2
3
terraform plan
( )
terraform apply
( )
New!!HCL
.tf
Provider ≒ 1
Go
CRUD
tf
SDK
API
SDK
State
State ≒
• Terraform JSON
• 2
• tf1 State plan/apply
State
tf1
API
• artifactory
• azurerm
• consul
• etcd
• etcdv3
• gcs
• http
• manta
• oss
• pg
• s3
• swift
• terraform enterprise
JSON
2. Terraform
Terraform
1. CI state
2. tf (Pull Request=PR) 1 41
3. Terraform Terraform
terraform plan
State
by
Terraform
by
Terraform
③ 既存環境のエクス
ポート機能の必要性
GitHub
State
tf 1
Pull
Request
State
terraform apply
① Stateの一元管理/
共有の必要性
② PRベースで変
更反映まで行える
仕組みの必要性
Cloud
State
GitHub
Terraformer
Atlantis
Terraform Cloud Free Tier
• 2019/5/16 HashiCorp Remote State
• 1
• 2 (Collaborate on Plans and Applies, Full Workflow)
1: https://www.hashicorp.com/blog/introducing-terraform-cloud-remote-state-management
5/16のHashiCorp
Blogより(※1)
変更履歴が
一覧で表示
Atlantis
• GitHub Pull Request( ) terraform plan, apply
• SaaS
STEP1:
PR
STEP2:
plan
STEP3:
apply
Atlantis ( )
• Terraform Cloud
• Collaborate on Plans and Applies Atlantis ( )
Terraformer
• API Provider tf State
• 1
1 3 32 12 12
3 2 "
12
State
terraformer
import Terraformer
.tf
Providers
SDKs
Atlantis
Terraform
GitHub
Cloud
State
tfファイルに変更を
加えてPR
Webhook経由で
Atlantisがそれを検知
しplan実行
結果をGitHubに反映
レビュワーがGitHub上
でplan結果を確認。
GItHub経由でAtlantis
にapplyを指示
1 2
3
Atlantisがterraform
applyを実行し結果を
GitHubに反映
4
StateはTerraform
Cloud上で履歴含めて
一元管理
5
最後に作成した環境を
tfファイル、Stateと
してエクスポート
6
Terraformer
State
(File)
3. Pulumi
Pulumi
Terraform
1
3
app.pulumi.com
State 2
2
• HCL(HashiCorp Configuration Language)
• 5 0.12
• JavaScript
• TypeScript
• Python
• Go
• 226( 1)
• Official Provider : 105
• Community Provider: 121
• Terraform
• pulumi-terraform ( 2) Provider4
State •
•
• 5/16 Terraform Cloud
•
State 2 •
• Terraform Cloud
( 3)
• $50/ (TEAM STARTER Plan ( 4))
Terraform/Pulumi
1: 2019/7/10
2: https://github.com/pulumi/pulumi-terraform
3: https://www.terraform.io/docs/enterprise/free/index.html
4: https://www.pulumi.com/pricing/
Pulumi Demo
pulumi-ecl
pulumi-terraform
sdk
python
nodejs
go
Pulumi-terraform,
pulumi_eclを利用し
てPulumi用SDKを生
成した状態
1
Terraformおよび
Pulumi(Python, Node.js)でキー
ペア+インスタンスを作成 2
どのようなHTTP通
信が行われているか
をCharles上で
キャプチャし表示 3
app.pulumi.com上で
Stateがどのように見
えているかを表示
4
python/nodejs
7
• Terraform
• Pulumi /Terraform
Cloud
Terraformer
• 2 2Qiita2 7
• URL
Terraform: https://www.terraform.io/
Terraform Cloud Free Tier: https://app.terraform.io/signup?utm_source=banner&utm_campaign=intro_tf_cloud_remote
Pulumi: https://www.pulumi.com/
Atlantis: https://www.runatlantis.io/
Terraformer: https://github.com/GoogleCloudPlatform/terraformer
Atlantis
OpenStack上の環境構築自動化に向けたTerraform/Pulumiの活用

OpenStack上の環境構築自動化に向けたTerraform/Pulumiの活用