programing

EC2 인스턴스를 시작하고 각 인스턴스에서 시작 스크립트를 업로드 / 실행하는 방법은 무엇입니까?

projobs 2021. 1. 15. 07:30
반응형

EC2 인스턴스를 시작하고 각 인스턴스에서 시작 스크립트를 업로드 / 실행하는 방법은 무엇입니까?


Linux EC2 인스턴스 세트의 시작을 자동화하고 싶습니다.

기본적으로 다음과 같은 스크립트 / 프로그램을 작성하고 싶습니다.

  • 내 주어진 AMI의 N 발생을 인스턴스화합니다.
  • 시작된 각 인스턴스에 대해 사용자 지정 스크립트를 업로드하고 스크립트가 인스턴스에서 실행되도록합니다.

VMWare를 사용하면 일반적으로 vmrun 또는 Vix SDK 를 사용하여 수행합니다 .

Amazon AWS / EC2의 옵션은 무엇입니까?


제공되는 기능은 전적으로 AMI에 따라 다르므로 대답은 실행중인 AMI에 따라 다릅니다.

Amazon Linux AMIS 및 공식 Ubuntu AMI에는 cloud-init 패키지가 설치되어 있습니다. 여기에는 시작 작업을 트리거 할 수있는 여러 가지 방법이 있지만 요청과 가장 근접하게 일치하는 (그리고 내가 발명했기 때문에 가장 좋아하는) 방법은 사용자 데이터 스크립트 의 개념입니다 .

EC2 인스턴스를 시작할 때 사용자 데이터로 스크립트 (#! 두 문자로 시작)를 간단히 전달할 수 있습니다. 인스턴스를 처음 부팅 할 때 루트로 실행됩니다.

이것이 어떻게 작동하는지에 대한 구체적인 예를 위해 최근 기사 인 EC2 사용자 데이터 스크립트에서 알려진 ssh 호스트 키 업로드 에서이 정확한 기술을 사용합니다.

또한 동일한 스크립트로 둘 이상의 EC2 인스턴스를 실행하려고했습니다. ec2-run-instances 명령과 관련 API 및 웹 콘솔을 사용하면 동일한 사용자 데이터로 시작할 인스턴스를 원하는만큼 지정할 수 있습니다. 예를 들면 :

ec2-run-instances            \
  --instance-count 10        \
  --user-data-file $MYSCRIPT \
  --key $USER                \
  $SOMEAMI

현재 cloud-init가 설치되지 않은 AMI를 실행중인 경우 다음 중 하나를 수행 할 수 있습니다.

  • cloud-init가 설치된 AMI로 전환하거나

  • cloud-init가 설치된 AMI의 사용자 지정 버전을 빌드하거나

  • 시작된 모든 인스턴스 ID를 기록하고 모든 인스턴스가 실행 중 상태로 이동할 때까지 기다린 다음 sshd가 연결을 수락 할 때까지 기다린 다음 시작 스크립트를 각 인스턴스에 업로드하는 더 복잡한 래퍼 스크립트를 작성합니다. , 각 인스턴스에서 시작 스크립트를 실행합니다.


내가 가진 은 "클라우드 초기화"에서 스크립트를 실행하는 튜토리얼 AWS EC2 시작할 때마다 실행됩니다.

  • 구성 파일 (AWS CentOS6)을 설정하고

  • EC2를 시작할 때 스크립트 실행

Linux에서 구성 파일을 설정하려면 configure cloud-init on AWS Linux를 참조하십시오 .

개인적 으로 Linux AMI를 기반으로 설정 한 AWS VPC / EBS사용 합니다. 구성 파일은 건드리지 /etc/cloud/cloud.cfg않았지만 cloud-init의 부팅 스크립트 가 잘 실행됩니다.

참조 URL : https://stackoverflow.com/questions/10125311/how-to-fire-ec2-instances-and-upload-run-a-startup-script-on-each-of-them

반응형