AWS 명령어(CLI)로 서버를 만들어보자
<1> 현황
VPC 네트워크 구성을 클릭 클릭해서 만들고 있다.
서버 생성도 클릭 클릭해서 생성한다.
<2> 문제점
VPC 네트워크 구축할때마다 수작업을 해야 한다.
서버 100대를 생성하고자하면 클릭을 수천번 해야 한다.
빠르게 서버를 생성하고 관리하고 싶다.
<3> 개선방향
관리서버에서 한번에 명령어(CLI)로 한번에 네트워크와 서버를 생성한다.
자동화 툴로 빠르게 생성하고 관리한다.
<4> CLI로 서버 생성 해보기
관리서버에서 명령어로 서비스 서버를 한번에 만들어 보자.
1. 보안그룹을 만든다.
2. 명령어로 관리서버에서 서버생성을 위해 CLI툴 설치하자
3. 어느 지역에 설치할지 정의한다.
4. 관리서버 정보를 확인하고 그 정보를 이용해 서비스 서버를 만들어보자.
5. 관리서버 로그인해서 명령어로 새로운 EC2 생성하기
1. 보안그룹을 만든다.
웹서버라면 80 443 포트를 허용하는 보안그룹을 만든다.
Cli로 보안그룹을 만들수있지만 여기선 GUI로 우선 만든다.
AWS 콘솔에 접속한다. http://console.aws.amazon.com
[Security Groups] - Create Security Group
2. 명령어로 관리서버에서 서버생성을 위해 CLI툴 설치하자
AWS CLI Tool 설치하여 명령어로 서비스 서버를 만들어보자.
AWS CLI툴 설치하기
1) Linux OS
[root@ip-10-10-0-107 ~]# yum install python-setuptools
[root@ip-10-10-0-107 ~]# easy_install pip
[root@ip-10-10-0-107 ~]# pip install awscli
[root@ip-10-10-0-107 ~]# aws --version
aws-cli/1.15.60 Python/2.7.5 Linux/3.10.0-862.el7.x86_64 botocore/1.10.59
awscli 업데이트하기
[root@ip-10-10-0-107 ~]# pip install -U awscli
[root@ip-10-10-0-107 ~]# aws --version
aws-cli/1.15.76 Python/2.7.5 Linux/3.10.0-862.el7.x86_64 botocore/1.10.75
2) Windows OS
다운로드 https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-windows.html
참고 사이트
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-windows.html
3. 어느 지역에 설치할지 정의한다.
AWS console 관리서버의 Description에서 Availability zone 정보를 확인하자.
ap-northeast-2a 로 보이는 경우 ap-northeast-2 가 지역이다. (a가 빠진다)
aws configure 로 지역을 정의한다.
IAM role을 가지고 있으므로 키는 필요 없어 [엔터]로 넘어간다.
# aws configure [엔터]
AWS Access Key ID [엔터]
AWS Secret Access Key [엔터]
Default region name [None]: ap-northeast-2
Default output format [None]:[엔터]
이제 지역이 설정되었다.
4. 관리서버 정보를 확인하고 그 정보를 이용해 서비스 서버를 만들어보자.
1) 선행작업
관리서버는 생성시에 IAM role로 EC2-Full Access권한이 있어야 한다.
2) 관리 서버를 이용해서 서버(EC2)를 생성하는 명령어는 아래와 같다.
# aws ec2 run-instances --image-id <ami-id> --user-data file:///root/UserData.txt --key-name <key-name> --security-group-ids <sg-id> --instance-type t2.micro --subnet-id <subnet-id> --associate-public-ip-address --query 'Instances[*].InstanceId'
참고: 생성을 위해 필요한 정보는 EC2 관리서버의 Description에서 확인한다.
--image-id = AMI ID
ami-3eee4150
--user-data
서버 생성시 자동으로 시작하게하는 스크립트
웹서버를 설치하도록 하는 스크립스를 만들어 넣는다.
--key-name
--security-group-ids
서비스서버를 위한 새 보안그룹을 만든다.
--instance-type
--subnet-id
5. 관리서버 로그인해서 명령어로 새로운 EC2 생성하기
1) 서버 만들기 위해 명령어 실행
# aws ec2 run-instances --image-id <ami-id> --user-data file:///root/UserData.txt --key-name <key-name> --security-group-ids <sg-id> --instance-type t2.micro --subnet-id <subnet-id> --associate-public-ip-address --query 'Instances[*].InstanceId'
[
"i-08ecb29011c7e4be5"
]
2) 관리서버외에 서버 1대 추가로 생성 완료
3) 한번 더 실행하면 EC2서버가 하나더 만들어 진다.
aws ec2 run-instances --image-id <ami-id> --user-data file:///root/UserData.txt --key-name <key-name> --security-group-ids <sg-id> --instance-type t2.micro --subnet-id <subnet-id> --associate-public-ip-address --query 'Instances[*].InstanceId'
[
"i-0f9a3620bb60d80e3"
]
[root@ip-10-10-0-107 ~]#
4) 서버가 잘 생성되었는지 확인한다.
[root@ip-10-10-0-107 ~]# aws ec2 describe-instances --instance-ids i-08ecb29011c7e4be5
5) 호스트명이 없어서 호스트명을 부여한다.
[root@ip-10-10-0-107 ~]# aws ec2 create-tags --resources i-08ecb29011c7e4be5 --tags Key=Name,Value=mobileaws-web01
[root@ip-10-10-0-107 ~]# aws ec2 create-tags --resources i-0f9a3620bb60d80e3 --tags Key=Name,Value=mobileaws-web02
6) 서버 접속해 본다.
[root@ip-10-10-0-107 ~]# ssh -i "google1.pem" ec2-user@13.125.239.105
[ec2-user@ip-10-10-0-84 ~]$ exit
logout
Connection to 13.125.239.105 closed.
서버 접속해 본다.
[root@ip-10-10-0-107 ~]# ssh -i "google1.pem" ec2-user@13.125.129.104
Are you sure you want to continue connecting (yes/no)? yes
[ec2-user@ip-10-10-0-204 ~]$ sudo su
이제 100대의 서버도 명령어로 금방 만들수 있다 ^^
기타 : 인스턴스-id , 사설ip , 공인ip 확인법
curl http://169.254.169.254/latest/meta-data/instance-id
curl http://169.254.169.254/latest/meta-data/local-ipv4
curl http://169.254.169.254/latest/meta-data/public-ipv4
연관 자료
AWS CLI로 VPC 만들기 https://brunch.co.kr/@topasvga/747
AWS CLI로 서버 만들기 https://brunch.co.kr/@topasvga/872
AWS CLI로 서버 생성법 https://brunch.co.kr/@topasvga/345
테라폼으로 VPC 만들기 https://brunch.co.kr/@topasvga/780
감사합니다.