시작시 EC2 사용자 데이터 스크립트를 다시 실행하는 방법은 무엇입니까?


19

cloud-init가 EC2 인스턴스의 첫 번째 부팅에서 사용자 데이터 스크립트 를 실행 한 후에는 후속 재부팅시 cloud-init가 스크립트를 다시 실행하지 않도록 상태 파일이 작성됩니다. 이 상태 파일을 삭제하여 사용자 데이터 스크립트를 다시 실행하려는 경우가 있습니다. 어 Where 어?

답변:


24

rm /var/lib/cloud/instances/*/sem/config_scripts_user

작업 확인 :

  • CentOS 7.4
  • 우분투 14.04
  • 우분투 16.04

완벽을 기하기 위해이 AMI (부모 AMI는 ...)를 가지고 있고 모두가 cloud-init사용자 데이터를 실행했다는 사실 / 가능성을 추적해야하는 상황이있는 경우 현재 세마포어 만 삭제할 수 있습니다.

rm /var/lib/cloud/instance/sem/config_scripts_user


2
당신은 그것을 빨리 알아 냈습니다.
c24w

9
@ c24w 타임 스탬프가 잘못되었습니다. 실제로 몇 시간의 연구와 테스트가 필요했기 때문에 일단 알아 낸 후에는 다음 사람이 결정적인 답을 찾는 데 도움이되도록이 질문을 작성했습니다.
Mike

1
그 이후 로이 문제를 겪어 왔으며 위키 유형의 Q & A를 게시하도록 장려 된 것을 알지 못했습니다. 이것을 기록해 주셔서 감사합니다!
c24w

1
이것이 serverfault에서 권장되어 기쁘다. 나는 SO에 여러 번 downvoted 보았다
프랭크

1
@ flag5 curl메타 데이터 서비스에서 현재 인스턴스 ID를 가져 오는 것은 불필요 합니다. /var/lib/cloud/instance아래의 현재 인스턴스에 이미 심볼릭 링크가 있기 때문 입니다 /var/lib/cloud/instances. :-)
Mike

2

스크립트를 /etc/rc.local에 넣으면 재부팅 할 때마다 스크립트가 실행됩니다.


/etc/rc.localEC2 사용자 데이터와는 아무런 관련이 없습니다.
Mike

@MikeConigliaro 매번 부팅 할 때마다 사용자 데이터를 사용하여 무언가를 실행하고 싶었으므로 사용자 데이터 스크립트가 /etc/rc.local에 추가하도록했습니다.
user253751

0

상태 파일을 제거하는 대신 부팅 할 때마다 사용자 데이터를 다시 실행하도록 구성 할 수도 있습니다. cloud_final_modulesuserdata 스크립트 를 사용 하여 userdata 스크립트를 다시 실행해야하며,이를 위해 uderdata를 사용자 정의하여 userdata에 여러 파일을 갖도록해야합니다. userdata 파일의 예는 다음과 같습니다.

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
/bin/echo "Hello World" >> /tmp/userdata-test.txt
--//

그러면 모든 부팅 프로세스의 마지막 단계에서 userdata 스크립트가 실행됩니다. 여기서는 한 줄만 bin/echo "Hello World" >> /tmp/userdata-test.txt실행하면되며, 시스템을 부팅 할 때마다 실행해야하는 쉘 스크립트로 바꾸십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.