Скрипт запуска на EC2
-
23-08-2019 - |
Вопрос
Я создал собственный Amazon AMI (Fedora), запускающий несколько сценариев и затем отключающийся.
Проблема с AMI заключается в том, что если мой код изменится, у экземпляра AMI должен быть способ получить последние сценарии перед их выполнением.
Я написал сценарий оболочки и вставил его /etc/init.d/nt_startup
Чтобы поддерживать код в актуальном состоянии, я выполняю git pull
сценарий оболочки в моем репозитории кода, а затем выполните его.
Проблема в том, git pull
похоже, не запускается при загрузке экземпляра, но сценарий Python работает нормально.Не знаю, чего мне не хватает...вот скрипт запуска:
#!/bin/bash
#
# ec2 Startup script for EC2 machines
#
# chkconfig: 345 99 02
# description: Script used to issue startup and shutdown commands.
#
if [ "$1" = "start" ]; then
/usr/scripts/code/git_latest
python /usr/scripts/code/process.py
exit
fi
if [ "$1" = "stop" ]; then
#nothing
exit
fi
А /usr/scripts/code/git_latest
сценарий оболочки выглядит следующим образом:
#pulls in the latest code from the repository
cd /usr/scripts/code
sudo git pull
Он должен снести последнюю process.py
сценарий.
Странно то, что если я подключусь к своему экземпляру по SSH и выполню сценарий запуска вручную (/etc/init.d/nt_startup "start"
), скрипт git работает нормально.
Я что-то пропустил?
Решение
Хорошо, я наконец понял это.Изучив вывод EC2, я нашел эту строку:
"Запуск ntstartup:судо:извините, у вас должен быть tty, чтобы запустить sudo"
Судя по всему, Fedora блокирует команды sudo, не относящиеся к tty.
Быстрый поиск привел к решению:
- От имени пользователя root запустите «visudo».
- Найдите строку с «Требованиями по умолчанию» и закомментируйте ее (#Требования по умолчанию).
Надеюсь, это будет полезно для всех, кто сталкивается с этой проблемой.
Другие советы
Вам необходимо поместить ссылку для запуска в /etc/rc?.d.Вы можете использовать chkconfig(8) или ntsysv(8) для администрирования этих каталогов.