T101-Study-4Week

가시다님과 스터디를 한지도 5번째 이번엔 테라폼이다. 오늘 블로그를 쓰게된건 중간과제를 설명하기 위해서다. 바로 본론으로 들어간다. 내 GIT 이다 https://github.com/Cloud-Linuxer/T101/tree/main/4week variable "availability_zone" { description = "Seoul region availability zone" type = list default = ["ap-northeast-2a", "ap-northeast-2b", "ap-northeast-2c", "ap-northeast-2d"] } variable "subnet_numbers" { type = list default = [10, 20, 30, 40] } variable "az_count" { type = list default = ["A", "B", "C", "D"] } ```bash 나의 Variables는 이런식으로 구성되어있다. 모든 타입을 List로 선언하여 사용한다. 5주차에 할 테라폼 의 반복문을 사용하기 위한 형태다. 가장 중요한 부분은 subnet_numbers 부분이다. 10, 20, 30, 40 이 핵심이다. ```bash resource "aws_subnet" "pub-common" { count = "${length(var.availability_zone)}" vpc_id = "${aws_vpc.default.id}" cidr_block = [ for num in var.subnet_numbers: cidrsubnet(aws_vpc.default.cidr_block, 8, num) ][count.index] availability_zone = "${element(var.availability_zone, count.index)}" tags = { Name = "Linuxer-Dev-Pub-Common-${element(var.az_count, count.index)}" } } ```bash 이 코드만 봐서는 이게 무엇을 뜻하는지 한눈에 보기 어렵다. 그럼 하나씩 설명하겠다. 하시코프에서는 cidrsubnet 이라는 Function 을 지원한다. 이 함수를 통해서 나는 /16비트의 서브넷을 24비트로 자를거다. 간단히 보여주자면 이렇다 ```bash terraform console > cidrsubnet("10.0.0.0/16",8,10) "10.0.10.0/24" > cidrsubnet("10.0.0.0/16",8,20) "10.0.20.0/24" > cidrsubnet("10.0.0.0/16",8,30) "10.0.30.0/24" > cidrsubnet("10.0.0.0/16",8,40) "10.0.40.0/24" ```bash for로 list 에 담긴 subnet_numbers를 가져다가 CIDR 을 반환한다. 위처럼 24비트의 4개 서브넷이다. 위와같이 24비트로 나뉜 4개의 서브넷을 테라폼은 생성한다. 위의 리소스선언 한줄로 Subnet 4개를 생성하는 것이다. 서울 리전의 4개 AZ를 모두 사용하고, A zone은 10대역대 B Zone은 20대역대 C Zone은 30대역 D Zone은 40 대역인것이다. 이렇게 사용하면 장점이 있다. 한개의 존이 문제가 생긴것을 파악하기 쉽고, 아이피 대역대 만으로 서비스의 역할을 파악할수 있는 장점이 있는 것이다. 처음엔 리스트로 서브넷 선언도 모두 입력해서 하나의 리소스 선언으로 모든 서브넷을 생성하려했지만 그렇게 사용할 경우 리스트가 변경되면 모든 서브넷이 영향을 받는 이슈가 있어서 각 서브넷별 리소스 선언을 하는 방향으로 수정했다.

November 12, 2022 · 2 min · 📁 AWS

NCP-VPC-Update

드디어 NCP 에도 VPC가 업데이트 되었습니다. VPC 모드로 전환하면 파란색으로 인터페이스가 전환됩니다. 금융존은 주황색 TMI는 여기 까지고 VPC를 생성해 보겠습니다. https://linuxer.name/2020/05/aws-vpc/ 아직 none-rfc-1918은 지원하지 않습니다. 다른 벤더에서도 rfc1918을 쓰는것을 권장하지만, none-rfc-1918의 필요성이 가끔 있으므로 차차 업데이트 되지 않을까 생각됩니다. VPC 이름에는 대문자를 사용할 수 없습니다. 생성할떄 public / privite 으로 지정해서 만들게 됩니다. 인스턴스를 생성할때 public 으로 생성하면 인스턴스 용도로만 사용할수있고, private 으로 생성하면 로드벨런서 용도와 일반용도를 나누어서 생성할수 있습니다. ...

September 20, 2020 · 1 min · 📁 NCP · 🏷️ vpc, ncp, ncp vpc

AWS-VPC-rfc1918

요즘 ANS 공부를 하고 있다. 그러던 와중에 알게된 부분이다. AWS에선 VPC 를 생성할때 RFC1918을 권장한다. 10.0.0.0 - 10.255.255.255 (10/8 prefix) 172.16.0.0 - 172.31.255.255 (172.16/12 prefix) 192.168.0.0 - 192.168.255.255 (192.168/16 prefix) 이 대역이다. 그러던중 IPv4 블록 연결제한 부분을 보게되었다. https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/VPC_Subnets.html#VPC_Sizing IPv4 CIDR 블록 연결 제한 기본 VPC CIDR 블록이 상주하는 IP 주소 범위 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 198.19.0.0/16 공개적으로 라우팅이 가능한 CIDR 블록(비-RFC 1918) 또는 100.64.0.0/10 범위의 CIDR 블록. 간단히 정리하면 해당 RFC1918중 하나의 대역을 사용하면 다른 대역을 사용할수 없는것이다. ...

May 14, 2020 · 1 min · 📁 AWS · 🏷️ aws, vpc

AWS-GCP-Azure-network-none-rfc1918

VPC를 생성하는 경우, 다음과 같이 /16RFC 1918:규격에 따라 프라이빗(비공개적으로 라우팅 가능) IPv4 주소 범위에 속하는 CIDR 블록( 또는 이하)을 지정하는 것이 좋습니다. -_-;공인IP를 쓸수있는건 아니지만 걍 아무대역 가져다 써도 VPC는 생성 가능하다. 갑자기 궁금해져서 퍼블릭클라우드는 비RFC1918을 지원하는지 모두 테스트 해보았고 모두 지원한다~ DOCS에서 명확하게 적혀있는것은 AWS 뿐이었다. Azure VNet 내에서 사용할 수 있는 주소 범위는 무엇입니까? RFC 1918에 정의되어 있는 모든 IP 주소 범위를 사용할 수 있습니다. 예를 들어 10.0.0.0/16을 사용할 수 있습니다. 다음 주소 범위는 추가할 수 없습니다. ...

May 7, 2020 · 1 min · 📁 AWS, GCP, Azure

gcp-terrafrom-2 with VPC create

이전 포스팅에서 cloud shell 을 이용해서 terraform 을 사용하는 방법을 포스팅 했다. 이번에는 VPC 를 생성하는 방법을 포스팅 하기로 하였다. https://www.terraform.io/docs/providers/google/r/compute_subnetwork.html 다음 docs 를 참고하였다. resource name -실제 vpc name -에 대문자가 들어가면 Error: Error creating Network: googleapi: Error 400: Invalid value for field ‘resource.name’ 에러가 발생한다 참고하자. 이걸 몰라서 한참..테스트를 했다. main.tf resource “google_compute_subnetwork” “us-central1-subnet” { name = “${local.name_suffix}-us-central1-subnet” ip_cidr_range = “10.2.0.0/16” region = “us-central1” network = google_compute_network.linuxer-VPC.self_link } resource “google_compute_subnetwork” “europe-west1-subnet” { name = “${local.name_suffix}-europe-west1-subnet” ip_cidr_range = “10.3.0.0/16” region = “europe-west1” network = google_compute_network.linuxer-VPC.self_link } resource “google_compute_network” “linuxer-VPC” { name = “${local.name_suffix}-vpc” auto_create_subnetworks = false } ...

January 4, 2020 · 2 min · 📁 GCP