SlideShare una empresa de Scribd logo
1 de 81
Terraform
81 PAGES
竹澤 陽|@Sheile
株式会社アーベルソフト
Tech-circle #12
自己紹介 2
仕事関連
名前:竹澤 陽
所属:株式会社アーベルソフト
言語:Ruby, JavaScript, Go, C++, C#, 他色々
仕事:Webシステムのフロントからバックエンドまで全部
仕事以外
Twitter:@Sheile
サークル:RebRank (http://www.rebrank.org)
自己紹介 3
RefRain ~prism memories~
今日の流れ 4
コードによるインフラ構築
(Infrastructure as code)
Terraformとは
メリットとデメリット
ハンズオン
質疑応答
今日の流れ 5
コードによるインフラ構築
(Infrastructure as code)
Terraformとは
メリットとデメリット
ハンズオン
質疑応答
コードによるインフラ構築 6
構築内容を記述した
ファイル
構築の流れ
ツール ネットワーク構築
サーバ構築
セットアップ
代表的なツール 7
ネットワーク、サーバ構築
・CloudFormation(AWS)
・OpenStack Heat(OpenStack)
・Google Deployment Manager(GCP)
サーバ・ミドルウェアのセットアップ
・Puppet
・Chef
・Ansible
・Itamae
・(Docker)
各ツールの対応範囲 8
Puppet, Chef, Ansible
ネットワーク
サーバ構築
ミドルウェア
AWS
Cloud
Formation
Heat
Google
Deployment
Manager
OpenStack GCP
Terraformの対応範囲 9
ネットワーク
サーバ構築
ミドルウェア
AWS OpenStack GCP
他サービス
Terraform
今日の流れ 10
コードによるインフラ構築
(Infrastructure as code)
Terraformとは
メリットとデメリット
ハンズオン
質疑応答
Terraformとは 11
構築内容を記述した
*.tfファイル
構築の流れ
Terraform ネットワーク構築
サーバ構築
セットアップ
Webサービス
Terraformとは 12
Terraformの中身
Terraformの中身 13
Providers
Providers
https://www.terraform.io/docs/providers/index.html
Terraform
CLI Frontend
AWS
Google
OpenStack
Heroku
CloudFlare
DNSimple
Terraformの中身 14
Provisioners
Provisioners
https://www.terraform.io/docs/provisioners/index.html
Terraform
CLI Frontend
local-exec
remote-exec
chef
file
Terraformの使用方法 15
基本的な流れ
1. Terraform configrationを記述
2. planでどんな変更が加わるか確認
3. applyで実際に構築
4. showやaws consoleで結果確認
5. Terraform configrationを修正
6. planでどんな変更が加わるか確認
7. applyで実際に構築
8. 要らなくなったらdestroy
今日の流れ 16
コードによるインフラ構築
(Infrastructure as code)
Terraformとは
メリットとデメリット
ハンズオン
質疑応答
メリットとデメリット 17
メリット
メリット 18
1. システム構成の複製が容易
構築内容を記述した
ファイル
ツール
本番環境
Staging環境
開発環境
メリット 19
2. 似たシステムを参考にした構成が容易
似たシステムを構築する
ファイルを元に編集
ツール 新システム
メリット 20
3. SVN, Gitなどによるバージョン管理が可能
・履歴の管理
・変更者の確認
・差分の確認
・変更の取り消し
アプリ開発と同様の
利点が得られる
メリット 21
4. 設計書よりも厳密な記述・チェックが可能
構築内容を記述した
ファイル
ツール
ネットワーク構築
サーバ構築
セットアップ
設計書 作業者
ネットワーク構築
サーバ構築
セットアップ
メリット 22
5. 既存環境に影響を与えない確認が可能
設定変更など
merge
develop
master
メリット 23
6. コードとシステムの同一性が保障される
構築内容を記述した
ファイル
ツール ネットワーク構築
サーバ構築
セットアップ
※構築されたシステムに手動で変更を加えなければ
メリット 24
7. システム構築の自動テストができる
2. 構築
3. テスト
1. clone
コード変更時や特定曜日に自動実行しますぞ
メリットとデメリット 25
デメリット
デメリット 26
構築内容を記述した
ファイル
1. 初期コストが高い
ツール ネットワーク構築
サーバ構築
セットアップ
構築の試行錯誤
デメリット 27
2. アドホックな修正がいれづらい
構築内容を記述した
ファイル
ツール ネットワーク構築
サーバ構築
セットアップ
デメリット 28
3. データの退避先が必要
Immutable Infrastructure 29
もしくはDisposable Infrastructure
・Amazon RDSやAuroraといった外部DB
・Fluentdを用いたログの退避
今日の流れ 30
コードによるインフラ構築
(Infrastructure as code)
Terraformとは
メリットとデメリット
ハンズオン
質疑応答
ハンズオン 31
一休み……の前に
宿題の確認 32
事前準備
1. Terraformのインストール
2. PATHの追加
3. AWSアカウント
4. AWS IAMユーザの作成(API Key / Secret)
5. StatusCakeユーザの作成(User / API Key)
手元に用意
1. AWS Access Key & Secret Key(credentials.csv)
2. StatusCake Username(メールアドレスは不可)
3. StatusCake API Key
4. AWSに登録した秘密鍵(techcircle12.pem)
ハンズオン 33
おさらい
Terraformの使用方法 34
基本的な流れ
1. Terraform configrationを記述
2. planでどんな変更が加わるか確認
3. applyで実際に構築
4. showやaws consoleで結果確認
5. Terraform configrationを修正
6. planでどんな変更が加わるか確認
7. applyで実際に構築
8. 要らなくなったらdestroy
ハンズオンの全体像 35
ネットワーク図
AWS VPC
10.0.0.0/16
10.0.1.0/24
Gateway
54.xxx.xxx.xx(global/固定)
10.0.1.xxx(private/自動)
Destination Target
10.0.0.0/16 local
0.0.0.0/0 Internet gateway
ハンズオン 36
まずは写経
準備 37
作業ディレクトリの作成
$ mkdir ~/terraform # お好みのディレクトリで
$ cd ~/terraform
Terraform configurationの作成
$ touch main.tf # 空のmain.tfを作成
※Windowsの場合はフォルダを作成してコマンドプロンプトを起動
・Terraformはディレクトリ内の全ての*.tfファイルを構築
※今回はmain.tfのみを使用し、随時追記していきます
AWS provider 38
AWS Provider
provider "aws" {
access_key = "${var.aws_access_key}"
secret_key = "${var.aws_secret_key}"
region = "us-east-1"
}
https://www.terraform.io/docs/providers/aws/
・providerは接続情報を記述
・これ自体では何も作成されない
・Regionは変更可能ですが、今回はus-east-1で
variables 39
動的な値
variable "aws_access_key" {}
variable "aws_secret_key" {}
・variableはplan, apply, destroy時に指定する変数
・対話型インターフェイスで指定
・コマンドオプション(-var) で指定
・環境変数で指定
・terraform.tfvarsファイルで指定
https://www.terraform.io/docs/providers/aws/
実行してみよう 40
terraform plan
$ terraform plan
https://www.terraform.io/docs/commands/plan.html
・variableで定義したAWS KeyとAWS Secretを入力
・まだ接続情報(provider)だけなので、こうなる
No changes. Infrastructure is up-to-date.
terraform.tfvarsファイル 41
variableの値をファイルで指定
aws_access_key="AKIA********"
aws_secret_key="********"
https://www.terraform.io/docs/commands/plan.html
・variableで定義したパラメータを指定
・terraform.tfvarsは自動的に読み込まれる
・VCSに入れる場合は.gitignore / svn:ignore推奨
$ terraform plan
次はこれ 42
ネットワーク図
AWS VPC
10.0.0.0/16
10.0.1.0/24
Gateway
54.xxx.xxx.xx(global/固定)
10.0.1.xxx(private/自動)
Destination Target
10.0.0.0/16 local
0.0.0.0/0 Internet gateway
VPCで他の人と環境を分ける 43
aws_vpc リソース
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
}
・Argument Referenceは指定可能な値
・Attributes Referenceは取得可能な値
・resourceは実際に作成される「何か」
・AWS上のサーバ
・StatusCake上の監視設定
https://www.terraform.io/docs/providers/aws/r/vpc.html
実行してみよう 44
terraform plan
$ terraform plan
https://www.terraform.io/docs/commands/plan.html
・variableで定義したAWS KeyとAWS Secretを入力
・サーバ側には対応するVPCが無いのでこうなる
Plan: 1 to add, 0 to change, 0 to destroy.
やりがちなポカミス 45
ダブルクォート漏れ(数字やtrue/falseは省略可能)
access_key = ${var.aws_access_key}
$漏れ
access_key = "{var.aws_access_key}"
JSONの癖でカンマを付けるとエラー
provider "aws" {
access_key = "${var.aws_access_key}",
secret_key = "${var.aws_secret_key}"
}
=漏れ
access_key "${var.aws_access_key}"
実行してみよう 46
terraform apply
$ terraform apply
https://www.terraform.io/docs/commands/apply.html
・AWS上にVPCが作られる
・ブラウザでAWS Consoleにログインして確認
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
構築結果の確認 47
AWS Console
ハンズオン 48
それでは本番
次はこれ 49
ネットワーク図
AWS VPC
10.0.0.0/16
10.0.1.0/24
Gateway
54.xxx.xxx.xx(global/固定)
10.0.1.xxx(private/自動)
Destination Target
10.0.0.0/16 local
0.0.0.0/0 Internet gateway
Subnetを作る 50
aws_subnet リソース
https://www.terraform.io/docs/providers/aws/r/subnet.html
resource "aws_subnet" "main" {
vpc_id = "${aws_vpc.main.id}"
cidr_block = "10.0.1.0/24"
}
・vpc_idは他リソースのAttributeを動的に参照
"${リソース種別.リソース名.Attribute名}"
・結果の確認は左メニューのSubnets
次はこれ 51
ネットワーク図
AWS VPC
10.0.0.0/16
10.0.1.0/24
Gateway
54.xxx.xxx.xx(global/固定)
10.0.1.xxx(private/自動)
Destination Target
10.0.0.0/16 local
0.0.0.0/0 Internet gateway
Internet gatewayを作る 52
aws_internet_gateway リソース
https://www.terraform.io/docs/providers/aws/r/internet_gateway.html
resource "aws_internet_gateway" "igw" {
vpc_id = "${??????}"
}
・vpc_idは他リソースのAttributeを動的に参照
・結果の確認は左メニューのInternet gateways
"${リソース種別.リソース名.Attribute名}"
次はこれ 53
ネットワーク図
AWS VPC
10.0.0.0/16
10.0.1.0/24
Gateway
54.xxx.xxx.xx(global/固定)
10.0.1.xxx(private/自動)
Destination Target
10.0.0.0/16 local
0.0.0.0/0 Internet gateway
GatewayへのRouteを作る 54
aws_route リソース
https://www.terraform.io/docs/providers/aws/r/route.html
resource "aws_route" "route_to_igw" {
route_table_id = "${aws_vpc.main.main_route_table_id}"
destination_cidr_block = "0.0.0.0/0"
gateway_id = "${??????}"
}
・gateway_idはさっき作った
Internet gatewayのidを使用
・結果の確認はRoute Tables → Routeタブ
次はこれ 55
ネットワーク図
AWS VPC
10.0.0.0/16
10.0.1.0/24
Gateway
54.xxx.xxx.xx(global/固定)
10.0.1.xxx(private/自動)
Destination Target
10.0.0.0/16 local
0.0.0.0/0 Internet gateway
RouteTableをSubnetに紐づける 56
aws_route_table_association リソース
・確認はRoute Tables → Subnet Associations
https://www.terraform.io/docs/providers/aws/r/route_table_association.html
resource "aws_route_table_association" "a" {
subnet_id = "${??????}"
route_table_id = "${aws_vpc.main.main_route_table_id}"
}
次はこれ 57
ネットワーク図
AWS VPC
10.0.0.0/16
10.0.1.0/24
Gateway
54.xxx.xxx.xx(global/固定)
10.0.1.xxx(private/自動)
Destination Target
10.0.0.0/16 local
0.0.0.0/0 Internet gateway
SecurityGroupを作る 58
aws_security_group リソース
https://www.terraform.io/docs/providers/aws/r/security_group.html
resource "aws_security_group" "allow_ssh_httpd" {
name = "allow_ssh_httpd"
description = "Allow ssh and HTTP inbound traffic"
vpc_id = "${aws_vpc.main.id}"
ingress {
from_port = ??????
to_port = ??????
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = ??????
to_port = ??????
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
~次ページへ続く
・HTTP(80番)とSSH(22番)のポートを解放
SecurityGroupを作る 59
aws_security_group リソース
https://www.terraform.io/docs/providers/aws/r/security_group.html
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
・確認は左メニューのSecurity Groups
→ allow_ssh_httpd → Inbound rules
次はこれ 60
ネットワーク図
AWS VPC
10.0.0.0/16
10.0.1.0/24
Gateway
54.xxx.xxx.xx(global/固定)
10.0.1.xxx(private/自動)
Destination Target
10.0.0.0/16 local
0.0.0.0/0 Internet gateway
Instance(サーバ)を作る 61
aws_instance リソース
https://www.terraform.io/docs/providers/aws/r/instance.html
resource "aws_instance" "web" {
depends_on = ["aws_internet_gateway.igw"]
ami = "ami-60b6c60a"
key_name = "techcircle12"
subnet_id = "${aws_subnet.main.id}"
vpc_security_group_ids = ["${??????}"]
instance_type = "t2.micro"
tags {
Name = "Terraform"
}
}
Instance(サーバ)を作る 62
aws_instance リソース
・確認はVPCではなくEC2のInstancesメニュー
https://www.terraform.io/docs/providers/aws/r/instance.html
次はこれ 63
ネットワーク図
AWS VPC
10.0.0.0/16
10.0.1.0/24
Gateway
54.xxx.xxx.xx(global/固定)
10.0.1.xxx(private/自動)
Destination Target
10.0.0.0/16 local
0.0.0.0/0 Internet gateway
固定IPを振る 64
aws_eip リソース
・確認は左メニューのElastic IPs
・試しにSSHでつないでみるのもアリ
https://www.terraform.io/docs/providers/aws/r/eip.html
resource "aws_eip" "web" {
depends_on = ["aws_internet_gateway.igw"]
instance = "${??????}"
vpc = true
}
# aws_eip.public_ipの確認
terraform show
# ssh接続(windowsの人はターミナルソフトをもう一つ起動するなど)
ssh –i techcircle12.pemのパス ec2-user@IPアドレス
間に合わなかった場合 65
ここまでの内容を記述したmain.tf
http://bit.ly/1WPSUKK
いち・だぶりゅ・ぴー・えす・ゆー・けー・けー
※大文字は太文字
ハンズオン 66
インフラ以外の構築
次はこれ 67
ネットワーク図
AWS VPC
10.0.0.0/16
10.0.1.0/24
Gateway
54.xxx.xxx.xx(global/固定)
10.0.1.xxx(private/自動)
Destination Target
10.0.0.0/16 local
0.0.0.0/0 Internet gateway
Webサーバのインストール 68
remote-exec provisioner
・Elastic IP(public IP)を付ける前はSSH不可
※(今回はやらないが)subnetの設定を変えれば可能
・実行するコマンドはyumで手軽に
https://www.terraform.io/docs/provisioners/remote-exec.html
https://www.terraform.io/docs/provisioners/connection.html
Webサーバのインストール 69
remote-exec provisioner
resource "aws_eip" "web" {
~省略~
provisioner "remote-exec" {
inline = [
"sudo yum install -y httpd",
"sudo service httpd start",
"sleep 10"
]
connection {
host = "${self.public_ip}"
user = "ec2-user"
private_key = "${var.private_key_path}"
}
}
}
Webサーバのインストール 70
variableの追加
variable "private_key_path" {}
・SSHで接続するための秘密鍵として
techcircle12.pemへの絶対パスを指定
・terraform.tfvarsに追記しておくと楽
Resourceの再構築 71
再構築
$ terraform plan
No changes. Infrastructure is up-to-date.
$ terraform apply
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
$ terraform destroy --target aws_eip.web
Apply complete! Resources: 0 added, 0 changed, 1 destroyed.
$ terraform plan
Plan: 1 to add, 0 to change, 0 to destroy.
$ terraform apply
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
・provisionerの追加はResourceの再構築が必要
次はこれ 72
ネットワーク図
AWS VPC
10.0.0.0/16
10.0.1.0/24
Gateway
54.xxx.xxx.xx(global/固定)
10.0.1.xxx(private/自動)
Destination Target
10.0.0.0/16 local
0.0.0.0/0 Internet gateway
監視設定の作成 73
StatusCake provider
https://www.terraform.io/docs/providers/statuscake/
variable "statuscake_user" {}
variable "statuscake_apikey" {}
provider "statuscake" {
username = "${var.statuscake_user}"
apikey = "${var.statuscake_apikey}"
}
監視設定の作成 74
statuscake_test リソース
・無料プランの場合check_rateは300秒が最低
・確認は http://www.statuscake.com/
https://www.terraform.io/docs/providers/statuscake/r/test.html
resource "statuscake_test" "web" {
website_name = "terraform test"
website_url = "http://${??????}/"
test_type = "HTTP"
check_rate = 300
}
間に合わなかった場合 75
ここまでの内容を記述したmain.tf
http://bit.ly/20vegiH
に・ぜろ・ぶい・いー・じー・あい・えいち
※大文字は太文字
ハンズオン 76
時間が余った人用
次はこれ 77
ネットワーク図
AWS VPC
10.0.0.0/16
10.0.1.0/24
Gateway
54.xxx.xxx.xx(global/固定)
10.0.1.xxx(private/自動)
Destination Target
10.0.0.0/16 local
0.0.0.0/0 Internet gateway
同一リソースを複数作成 78
count Attribute
・全てのResourceにcountが指定可能
・同一のResourceが複数作成される
・Resourceの参照時は添え字を追加する
・Listで受け取ることも可能
https://www.terraform.io/docs/configuration/resources.html
resource "aws_instance" "web" {
count = 2
~省略~
}
aws_instance.web.1.public_ip
aws_instance.web.*.public_ip
時間が余った人用 79
remote-exec (provisioner)
https://www.terraform.io/docs/provisioners/remote-exec.html
output
https://www.terraform.io/intro/getting-started/outputs.html
対象サーバにssh/winrmで自動ログインしてコマンドを実行
バックエンドサーバの場合、踏み台サーバ(basition_host)の設定も可能
aws_intanceの中に書くのが基本
→全instanceの構築終了後に実行したい場合などはnull_resourceの
中に書くと自分以外のサーバにssh/winrm可能
terraform outputコマンドで一覧が取得可能
必要な情報をまとめて出力したり、他アプリとの連携などに利用可能
今日の流れ 80
コードによるインフラ構築
(Infrastructure as code)
Terraformとは
メリットとデメリット
ハンズオン
質疑応答
終わりに 81
@Sheile
Twitterアカウント
連絡先
sheile1024@gmail.com
http://bit.ly/1JIN8bS
アンケート
いち・じぇい・あい・えぬ・はち・びー・えす
※大文字は太文字
後始末を忘れずに
$ terraform destroy

Más contenido relacionado

La actualidad más candente

CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021whywaita
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Masahito Zembutsu
 
PenTesterが知っている危ないAWS環境の共通点
PenTesterが知っている危ないAWS環境の共通点 PenTesterが知っている危ないAWS環境の共通点
PenTesterが知っている危ないAWS環境の共通点 zaki4649
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話JustSystems Corporation
 
EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)Sugawara Genki
 
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...Akihiro Suda
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門Tsukasa Kato
 
Lifecycle of a pod
Lifecycle of a podLifecycle of a pod
Lifecycle of a podHarshal Shah
 
Istioサービスメッシュ入門
Istioサービスメッシュ入門Istioサービスメッシュ入門
Istioサービスメッシュ入門Yoichi Kawasaki
 
RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門Etsuji Nakai
 
5分で分かるgitのrefspec
5分で分かるgitのrefspec5分で分かるgitのrefspec
5分で分かるgitのrefspecikdysfm
 
インフラCICDの勘所
インフラCICDの勘所インフラCICDの勘所
インフラCICDの勘所Toru Makabe
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
AWS App RunnerでASP.NET Core Webアプリケーションを動かしてみた
AWS App RunnerでASP.NET Core Webアプリケーションを動かしてみたAWS App RunnerでASP.NET Core Webアプリケーションを動かしてみた
AWS App RunnerでASP.NET Core Webアプリケーションを動かしてみたKen'ichirou Kimura
 
Rancher and Kubernetes Best Practices
Rancher and  Kubernetes Best PracticesRancher and  Kubernetes Best Practices
Rancher and Kubernetes Best PracticesAvinash Patil
 
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)NTT DATA Technology & Innovation
 

La actualidad más candente (20)

CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 
PenTesterが知っている危ないAWS環境の共通点
PenTesterが知っている危ないAWS環境の共通点 PenTesterが知っている危ないAWS環境の共通点
PenTesterが知っている危ないAWS環境の共通点
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)
 
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門
 
Lifecycle of a pod
Lifecycle of a podLifecycle of a pod
Lifecycle of a pod
 
Istioサービスメッシュ入門
Istioサービスメッシュ入門Istioサービスメッシュ入門
Istioサービスメッシュ入門
 
RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門
 
5分で分かるgitのrefspec
5分で分かるgitのrefspec5分で分かるgitのrefspec
5分で分かるgitのrefspec
 
インフラCICDの勘所
インフラCICDの勘所インフラCICDの勘所
インフラCICDの勘所
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
AWS App RunnerでASP.NET Core Webアプリケーションを動かしてみた
AWS App RunnerでASP.NET Core Webアプリケーションを動かしてみたAWS App RunnerでASP.NET Core Webアプリケーションを動かしてみた
AWS App RunnerでASP.NET Core Webアプリケーションを動かしてみた
 
【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう
 
Rancher and Kubernetes Best Practices
Rancher and  Kubernetes Best PracticesRancher and  Kubernetes Best Practices
Rancher and Kubernetes Best Practices
 
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
 

Similar a Step by stepで学ぶTerraformによる監視付きAWS構築

今からでも間に合う!インフラ自動化超入門 @渋谷
今からでも間に合う!インフラ自動化超入門 @渋谷今からでも間に合う!インフラ自動化超入門 @渋谷
今からでも間に合う!インフラ自動化超入門 @渋谷Daigou Harada
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Yasuhiro Horiuchi
 
Node.js勉強会 Framework Koa
Node.js勉強会 Framework KoaNode.js勉強会 Framework Koa
Node.js勉強会 Framework Koakamiyam .
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略Hiroshi SHIBATA
 
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphereQuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphereWataru Unno
 
Cloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a ServiceCloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a ServiceShunsuke Kurumatani
 
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践Yoshifumi Kawai
 
Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010stomita
 
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますElixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますfukuoka.ex
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでRyo Nakamaru
 
20170422 azure portal cli 使いこなし
20170422 azure portal cli 使いこなし20170422 azure portal cli 使いこなし
20170422 azure portal cli 使いこなしTakayoshi Tanaka
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所真吾 吉田
 
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいはじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいKazumi IWANAGA
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説Akira Inoue
 
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」fukuoka.ex
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会Makoto SAKAI
 

Similar a Step by stepで学ぶTerraformによる監視付きAWS構築 (20)

今からでも間に合う!インフラ自動化超入門 @渋谷
今からでも間に合う!インフラ自動化超入門 @渋谷今からでも間に合う!インフラ自動化超入門 @渋谷
今からでも間に合う!インフラ自動化超入門 @渋谷
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
 
Using Windows Azure
Using Windows AzureUsing Windows Azure
Using Windows Azure
 
Node.js勉強会 Framework Koa
Node.js勉強会 Framework KoaNode.js勉強会 Framework Koa
Node.js勉強会 Framework Koa
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphereQuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
 
Cloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a ServiceCloud Foundry: Open Platform as a Service
Cloud Foundry: Open Platform as a Service
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
 
Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010
 
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますElixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
20170422 azure portal cli 使いこなし
20170422 azure portal cli 使いこなし20170422 azure portal cli 使いこなし
20170422 azure portal cli 使いこなし
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいはじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
 
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方
 
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
 

Último

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 

Último (10)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

Step by stepで学ぶTerraformによる監視付きAWS構築

Notas del editor

  1. Puppetの初出は2005年
  2. *.tfファイルはTerraform configurations
  3. planの時点では既存システムに何も影響を与えないのでガシガシ実行してOK
  4. ・同一構成ならいくらでも複製できる ・Stagingでは動いたのに本番環境では何故かエラーが出る、という問題を減らせる
  5. ・既に動いている実績のあるファイルを使用できる
  6. ・設計書が正しくても構築時に失敗 ・手順書のレビューと比べて機械的なValidationが掛けやすくポカミスを抑制できるというのも上げられる
  7. ブランチを切った開発が可能 Masterにある定義ファイルとDevelopにある定義ファイルは互いに影響しないので、本番に影響を与えずに動作検証ができる
  8. ・例えば、長年使った既存システムがここにあります。 お客さんから「新サーバへの移行」を依頼された場合、 あなたの手元にある設計書は果たして現在のシステムと同一でしょうか?信用できますか?
  9. 自動テスト自体は手作業で作ったインフラに対してもできる JenkinsなどのCIツールから叩ける レベル感も色々:chefspec, test-kitchen, serverspec
  10. 記述方法の問題と、ファイルを作る前に実物が出来るのでは問題 JSON、YAMLといった汎用的なデータフォーマットを使っているツールもある RubyによるDSL、Terraform自身もHCLというJSONに似ているがちょっと違う
  11. 直接手を入れるとコード=システムの関連が崩れる 両方に入れる コードに入れてすぐ自動構築する
  12. これはContainerでも問題になるパターン Terraformは差分を適用することで、既存のインスタンスをそのまま使える →変更の種類によっては無理。 Chefの場合は冪等性によって、既存環境を残しつつ修正を適用できるようになっていますが、変更内容によっては再構築が必要になることがあります
  13. planの時点では既存システムに何も影響を与えないのでガシガシ実行してOK
  14. planの時点では既存システムに何も影響を与えないのでガシガシ実行してOK
  15. terraformはディレクトリ単位で処理します
  16. VPCを作る所までは写経です
  17. VPCを作る所までは写経です
  18. 時間が余るようならAnsibleとかremote-execとか。ChefはChef serverが必要なのでちょっとつらいか。
  19. 時間が余るようならAnsibleとかremote-execとか。ChefはChef serverが必要なのでちょっとつらいか。
  20. 時間が余るようならAnsibleとかremote-execとか。ChefはChef serverが必要なのでちょっとつらいか。
  21. 時間が余るようならAnsibleとかremote-execとか。ChefはChef serverが必要なのでちょっとつらいか。