Intro
aws cli로 새로운 launch template version을 생성하기 위해서는 몇가지 작업이 필요합니다.
- 이전 version의 데이터를 가져와야 한다
- 업데이트가 필요한 데이터 (e.g. ami image id, user data, security group id 등등)로 변경해줘야 한다
launch template 관련 aws cli 명령어 찾기
우선 aws cli를 사용하기 위해 아래 cli문서를 잘 참고해 보도록 합시다.
https://docs.aws.amazon.com/cli/latest/reference/
aws cli를 제공하는 옵션을 모두 암기하는 경우는 드물기 때문에 문서를 참고하여 그때그때 필요한 옵션을 체크 하는데요. 해당 사이트에 왼쪽 카테고리 Available Services 를 선택하면 원하는 리소스 리스트가 나오게 됩니다.
우리는 오늘 launch template 관련 작업을 해야하기 때문에 lauch template를 검색합니다. 그런데 안나오죠. 방법은 2가지 입니다.
- aws 콘솔을 많이 사용해본 사람은 통밥으로 ec2에 있겠구나 를 떠올릴 수 있습니다. ec2를 클릭하여 launch template을 검색합니다. (잘 나옵니다)
- cli 문서 사이트 왼쪽에 Quick Search로 launch template을 검색합니다. (사실 이게 더 빠릅니다.)
그러면 본격적으로 오늘 사용해볼 create-launch-template-version 명령어를 알아보도록 하겠습니다.
aws ec2 create-launch-template-version 명령어 사용하기
aws cli문서를 확인해보면 어쩌구 저쩌구 막 나오고 하단 부분에 Example이 나옵니다. 실제로 어떻게 쓰는지 보여주는 예시이기 때문에 이게 가장 중요합니다.
- example
aws ec2 create-launch-template-version --launch-template-id lt-0abcd290751193123 --version-description WebVersion2 --source-version 1 --launch-template-data '{"ImageId":"ami-c998b6b2"}'
자 나왔네요 --launch-template-data
사실 오늘의 진짜 주인공입니다. 이 옵션에 새롭게 만드는 launch template 정보를 json 형식으로 모두 넣어 주어야 합니다. aws console에서 처럼 create new version을 하면 이전 데이터를 쭉 가져오기 때문에 원하는 부분만 넣어주면 되는거아니야? 할 수 있겠지만. 안타깝게도 아닙니다.
그래서 우리는 2가지 작업을 해줘야 합니다. 첫번째 이전 버전의 launch-template-data 를 가져와야한다. 두번째 가져온데이터에서 원하는 데이터로 변경해줘야한다.
이전버전의 launch-template-data 를 가져오기
아래와 같이 원하는 lt id와 version을 입력하면 원하는 데이터가 나옵니다. 여기서 우리는 LaunchTemplateData
부분만 가져올 겁니다. 이 값이 위의 aws ec2 create-launch-template-version 에서 사용할 옵션 --launch-template-data
부분 입니다.
aws ec2 describe-launch-template-versions --launch-template-id lt-0abcd29075119312 --versions 12
자 근데 기존 LaunchTemplateData
의 데이터가 json형식이 너무 길어서 한줄로 입력할 수 없을 겁니다. 그러면 이 부분을 아래와 같이 json 파일로 만들어버리면됩니다.
- launch-template-data.json
{
"KeyName": "kp-us-east",
"ImageId": "ami-6057e21a",
"InstanceType": "t2.small",
"NetworkInterfaces": [
{
"SubnetId": "subnet-7b16de0c",
"DeviceIndex": 0,
"Groups": [
"sg-7c227019"
]
}
]
}
원하는 데이터로 어떻게 변경
똑똑한 우리 엔지니어들은 스크립트를 자동화하기위해 data를 손으로 직접 바꾸는 것이 아니고 sed명령어를 통해서 data를 변경할 겁니다.
sed -i "s/ami-6057e21a/ami-999b21r/g" > launch-template-data.json
드디어 마지막
아니 근데 --launch-template-data
옵션에 어떻게 file로 입력하냐구요. 걱정마세요 다됩니다.
aws ec2 create-launch-template-version --launch-template-id $lt_id --launch-template-data file://launch-template-data.json
끝.
'IT > AWS' 카테고리의 다른 글
[AWS] aws cli version2 설치하기 (0) | 2022.01.13 |
---|---|
[AWS] aws cli 사용하여 Launch template 복사하기 (0) | 2022.01.13 |
[AWS] aws cli 와 jq 명령어 활용 방법(json 데이터 가져오기) (0) | 2022.01.13 |
[AWS] CodeDeploy 심화 - ALB Target Group 지정하기 (0) | 2022.01.12 |
[AWS] EC2 인스턴스 ENA driver Upgrade 하기 (feat. image builder) (0) | 2022.01.05 |