Mam instancji EC2 z uruchomionym AMI opartym na AMI Amazon Linux. Podobnie jak wszystkie takie AMI, obsługuje system cloud-init do uruchamiania skryptów startowych opartych na danych użytkownika przekazywanych do każdej instancji. W tym konkretnym przypadku, mój Wprowadzanie danych użytkownika zdarza się być Dołącz plik, który kilka innych źródeł skryptów startowych:W jaki sposób mogę uruchamiać skrypty uruchamiania przy uruchamianiu w chmurze za każdym razem, gdy uruchamiana jest moja instancja EC2?
#include
http://s3.amazonaws.com/path/to/script/1
http://s3.amazonaws.com/path/to/script/2
Pierwszy raz uruchomić moje wystąpienie, skrypt startowy chmury startowych przebiega prawidłowo. Jeśli jednak wykonam miękkie ponowne uruchomienie instancji (na przykład, uruchamiając sudo shutdown -r now
), instancja ponownie pojawi się bez uruchamiania skryptu startowego za drugim razem. Jeśli pójdę do logów systemowych, widzę:
Running cloud-init user-scripts
user-scripts already ran once-per-instance
[ OK ]
To nie jest to, co chcę - Widzę użyteczność posiadania skryptów startowych, które uruchamiane tylko raz za przykład życia, ale w moim przypadku te powinny uruchamiane przy każdym uruchomieniu instancji, podobnie jak zwykłe skrypty startowe.
Zdaję sobie sprawę, że jednym z możliwych rozwiązań jest ręczne umieszczenie moich skryptów w rc.local
po pierwszym uruchomieniu. Wydaje się to jednak uciążliwe, ponieważ środowiska cloud-init i rc.d są nieco różne i teraz musiałbym debugować skrypty przy pierwszym uruchomieniu i wszystkie kolejne uruchomienia oddzielnie.
Czy ktoś wie, w jaki sposób mogę powiedzieć cloud-init, aby zawsze uruchamiał moje skrypty? To z pewnością brzmi jak coś, co pomyśliliby twórcy chmurowego inicjatora.
> Mam nadzieję, że dodam możliwość modyfikowania sekcji konfiguracji w pewnym momencie. Czy ta funkcja została dodana teraz? Widzę, że w najnowszym cloud-init jest funkcja "fuzji", ale nie mogłem wymyślić, jak to wykorzystać, aby zmienić tylko linię "scripts-user". To po prostu zastąpi całą listę, niezależnie od opcji, które przeszły. – Meta
Oto jedna linijka, która dokonuje modyfikacji w linii: 'sed -i 's/scripts-user $/\ [scripts-user, always \] /'/etc/cloud/cloud.cfg' – wjordan
Umieszczanie plików w '/ var/lib/cloud/scripts/per-boot' wydaje się dużo łatwiejszy, mogę go użyć do ustawienia [automatycznego zamykania ec2] (http://stackoverflow.com/a/38186787/4058484). – hyip