cloud-init가 EC2 인스턴스의 첫 번째 부팅에서 사용자 데이터 스크립트 를 실행 한 후에는 후속 재부팅시 cloud-init가 스크립트를 다시 실행하지 않도록 상태 파일이 작성됩니다. 이 상태 파일을 삭제하여 사용자 데이터 스크립트를 다시 실행하려는 경우가 있습니다. 어 Where 어?
cloud-init가 EC2 인스턴스의 첫 번째 부팅에서 사용자 데이터 스크립트 를 실행 한 후에는 후속 재부팅시 cloud-init가 스크립트를 다시 실행하지 않도록 상태 파일이 작성됩니다. 이 상태 파일을 삭제하여 사용자 데이터 스크립트를 다시 실행하려는 경우가 있습니다. 어 Where 어?
답변:
rm /var/lib/cloud/instances/*/sem/config_scripts_user
작업 확인 :
완벽을 기하기 위해이 AMI (부모 AMI는 ...)를 가지고 있고 모두가 cloud-init
사용자 데이터를 실행했다는 사실 / 가능성을 추적해야하는 상황이있는 경우 현재 세마포어 만 삭제할 수 있습니다.
rm /var/lib/cloud/instance/sem/config_scripts_user
curl
메타 데이터 서비스에서 현재 인스턴스 ID를 가져 오는 것은 불필요 합니다. /var/lib/cloud/instance
아래의 현재 인스턴스에 이미 심볼릭 링크가 있기 때문 입니다 /var/lib/cloud/instances
. :-)
스크립트를 /etc/rc.local에 넣으면 재부팅 할 때마다 스크립트가 실행됩니다.
/etc/rc.local
EC2 사용자 데이터와는 아무런 관련이 없습니다.
상태 파일을 제거하는 대신 부팅 할 때마다 사용자 데이터를 다시 실행하도록 구성 할 수도 있습니다. cloud_final_modules
userdata 스크립트 를 사용 하여 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
실행하면되며, 시스템을 부팅 할 때마다 실행해야하는 쉘 스크립트로 바꾸십시오.