SlideShare uma empresa Scribd logo
1 de 93
Baixar para ler offline
, 

@wan2land
Incheon
Infrastructure as Code
(with AWS, Hashicorp)
Incheon
(@wan2land),
“ ”
www.monkeyuser.com/2018/architecture
www.monkeyuser.com/2018/architecture
• AWS 

• Terraform 

• Ansible 

• Packer
.
1. Product(Backend + Frontend) .
2. t2.micro ( ..) .
3. git clone Product .
.
4. git pull, build .
1. AMI .
2. .
3. logrotate
.
1. .bash_history .
2. Stackoverflow .
1. DynamoDB
2. DynamoDB Lambda → RDS
3. DynamoDB Stream Kinesis Firehose
4. Kinesis Firehose S3
5. S3 Athena
6. IAM
1. DynamoDB
2. DynamoDB Lambda → RDS
3. DynamoDB Stream Kinesis Firehose
4. Kinesis Firehose S3
5. S3 Athena
6. IAM
..
Infrastructure as Code
…

1. AWS :
2. Terraform :
3. Packer :
4. Ansible :
Infrastructure as Code
…

1. AWS :
2. Terraform :
3. Packer :
4. Ansible :
?
,
( )
Incheon
.
AWS
AWS .
, AWS .
AWS
,
direnv .
blog.outsider.ne.kr/1306
AdministratorAccess ,
.
docs.aws.amazon.com/ko_kr/general/latest/gr/aws-arns-and-namespaces.html
IAM?
AWS ,
Action + Resource .
Action .
( ..)
#	.envrc	파일에	다음과	같이	작성합니다.

export	AWS_ACCESS_KEY_ID='AKIAJQNQ5AHCU7DO2XTQ'

export	AWS_SECRET_ACCESS_KEY='*******'	#	비밀	액세스	키
.envrc
direnv:	error	.envrc	is	blocked.	Run	`direnv	allow`	to	
approve	its	content.

$	direnv	allow
AWS
,

Terraform, Packer 

AWS .
Terraform
(EC2, RDS, VPC )
.
AWS .
www.terraform.io/docs/providers
Desired State Current State Real State
Terraform -
AWS CLI Parameter
. ( )
docs.aws.amazon.com/ko_kr/cli/latest/userguide/
cli-ec2-launch.html
www.terraform.io/docs/providers/aws/r/
instance.html
Terraform -
Terraform ,

AWS CLI .
#	AWS	인스턴스	만들기

resource	"aws_instance"	"service"	{

		count	=	1

		ami											=	"${data.aws_ami.python3_latest.id}"

		instance_type	=	"t2.small"

		key_name	=	"${var.ec2_keyname}"

		subnet_id	=	"${aws_subnet.default.id}"

		vpc_security_group_ids	=	[

				"${aws_security_group.ssh.id}",

		]

		root_block_device	{

				volume_size	=	200

		}

		private_ip	=	"10.0.1.${11	+	count.index}"

		associate_public_ip_address	=	true

		tags	{

				Name	=	"myservice"

		}

}
main.tf
#	AWS	인스턴스	만들기

resource	"aws_instance"	“service"	{

		count	=	1

		ami											=	"${data.aws_ami.python3_latest.id}"

		instance_type	=	"t2.small"

		key_name	=	"${var.ec2_keyname}"

		subnet_id	=	"${aws_subnet.default.id}"

		vpc_security_group_ids	=	[

				"${aws_security_group.ssh.id}",

		]

		root_block_device	{

				volume_size	=	200

		}

		private_ip	=	"10.0.1.${11	+	count.index}"

		associate_public_ip_address	=	true

		tags	{

				Name	=	"myservice"

		}

}
AMI ..
Subnet ..
Security Group ..
main.tf
#	Subnet도	필요해서...

resource	"aws_subnet"	"default"	{

		vpc_id	=	"${aws_vpc.default.id}"

		cidr_block	=	"10.0.0.0/20"

		availability_zone	=	"ap-northeast-2a"

		map_public_ip_on_launch	=	true	#	인스턴스	생성시	자동	IP	매핑

		tags	{

				Name	=	"default"

		}

}
main.tf
Terraform
• aws_instance ..
• ami ..
• subnet
• vpc
• route table
• security group
• vpc
• ….
,

.
Terraform - import
state
.
www.terraform.io/docs/import/usage.html
Terraform - data resource
data .
www.terraform.io/docs/configuration/data-
sources.html
Terraform
ID .
#	AWS	인스턴스	만들기

resource	"aws_instance"	“service"	{

		count	=	1

		ami											=	"${data.aws_ami.python3_latest.id}"

		instance_type	=	"t2.small"

		key_name	=	"${var.ec2_keyname}"

		subnet_id	=	"subnet-00000000000000000"

		vpc_security_group_ids	=	[

				"sg-00000000000000000",

		]

		root_block_device	{

				volume_size	=	200

		}

		private_ip	=	"10.0.1.${11	+	count.index}"

		associate_public_ip_address	=	true

		tags	{

				Name	=	"myservice"

		}

}
main.tf
Terraform
ID ,
.
Terraform -
terraform apply
.
Terraform - tfstate
terraform.tfstate
.gitignore .
Desired State Current State Real State
Terraform - tfstate
tfstate PC
.
resource	"aws_vpc"	"default"	{

		cidr_block	=	"10.0.0.0/16"

		enable_dns_hostnames	=	true	#	인스턴스	생성시	dns	자동	매핑

		tags	{

				Name	=	"default"

				Terraform	=	"true"

		}

}

resource	"aws_internet_gateway"	"default"	{

		vpc_id	=	"${aws_vpc.default.id}"

		tags	{

				Name	=	"default"

				Terraform	=	"true"

		}

}

resource	"aws_default_route_table"	"default"	{

		default_route_table_id	=	"${aws_vpc.default.default_route_table_id}"

		route	{

				cidr_block	=	"0.0.0.0/0"

				gateway_id	=	"${aws_internet_gateway.default.id}"

		}

		tags	{

				Name	=	"default"

				Terraform	=	"true"

		}

}

resource	"aws_subnet"	"default_a"	{

		vpc_id	=	"${aws_vpc.default.id}"

		cidr_block	=	"10.0.0.0/20"

		availability_zone	=	"ap-northeast-2a"

		map_public_ip_on_launch	=	true

		tags	{

				Name	=	"default-a"

				Terraform	=	"true"

		}

} main.tf
resource	"aws_security_group"	"ssh"	{

		name								=	"ssh"

		description	=	"SSH"

		vpc_id	=	"${aws_vpc.default.id}"

		tags	{

				Name	=	"ssh"

				Terraform	=	"true"

		}	
		ingress	{

				from_port			=	22

				to_port					=	22

				protocol				=	"tcp"

				description	=	"SSH"

				cidr_blocks	=	"10.0.0.0/16"

		}	
		egress	{

				from_port			=	0

				to_port					=	0

				protocol				=	"-1"

				description	=	"all"

				cidr_blocks						=	["0.0.0.0/0"]

				ipv6_cidr_blocks	=	["::/0"]

		}

}
resource	"aws_security_group"	"http"	{

		name								=	"http"

		description	=	"HTTP"

		vpc_id	=	"${aws_vpc.default.id}"

		tags	{

				Name	=	"http"

				Terraform	=	"true"

		}	
		ingress	{

				from_port			=	80

				to_port					=	80

				protocol				=	"tcp"

				description	=	"HTTP"

				cidr_blocks						=	["0.0.0.0/0"]

		}	
		egress	{

				from_port			=	0

				to_port					=	0

				protocol				=	"-1"

				description	=	"all"

				cidr_blocks						=	["0.0.0.0/0"]

				ipv6_cidr_blocks	=	["::/0"]

		}

} main.tf
resource	"aws_instance"	"service"	{

		count	=	1

		ami											=	"${data.aws_ami.python3_latest.id}"

		instance_type	=	"t2.small"

		key_name	=	"${var.ec2_keyname}"

		subnet_id	=	"${aws_subnet.default_a.id}"

		vpc_security_group_ids	=	[

				"${aws_security_group.ssh.id}",

				"${aws_security_group.http.id}",

		]

		root_block_device	{

				volume_size	=	200

		}

		private_ip	=	"10.0.1.${11	+	count.index}"

		associate_public_ip_address	=	true

		tags	{

				Name	=	"myservice"

		}

} main.tf
Terraform
VPC ,

VPC .

VPC , .
Terraform Registry
python pip .
registry.terraform.io
Terraform Registry
. ,
.
…
55
.
Incheon
Terraform Provisioner
chef / puppet
Ansible .
Ansible
ansible-playbook .
(Push) ,

Ansible .
.
Ansible vs Shell
Ansible .

, 100
.
( ,  : idempotent)    
,
.
Ansible vs Shell
, ,
(Shell)
.

Ansible
.
Ansible - Shell
Ansible
.
.
docs.ansible.com/ansible/2.5/modules/
shell_module.html
#	fstab에	device를	추가하는	예시..

grep	-q	$DEVICE	/etc/fstab

if	[	$?	==	1	];	then

				echo	"append	fstab..."

				echo	"$DEVICE	$MOUNTPOINT	ext4	defaults,nofail	0	2"	|	sudo	tee	--append	/etc/
fstab	>	/dev/null

else

				echo	"skip	append	fstab"

fi
Ansible + Terraform
Terraform Ansible 

Terraform local_file .
resource	"local_file"	"ansible_hosts"	{

		#	서버가	여러대일수도	있어서	*를	사용합니다.

		content	=	<<EOF

[service]

${join("n",	aws_instance.service.*.public_ip)}

EOF

		filename	=	"${path.module}/inventories/prod/hosts"	#	사용할	inventories	디렉토리

}

main.tf
Ansible + Terraform
hosts
.
ansible-playbook -i inventories/prod role/
example.yml
Ansible + Terraform
Terraform Provisioner Ansible ,

local-exec .
www.terraform.io/docs/provisioners/local-exec.html
---

-	name:	Service	Up

		hosts:	"{{	host	|	default('service')	}}"

		connection:	ssh

		user:	ubuntu

		vars:

				ansible_ssh_private_key_file:	"./certs/ansible.pem"

				ansible_python_interpreter:	"/usr/bin/python3"

		tasks:

				-	name:	install	nginx

						apt:

								name:	nginx

								state:	present

				-	name:	install	nodejs

						apt:

								name:	nodejs

								state:	present

…	생략	…
role/example.yml
Ansible
Infra Ansible .
.
Ansible
.
1. Packer AMI .
2. Elastic Beanstalk, ECS AWS
.
Ansible
Ansible .
AMI
.
Ansible - Galaxy
Ansible .
galaxy.ansible.com
Packer
AMI .
Dockerfile , Shell
.
Packer
Instance
. ( )
{

		"_comment":	"우분투	한국어	AMI",

		"_comment1":	"-	한국어	언어팩	설치",

		"_comment2":	"-	CloudWatch	Server	Agent	설치",

		"builders":	[

				{

						"type":	"amazon-ebs",

						"region":	"ap-northeast-2",

						"instance_type":	"t2.micro",

						"source_ami_filter":	{

								"filters":	{

										"virtualization-type":	"hvm",

										"name":	"ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*",

										"root-device-type":	"ebs"

								},

								"owners":	[“0000000000”],

								"most_recent":	true

						},

						"ssh_username":	"ubuntu",

						"ami_name":	"ubuntu-ko-{{isotime	"060102-150405"}}",

						"tags":	{

								"Name":	"ubuntu-ko",

								"Packer":	"true"

						}

				}

		],

ami/ubuntu-ko.json
		"provisioners":	[

				{

						"type":	"shell",

						"inline":	[

								"sudo	apt	update",

								"sudo	apt	upgrade	-y",

								"sudo	apt	install	-y	language-pack-ko",

								"sudo	locale-gen	ko_KR.UTF-8",

								"sudo	update-locale	LANG=ko_KR.UTF-8	LC_MESSAGES=POSIX	
LANGUAGE=ko_KR.UTF-8	LC_ALL=ko_KR.UTF-8",

								"sudo	apt	install	-y	unzip	libwww-perl	libdatetime-perl",

								"curl	https://aws-cloudwatch.s3.amazonaws.com/downloads/
CloudWatchMonitoringScripts-1.2.2.zip	-O",

								"unzip	CloudWatchMonitoringScripts-1.2.2.zip	&&	rm	
CloudWatchMonitoringScripts-1.2.2.zip"

						]

				},

				{

						"type":	"file",

						"source":	"ami/ubuntu-ko/awscreds.conf",

						"destination":	"/home/ubuntu/aws-scripts-mon/awscreds.conf"

				},

				{

						"type":	"shell",

						"inline":	[

								"echo	"*/5	*	*	*	*	/home/ubuntu/aws-scripts-mon/mon-put-instance-
data.pl	--mem-used-incl-cache-buff	--mem-util	--disk-space-util	--disk-path=/	--
from-cron"	|	sudo	tee	/etc/cron.d/aws-scripts-mon"

						]

				}

		]

}
AWS User ID
"provisioners":	[

				{

						"type":	"shell",

						"inline":	[

								"sudo	apt	update",

								"sudo	apt	upgrade	-y",

								"sudo	apt	install	-y	build-essential",

								"curl	-sL	https://deb.nodesource.com/setup_10.x	|	sudo	-E	bash	-",

								"sudo	apt	install	-y	nodejs",

								"sudo	npm	install	-g	npm",

								"sudo	npm	install	-g	pm2",

								"sudo	pm2	startup	systemd	-u	ubuntu	--hp	/home/ubuntu",

								"sudo	pm2	logrotate	-u	ubuntu",

								"sudo	chown	-R	$USER:$(id	-gn	$USER)	~/.config",

								"sudo	chown	-R	$USER:$(id	-gn	$USER)	~/.pm2",

								"echo	"nodejs	$(node	-v)"",

								"echo	"npm	$(npm	-v)"",

								"echo	"pm2	$(pm2	-v)"",

								"echo	"install	complete!"",

								"sudo	dd	if=/dev/zero	of=/home/swapfile	bs=1024	count=2000000",

								"sudo	mkswap	/home/swapfile",

								"sudo	chmod	0644	/home/swapfile",

								"sudo	swapon	/home/swapfile",

								"echo	"/home/swapfile	none	swap	sw	0	0"	|	sudo	tee	--append	/etc/
fstab	>	/dev/null",

								"echo	"swap	setting	complete!""

						]

				}

		]

}
{

		"_comment":	"우분투	한국어	+	NodeJS	AMI",

		"_comment1":	"-	NodeJS	설치",

		"builders":	[

				{

						"type":	"amazon-ebs",

						"region":	"ap-northeast-2",

						"instance_type":	"t2.micro",

						"source_ami_filter":	{

								"filters":	{

										"tag:Name":	"ubuntu-ko",

										"root-device-type":	"ebs"

								},

								"owners":	["0000000000"],

								"most_recent":	true

						},

						"ssh_username":	"ubuntu",

						"ami_name":	"ubuntu-nodejs-{{isotime	"060102-150405"}}",

						"tags":	{

								"Name":	"ubuntu-nodejs",

								"Packer":	"true"

						}

				}

		],

ami/ubuntu-nodejs.json
AWS User ID
Packer
AMI
.
git
.
{

						"type":	"file",

						"source":	"ami/service/bitbucket_rsa",

						"destination":	"~/.ssh/bitbucket_rsa"

				},

				{

						"type":	"shell",

						"inline":	[

								"chmod	0400	~/.ssh/bitbucket_rsa",

								"echo	"Host	bitbucket-service"	>>	~/.ssh/config",

								"echo	"				Hostname	bitbucket.org"	>>	~/.ssh/config",

								"echo	"				IdentityFile	~/.ssh/bitbucket_rsa"	>>	~/.ssh/config",

								"echo	"				IdentitiesOnly	yes"	>>	~/.ssh/config",

								"touch	~/.ssh/known_hosts	&&	ssh-keyscan	bitbucket.org	>>	~/.ssh/known_hosts",

								"git	clone	git@bitbucket-service:datableteam/service.git",

								"cd	~/service	&&	git	show",

								"cd	~/service	&&	npm	ci	&&	npm	run	build"

						]

				},

				{

						"type":	"file",

						"source":	"ami/service/.env",

						"destination":	"~/service/.env"

				},

				{

						"type":	"file",

						"source":	"ami/service/pm2-app.json",

						"destination":	"~/service/pm2-app.json"

				},

				{

						"type":	"shell",

						"inline":	[

								"pm2	start	~/service/pm2-app.json	&&	pm2	stop	service	&&	pm2	dump"

						]

				}
ami/service.json
Packer + Terraform
Terraform data aws_ami
.
data	"aws_ami"	"nodejs_latest"	{

		most_recent	=	true

		filter	{

				name			=	"name"

				values	=	["ubuntu-nodejs-*"]

		}

		owners	=	["self"]

}

main.tf
Packer + Terraform
ubuntu-nodejs-* ,

terraform apply ,
.
.
Packer + Terraform
.
.
1. direnv AWS .
2. Packer AMI .
3. AMI Terraform
. (Packer + Terraform )
4. Ansible
. (Ansible + Terraform )
1. EC2 70
2. Elastic Beanstalk 2
3. RDS 2
4. DynamoDB 500GB
5. Lambda 10
6. Kinesis + S3 + Athena
3 terraform ,

.
,

.
1. 

→ vault / consul
2. EC2 

→ Elastic Beanstalk / ECS
3. Terraform
4. 

CI / Data Pipeline / Blue-Green
5. Serverless Framework for Lambda
• https://blog.outsider.ne.kr/1266

• https://medium.com/build-acl/state-drift-
detection-using-terraform-d0383628d2ea
Incheon
Thank you!
, 

@wan2land
Q&A
Incheon

Mais conteúdo relacionado

Mais procurados

Writing JavaScript Applications with the AWS SDK (TLS303) | AWS re:Invent 2013
Writing JavaScript Applications with the AWS SDK (TLS303) | AWS re:Invent 2013Writing JavaScript Applications with the AWS SDK (TLS303) | AWS re:Invent 2013
Writing JavaScript Applications with the AWS SDK (TLS303) | AWS re:Invent 2013Amazon Web Services
 
Immutable AWS Deployments with Packer and Jenkins
Immutable AWS Deployments with Packer and JenkinsImmutable AWS Deployments with Packer and Jenkins
Immutable AWS Deployments with Packer and JenkinsManish Pandit
 
AWS Lambda with Serverless Framework and Java
AWS Lambda with Serverless Framework and JavaAWS Lambda with Serverless Framework and Java
AWS Lambda with Serverless Framework and JavaManish Pandit
 
Advanced technic for OS upgrading in 3 minutes
Advanced technic for OS upgrading in 3 minutesAdvanced technic for OS upgrading in 3 minutes
Advanced technic for OS upgrading in 3 minutesHiroshi SHIBATA
 
Let us make clear the aws directconnect
Let us make clear the aws directconnectLet us make clear the aws directconnect
Let us make clear the aws directconnectTomoaki Hira
 
Web sockets in Angular
Web sockets in AngularWeb sockets in Angular
Web sockets in AngularYakov Fain
 
Google App Engine With Java And Groovy
Google App Engine With Java And GroovyGoogle App Engine With Java And Groovy
Google App Engine With Java And GroovyKen Kousen
 
Java script at backend nodejs
Java script at backend   nodejsJava script at backend   nodejs
Java script at backend nodejsAmit Thakkar
 
[143]Inside fuse deview 2016
[143]Inside fuse   deview 2016[143]Inside fuse   deview 2016
[143]Inside fuse deview 2016NAVER D2
 
Automation with Packer and TerraForm
Automation with Packer and TerraFormAutomation with Packer and TerraForm
Automation with Packer and TerraFormWesley Charles Blake
 
docker-machine, docker-compose, docker-swarm 覚書
docker-machine, docker-compose, docker-swarm 覚書docker-machine, docker-compose, docker-swarm 覚書
docker-machine, docker-compose, docker-swarm 覚書じゅん なかざ
 
OpenSource ToolChain for the Hybrid Cloud
OpenSource ToolChain for the Hybrid CloudOpenSource ToolChain for the Hybrid Cloud
OpenSource ToolChain for the Hybrid CloudIsaac Christoffersen
 
REST to JavaScript for Better Client-side Development
REST to JavaScript for Better Client-side DevelopmentREST to JavaScript for Better Client-side Development
REST to JavaScript for Better Client-side DevelopmentHyunghun Cho
 
Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)Esun Kim
 
Baking in the cloud with packer and puppet
Baking in the cloud with packer and puppetBaking in the cloud with packer and puppet
Baking in the cloud with packer and puppetAlan Parkinson
 
Java/Spring과 Node.js의 공존 시즌2
Java/Spring과 Node.js의 공존 시즌2Java/Spring과 Node.js의 공존 시즌2
Java/Spring과 Node.js의 공존 시즌2동수 장
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationAndrew Rota
 
TDD a REST API With Node.js and MongoDB
TDD a REST API With Node.js and MongoDBTDD a REST API With Node.js and MongoDB
TDD a REST API With Node.js and MongoDBValeri Karpov
 

Mais procurados (20)

Writing JavaScript Applications with the AWS SDK (TLS303) | AWS re:Invent 2013
Writing JavaScript Applications with the AWS SDK (TLS303) | AWS re:Invent 2013Writing JavaScript Applications with the AWS SDK (TLS303) | AWS re:Invent 2013
Writing JavaScript Applications with the AWS SDK (TLS303) | AWS re:Invent 2013
 
Immutable AWS Deployments with Packer and Jenkins
Immutable AWS Deployments with Packer and JenkinsImmutable AWS Deployments with Packer and Jenkins
Immutable AWS Deployments with Packer and Jenkins
 
AWS Lambda with Serverless Framework and Java
AWS Lambda with Serverless Framework and JavaAWS Lambda with Serverless Framework and Java
AWS Lambda with Serverless Framework and Java
 
Advanced technic for OS upgrading in 3 minutes
Advanced technic for OS upgrading in 3 minutesAdvanced technic for OS upgrading in 3 minutes
Advanced technic for OS upgrading in 3 minutes
 
Let us make clear the aws directconnect
Let us make clear the aws directconnectLet us make clear the aws directconnect
Let us make clear the aws directconnect
 
Web sockets in Angular
Web sockets in AngularWeb sockets in Angular
Web sockets in Angular
 
Google App Engine With Java And Groovy
Google App Engine With Java And GroovyGoogle App Engine With Java And Groovy
Google App Engine With Java And Groovy
 
NodeJS @ ACS
NodeJS @ ACSNodeJS @ ACS
NodeJS @ ACS
 
Java script at backend nodejs
Java script at backend   nodejsJava script at backend   nodejs
Java script at backend nodejs
 
[143]Inside fuse deview 2016
[143]Inside fuse   deview 2016[143]Inside fuse   deview 2016
[143]Inside fuse deview 2016
 
Automation with Packer and TerraForm
Automation with Packer and TerraFormAutomation with Packer and TerraForm
Automation with Packer and TerraForm
 
docker-machine, docker-compose, docker-swarm 覚書
docker-machine, docker-compose, docker-swarm 覚書docker-machine, docker-compose, docker-swarm 覚書
docker-machine, docker-compose, docker-swarm 覚書
 
OpenSource ToolChain for the Hybrid Cloud
OpenSource ToolChain for the Hybrid CloudOpenSource ToolChain for the Hybrid Cloud
OpenSource ToolChain for the Hybrid Cloud
 
REST to JavaScript for Better Client-side Development
REST to JavaScript for Better Client-side DevelopmentREST to JavaScript for Better Client-side Development
REST to JavaScript for Better Client-side Development
 
Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)
 
now
nownow
now
 
Baking in the cloud with packer and puppet
Baking in the cloud with packer and puppetBaking in the cloud with packer and puppet
Baking in the cloud with packer and puppet
 
Java/Spring과 Node.js의 공존 시즌2
Java/Spring과 Node.js의 공존 시즌2Java/Spring과 Node.js의 공존 시즌2
Java/Spring과 Node.js의 공존 시즌2
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
 
TDD a REST API With Node.js and MongoDB
TDD a REST API With Node.js and MongoDBTDD a REST API With Node.js and MongoDB
TDD a REST API With Node.js and MongoDB
 

Semelhante a Infrastructure as Code 삽질기

Containers Meetup (AWS+CNCF) Milano Jan 15th 2020
Containers Meetup (AWS+CNCF) Milano Jan 15th 2020Containers Meetup (AWS+CNCF) Milano Jan 15th 2020
Containers Meetup (AWS+CNCF) Milano Jan 15th 2020Massimo Ferre'
 
Containers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioContainers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioAraf Karsh Hamid
 
Atlantisで実現するTerraformのGitOps
Atlantisで実現するTerraformのGitOpsAtlantisで実現するTerraformのGitOps
Atlantisで実現するTerraformのGitOps理弘 山崎
 
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기AWSKRUG - AWS한국사용자모임
 
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기창훈 정
 
Running Spark In Production in the Cloud is Not Easy with Nayur Khan
Running Spark In Production in the Cloud is Not Easy with Nayur KhanRunning Spark In Production in the Cloud is Not Easy with Nayur Khan
Running Spark In Production in the Cloud is Not Easy with Nayur KhanDatabricks
 
Terraform modules and best-practices - September 2018
Terraform modules and best-practices - September 2018Terraform modules and best-practices - September 2018
Terraform modules and best-practices - September 2018Anton Babenko
 
Immutable Deployments with AWS CloudFormation and AWS Lambda
Immutable Deployments with AWS CloudFormation and AWS LambdaImmutable Deployments with AWS CloudFormation and AWS Lambda
Immutable Deployments with AWS CloudFormation and AWS LambdaAOE
 
IDI 2020 - Containers Meet Serverless
IDI 2020 - Containers Meet ServerlessIDI 2020 - Containers Meet Serverless
IDI 2020 - Containers Meet ServerlessMassimo Ferre'
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformAntonio Peric-Mazar
 
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...Weaveworks
 
AWS Update | London - Elastic Beanstalk
AWS Update | London - Elastic BeanstalkAWS Update | London - Elastic Beanstalk
AWS Update | London - Elastic BeanstalkAmazon Web Services
 
Serverless Geospatial Mobile Apps with AWS
Serverless Geospatial Mobile Apps with AWSServerless Geospatial Mobile Apps with AWS
Serverless Geospatial Mobile Apps with AWSAmazon Web Services
 
A Year of Droplr Cloud Architecture Evolution with AWS and Serverless
A Year of Droplr Cloud Architecture Evolution with AWS and ServerlessA Year of Droplr Cloud Architecture Evolution with AWS and Serverless
A Year of Droplr Cloud Architecture Evolution with AWS and ServerlessAntoni Orfin
 
GlobalAzureBootCamp 2018
GlobalAzureBootCamp 2018GlobalAzureBootCamp 2018
GlobalAzureBootCamp 2018girish goudar
 

Semelhante a Infrastructure as Code 삽질기 (20)

Containers Meetup (AWS+CNCF) Milano Jan 15th 2020
Containers Meetup (AWS+CNCF) Milano Jan 15th 2020Containers Meetup (AWS+CNCF) Milano Jan 15th 2020
Containers Meetup (AWS+CNCF) Milano Jan 15th 2020
 
Containers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioContainers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes Istio
 
Atlantisで実現するTerraformのGitOps
Atlantisで実現するTerraformのGitOpsAtlantisで実現するTerraformのGitOps
Atlantisで実現するTerraformのGitOps
 
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기
 
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기
 
Running Spark In Production in the Cloud is Not Easy with Nayur Khan
Running Spark In Production in the Cloud is Not Easy with Nayur KhanRunning Spark In Production in the Cloud is Not Easy with Nayur Khan
Running Spark In Production in the Cloud is Not Easy with Nayur Khan
 
Terraform modules and best-practices - September 2018
Terraform modules and best-practices - September 2018Terraform modules and best-practices - September 2018
Terraform modules and best-practices - September 2018
 
Log Analysis At Scale
Log Analysis At ScaleLog Analysis At Scale
Log Analysis At Scale
 
AWS Kinesis
AWS KinesisAWS Kinesis
AWS Kinesis
 
Immutable Deployments with AWS CloudFormation and AWS Lambda
Immutable Deployments with AWS CloudFormation and AWS LambdaImmutable Deployments with AWS CloudFormation and AWS Lambda
Immutable Deployments with AWS CloudFormation and AWS Lambda
 
IDI 2020 - Containers Meet Serverless
IDI 2020 - Containers Meet ServerlessIDI 2020 - Containers Meet Serverless
IDI 2020 - Containers Meet Serverless
 
CI/CD on pure AWS
CI/CD on pure AWSCI/CD on pure AWS
CI/CD on pure AWS
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API Platform
 
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...
 
AWS Update | London - Elastic Beanstalk
AWS Update | London - Elastic BeanstalkAWS Update | London - Elastic Beanstalk
AWS Update | London - Elastic Beanstalk
 
Serverless Geospatial Mobile Apps with AWS
Serverless Geospatial Mobile Apps with AWSServerless Geospatial Mobile Apps with AWS
Serverless Geospatial Mobile Apps with AWS
 
Top conf serverlezz
Top conf   serverlezzTop conf   serverlezz
Top conf serverlezz
 
A Year of Droplr Cloud Architecture Evolution with AWS and Serverless
A Year of Droplr Cloud Architecture Evolution with AWS and ServerlessA Year of Droplr Cloud Architecture Evolution with AWS and Serverless
A Year of Droplr Cloud Architecture Evolution with AWS and Serverless
 
GlobalAzureBootCamp 2018
GlobalAzureBootCamp 2018GlobalAzureBootCamp 2018
GlobalAzureBootCamp 2018
 
DevOps in Droplr
DevOps in DroplrDevOps in Droplr
DevOps in Droplr
 

Último

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 

Último (20)

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 

Infrastructure as Code 삽질기