2015.09.13 17:28
AmazonLinux의 EC 인스턴스 시작시 cloud-init에 의해 호스트 이름을
Name 태그_인스턴스 ID_IP 주소로 설정
EC2 인스턴스를 여러 개 만들 경우 각 인스턴스의 호스트 이름에
Name 태그와 인스턴스 ID를 지정하여 작업 할 인스턴스를 구분하고 싶을 때.
EC2 인스턴스 시작시 호스트 이름을 Name 태그 _ 인스턴스 ID_IP 주소로 설정하는 방법입니다.
■ 개요
EC2 인스턴스에서 /var / lib / cloud / scripts / per-boot / 아래에 스크립트를 작성하고
EC2 인스턴스에 설정된 Tags과 metadata에서 인스턴스 ID와 Name 태그 등을 취득하고
EC2 인스턴스 시작 마다 호스트 이름을 [Name 태그 _ 인스턴스 ID_IP 주소로 설정합니다].
■ EC2 인스턴스로 설정 Name 태그와 IAM 정책 예
EC2 인스턴스의 Name 태그, 예를 들어 "web-server-002」로 설정합니다.
사전 호스트 이름 변경 대상 EC2 인스턴스는 aws ec2 명령으로 각종 정보를 얻을 수 있도록 IAM 정책을 설정 되어 있어야 함.
■ cloud-init에 의해 실행되는 스크립트
EC2 인스턴스에 다음과 같은 스크립트를 작성합니다.
$ hostname
ip-172-31-4-80
$ sudo vi /var/lib/cloud/scripts/per-boot/001_setting_hostname.sh
#!/bin/sh
##### 지역 명을 취득
REGION=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/.$//'`
##### 인스턴스 자신의 인스턴스 ID를 가져오기
INSTANCE_ID=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id`
##### 인스턴스 자신의 IP 주소를 취득
IP_ADDRESS=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/local-ipv4`
##### Name 태그를 검색
NAME_TAG=`/usr/bin/aws ec2 describe-instances --region ${REGION} --instance-ids ${INSTANCE_ID=} --query 'Reservations[].Instances[].Tags[?Key==\`Name\`].Value' --output text`
##### 호스트 이름의 IP 주소.를 -로 변환
IP_ADDRESS=`echo ${IP_ADDRESS} | sed -e "s/\./-/g"`
##### 호스트 이름을 변경하려면
INSTANCE_NAME="${NAME_TAG}_${INSTANCE_ID}_${IP_ADDRESS}"
hostname ${INSTANCE_NAME}
sed -i -e "s/^HOSTNAME=.*\$/HOSTNAME=${INSTANCE_NAME}/g" /etc/sysconfig/network
스크립트 실행 권한을 부여합니다.
[ec2-user@ip-172-31-4-80 ~]$ sudo chmod 755 /var/lib/cloud/scripts/per-boot/001_setting_hostname.sh
[ec2-user@ip-172-31-4-80 ~]$
[ec2-user@ip-172-31-4-80 ~]$ ll /var/lib/cloud/scripts/per-boot/001_setting_hostname.sh
-rwxr-xr-x 1 root root 969 Dec 28 00:32 /var/lib/cloud/scripts/per-boot/001_setting_hostname.sh
[ec2-user@ip-172-31-4-80 ~]$
■ EC2 인스턴스의 호스트 이름을 변경
하려는 스크립트를 실행 또는 EC2 인스턴스를 다시 시작하면 시작할 때 호스트 이름이 변경됩니다.
[ec2-user@ip-172-31-4-80 ~]$ hostname
ip-172-31-4-80
[ec2-user@ip-172-31-4-80 ~]$ grep -i hostname /etc/sysconfig/network
HOSTNAME=localhost.localdomain
[ec2-user@ip-172-31-4-80 ~]$ sudo reboot
EC2 인스턴스를 시작하면 호스트 이름이 Name 태그_인스턴스ID_IP 주소로 설정됩니다.
[ec2-user@web-server-002_i-9b6f5f82_172-31-4-80 ~]$ hostname
web-server-002_i-9b6f5f82_172-31-4-80
[ec2-user@web-server-002_i-9b6f5f82_172-31-4-80 ~]$ grep -i hostname /etc/sysconfig/network
HOSTNAME=web-server-002_i-9b6f5f82_172-31-4-80
[ec2-user@web-server-002_i-9b6f5f82_172-31-4-80 ~]$
/var/lib/cloud/scripts/per-boot/에 스크립트를 배치하여 EC2 인스턴스를 시작할 때마다
호스트 이름을 설정하도록하는 방법
/var/lib/cloud/scripts/per-once/ 스크립트를 배치하여 EC2 인스턴스 처음 시작할 때
호스트 이름을 설정하하는 방법
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
51 | AWS 계정 만들기 | 호스트웨이 | 2016.12.09 | 17916 |
50 | AWS Case Open 가이드 | 호스트웨이 | 2016.07.27 | 12739 |
49 | AWS EC2 Type 별 네트웍 성능 안내 | 호스트웨이 | 2017.03.22 | 9869 |
48 | ELB pre-warming 이란? | 호스트웨이 | 2015.09.09 | 9112 |
47 | Putty 통한 Proxy 연결 방법 | 호스트웨이 | 2016.06.13 | 8834 |
46 | AWS Flow 설정 | 호스트웨이 | 2017.01.17 | 8538 |
45 | AWS KMS 이용 가이드 | 호스트웨이 | 2016.08.29 | 8424 |
44 | AWS EC2 EBS 용량 줄이기/늘리기 - Snapshot 활용 | 호스트웨이관리자 | 2015.09.06 | 8233 |
43 | AWS ELB Pre-warm 신청 양식 | 호스트웨이 | 2016.10.17 | 7949 |
42 | AWS 부하테스트 시행전 승인요청 | 호스트웨이 | 2017.02.27 | 7812 |
41 | AWS AMI 다른 계정으로 공유 | 호스트웨이 | 2016.12.29 | 7806 |
40 | VPC간 Peering 설정 | 호스트웨이 | 2017.01.17 | 7791 |
39 | RI 신청 가이드 | 호스트웨이 | 2016.11.29 | 7673 |
38 | Goofys 설치 | 호스트웨이 | 2016.11.29 | 7630 |
37 | AWS 마스터 계정 정보 변경 방법 안내 | 호스트웨이 | 2017.02.15 | 7379 |
36 | AWS 취약점/침투 테스트 신청 방법 | 호스트웨이 | 2016.10.07 | 6978 |
35 | AWS Volume Resize 안내 | 호스트웨이 | 2017.03.22 | 6791 |
34 | EFS 백업 가이드 | 호스트웨이 | 2016.09.23 | 6739 |
33 | AWS 보안 백서 | 호스트웨이 | 2016.06.17 | 6734 |
32 | EC2 및 EBS 리소스 ID 더 긴 ID로 전환 | 호스트웨이 | 2016.09.23 | 6724 |