brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Dec 19. 2018

49. AWS CLI로 VPC 네트워크 구축


관리서버에서   명령어로  서비스 네트워크를 만들어 보자.


2가지 네트워크가 필요하다.

관리 네트워크와 관리 네트워크에서 명령어로 만들어진 서비스 네트워크


네트워크는 비용이 안나온다.

편하게 공부하자 ~


<1> 관리네트워크와 관리서버 1대를 만들자.

만들어진 예)



캘리포니아에 관리네트워크와 관리서버를 만들자.

클릭클릭으로 관리네트워크와 관리서버를 만들수 있다.

AWS에 로그인해서  US West (N. California) 로 지역을 선택한다.

캘리포니아에  관리 서버를 만들자.



관리네트워크는 VPC Wizard(마법사)로 만들자.


콜솔 로그인  https://console.aws.amazon.com/console/home



1.  [VPC마법사]로 네트워크를 만든다.


VPC - Lanunch VPC Wizard(마법사).







2. 관리서버도 클릭클릭해서 하나 만들자.


EC2 클릭.
이 서버에서 명령어로  네트워크와  서버를 만들 것이다.




공인IP 할당을 Enable해서 외부에서 접속하도록 하자.

Auto-assign Public IP : Enable 



새 Key를 생성하자.

[Create a new key pair] 선택 

[Download Key Pair]  클릭 

자 ~ 이제  관리 서버가 만든어 졌다 !!






<2> 서비스 네트워크를 만들자.

미국 동부 버지니아에 서비스 네트워크 10.200.0.0/16을 하나 만들어보자.


아래는 다 만들어졌을때 GUI로 본건이다.

Us east 미국 동부 버지니아에 네트워크가 만들어진 경우.



만들어진 네트워크 VPC 10.200.0.0/16




서브네팅된 화면.


인터넷 게이트웨이 만들어지고, 연결(attached)된 화면.


라우팅 테이블 만들어지고

서브네팅된 네트워크 디폴트 게이트웨이로 igw인터넷게이트웨이가 연결된상태.




1.명령어로 서비스 네트워크와 서비스 서버를 만들어 보자.

캘리포니아에있는 관리서버에 CLI 툴을 설치하자.


[ec2-user@ip-192-168-100-197 ~]$ sudo su -

[root@ip-192-168-100-197 ~]# yum install python-setuptools

[root@ip-192-168-100-197 ~]# easy_install pip

[root@ip-192-168-100-197 ~]# pip install awscli

[root@ip-192-168-100-197 ~]# aws --version

aws-cli/1.15.80 Python/2.7.14 Linux/4.14.77-81.59.amzn2.x86_64 botocore/1.10.79



미국 동부 버지니어에  서비스 네트워크를 만들어보자. US East (N. Virginia) 


2. 캘리포니아 관리서버에서  권한을 확인한다.

우리는 관리서버 생성시에 [IAM Full 권한]을  받아서 

따로 access.key와  Secret key가 필요없다.


[root@ip-192-168-100-197 ~]# aws configure

AWS Access Key ID [None]:   엔터

AWS Secret Access Key [None]:   엔터

Default region name [None]: us-east-1

Default output format [None]:  엔터

[root@ip-192-168-100-197 ~]#



3. 미국동부에 10.200.0.0 /16 네트워크를 만든다.


[root@ip-192-168-100-139 ~]# aws ec2 create-vpc --cidr-block 10.200.0.0/16

{

    "Vpc": {

        "VpcId": "vpc-0260041ca499c58f0",


Dns hostname enable한다.

aws ec2 modify-vpc-attribute --vpc-id vpc-0260041ca499c58f0 --enable-dns-hostnames



4.서브네트 4개를 만든다.

서브넷 만들때 위에서 만든 vpc-id가 필요하다.

서비네팅할때 us-east-1a인지 1c인지 명확히 적어야 한다.


aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1a --cidr-block 10.200.0.0/24


aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1c --cidr-block 10.200.4.0/24


aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1a --cidr-block 10.200.8.0/24


aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1c --cidr-block 10.200.12.0/24



Vpc생성시 명령어 결과 참고.

[root@ip-192-168-100-139 ~]# aws ec2 create-vpc --cidr-block 10.200.0.0/16

{

    "Vpc": {

        "VpcId": "vpc-0260041ca499c58f0",

        "InstanceTenancy": "default",

        "Tags": [],

        "CidrBlockAssociationSet": [

            {

                "AssociationId": "vpc-cidr-assoc-026dce96a4f1b83ce",

                "CidrBlock": "10.200.0.0/16",

                "CidrBlockState": {

                    "State": "associated"

                }

            }

        ],

        "Ipv6CidrBlockAssociationSet": [],

        "State": "pending",

        "DhcpOptionsId": "dopt-177c7e6e",

        "CidrBlock": "10.200.0.0/16",

        "IsDefault": false

    }

}


서브네팅  명령어 결과 참고.

[root@ip-192-168-100-139 ~]# aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1a --cidr-block 10.200.0.0/24

{

    "Subnet": {

        "AvailabilityZone": "us-east-1a",

        "AvailableIpAddressCount": 251,

        "DefaultForAz": false,

        "Ipv6CidrBlockAssociationSet": [],

        "VpcId": "vpc-0260041ca499c58f0",

        "State": "pending",

        "MapPublicIpOnLaunch": false,

        "SubnetId": "subnet-0abfbae97f17d3fd9",

        "CidrBlock": "10.200.0.0/24",

        "AssignIpv6AddressOnCreation": false

    }

}


[root@ip-192-168-100-139 ~]# aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1c --cidr-block 10.200.4.0/24

{

    "Subnet": {

        "AvailabilityZone": "us-east-1c",

        "AvailableIpAddressCount": 251,

        "DefaultForAz": false,

        "Ipv6CidrBlockAssociationSet": [],

        "VpcId": "vpc-0260041ca499c58f0",

        "State": "pending",

        "MapPublicIpOnLaunch": false,

        "SubnetId": "subnet-07e8557a3b21450be",

        "CidrBlock": "10.200.4.0/24",

        "AssignIpv6AddressOnCreation": false

    }

}


[root@ip-192-168-100-139 ~]# aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1a --cidr-block 10.200.8.0/24

{

    "Subnet": {

        "AvailabilityZone": "us-east-1a",

        "AvailableIpAddressCount": 251,

        "DefaultForAz": false,

        "Ipv6CidrBlockAssociationSet": [],

        "VpcId": "vpc-0260041ca499c58f0",

        "State": "pending",

        "MapPublicIpOnLaunch": false,

        "SubnetId": "subnet-0990850cccc4f794d",

        "CidrBlock": "10.200.8.0/24",

        "AssignIpv6AddressOnCreation": false

    }

}


[root@ip-192-168-100-139 ~]# aws ec2 create-subnet --vpc-id vpc-0260041ca499c58f0 --availability-zone us-east-1c --cidr-block 10.200.12.0/24

{

    "Subnet": {

        "AvailabilityZone": "us-east-1c",

        "AvailableIpAddressCount": 251,

        "DefaultForAz": false,

        "Ipv6CidrBlockAssociationSet": [],

        "VpcId": "vpc-0260041ca499c58f0",

        "State": "pending",

        "MapPublicIpOnLaunch": false,

        "SubnetId": "subnet-084bc31db0e0fa09e",

        "CidrBlock": "10.200.12.0/24",

        "AssignIpv6AddressOnCreation": false

    }

}




5. 라우팅 테이블 만들기.


[root@ip-192-168-100-139 ~]# aws ec2 create-route-table --vpc-id vpc-0260041ca499c58f0

{

    "RouteTable": {

        "Associations": [],

        "RouteTableId": "rtb-074af38b755fa11fa",

        "VpcId": "vpc-0260041ca499c58f0",

        "PropagatingVgws": [],

        "Tags": [],

        "Routes": [

            {

                "GatewayId": "local",

                "DestinationCidrBlock": "10.200.0.0/16",

                "State": "active",

                "Origin": "CreateRouteTable"

            }

        ]

    }

}




6. Subnet에 대해서도 라우팅 테이블이 적용되도록 설정 한다.


[root@ip-192-168-100-139 ~]# aws ec2 associate-route-table --route-table-id rtb-074af38b755fa11fa --subnet-id subnet-0abfbae97f17d3fd9

{

    "AssociationId": "rtbassoc-06dbb0bc065646122"

}


[root@ip-192-168-100-139 ~]# aws ec2 associate-route-table --route-table-id rtb-074af38b755fa11fa --subnet-id subnet-07e8557a3b21450be

{

    "AssociationId": "rtbassoc-0ec72a6c67dc5df5b"

}


[root@ip-192-168-100-139 ~]# aws ec2 associate-route-table --route-table-id rtb-074af38b755fa11fa --subnet-id subnet-0990850cccc4f794d

{

    "AssociationId": "rtbassoc-0771a01286c23272d"

}


[root@ip-192-168-100-139 ~]# aws ec2 associate-route-table --route-table-id rtb-074af38b755fa11fa --subnet-id subnet-084bc31db0e0fa09e

{

    "AssociationId": "rtbassoc-09437b55a50025bed"

}



7.인터넷 게이트웨이를 만든다.


[root@ip-192-168-100-139 ~]# aws ec2 create-internet-gateway

{

    "InternetGateway": {

        "Tags": [],

        "Attachments": [],

        "InternetGatewayId": "igw-0b5cc362801e2b388"

    }

}

[root@ip-192-168-100-139 ~]#



8.인터넷게이트웨이를 VPC와  연결한다.


[root@ip-192-168-100-139 ~]# aws ec2 attach-internet-gateway --internet-gateway-id igw-0b5cc362801e2b388 --vpc-id vpc-0260041ca499c58f0



9.디폴트라우팅을 igw로 잡는다.


[root@ip-192-168-100-139 ~]# aws ec2 create-route --route-table-id rtb-074af38b755fa11fa --destination-cidr-block 0.0.0.0/0 --gateway-id igw-0b5cc362801e2b388

{

    "Return": true

}



참고 : 명령어들 https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html#examples


서비스 네트워크에 서버1대 만들고 

외부로 ping하니 잘된다.

네트워크는 잘 만들어 진거 같다 ^^



참고1. CLI로 서버 만드는법.

https://brunch.co.kr/@topasvga/345



감사합니다.














브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari