새 EC2 인스턴스를 생성하고 생성 시 인스턴스에 사용자 데이터를 제공하려고 합니다. 내 userdata는 다른 애플리케이션(myApplication)의 속성 파일에 있는 매개변수를 수정하는 일부 bash 명령을 실행합니다. 목적은 시작하기 전에 myApplication의 구성을 수정하는 것입니다. myApplication은 /etc/init.d에서 시작하도록 구성됩니다.
기본적으로 설명된 작업을 수행하려고 합니다.여기
/etc/init.d/cloud-init-local에 대한 chkconfig 구성이 우선순위 50으로 설정되어 있는 것을 확인했습니다. 나는 이것이 내 userdata 스크립트를 실행하는 메커니즘이라고 가정합니다.
myApplication도 chkconfig를 사용하여 구성되지만 우선 순위는 90입니다. 계획은 myApplication이 시작되기 전에 사용자 데이터를 실행하는 것입니다.
그러나 이것은 내가 경험한 것이 아니다. cloud-init-output.log 파일에서 내 userdata가 실제로 실행되었지만 myApplication이 이미 시작되었음을 확인할 수 있습니다.
내 사용자 데이터 스크립트가 /etc/init.d/cloud-init-local에 의해 실행된다는 가정이 잘못되었습니까? 부팅 순서 동작에 대한 내 예상이 올바르지 않습니까?
도움을 주시면 감사하겠습니다. 감사합니다!
답변1
시스템 오류가 발생한 것 같습니다. (좋은 생각이라고 생각합니다.) 특히 가져온 sysv 스크립트의 시작 속도를 높이기 위해 sysv init에서 무시되는 LSB 종속성을 구성하지 않는 한 병렬로 실행됩니다.
이 문제에 대한 해결책은
- 두 개의 init 스크립트를 systemd 종속성을 갖는 systemd 스크립트로 변환합니다.
- 두 초기화 스크립트 모두에 종속성을 추가합니다.
- 당신보다 똑똑해지려고 노력하지 않는 다른 초기화 시스템을 선택하세요.