Я создаю экземпляр ec2 из AMI, используя
aws ec2 run-instances [lots of arguments] --user-data file://my_sh_file.sh
my_sh_file.sh выглядит так:
su ubuntu # fails with or without this
cd /home/ubuntu/my_working_dir
git pull origin master
. app_startup_script.sh
Git не может подключиться к этому журналу ошибок (из /var/log/cloud-init-output.log):
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Если я вхожу в систему (как ubuntu) и вызываю git pull, все работает нормально.
Я предполагаю, что либо (а) su ubuntu не работает, либо (б) (это кажется менее вероятным), что конфигурация ssh не загружена в этот момент в последовательности загрузки ... но я в тупике. Помогите?
Как вы используете sudo
Неправильно.
Прежде всего это должно быть sudo -u ubuntu
не просто sudo ubuntu
. Однако даже тогда это не сработает.
Когда ты бежишь sudo
он порождает новую оболочку или, если дана команда, запускает эту команду под убунту пользователь. В твоем случае sudo -u ubuntu
не имеет команды для запуска, и поскольку он находится в неинтерактивном режиме, он также не запускает оболочку. Он просто выходит.
Следующие строки - cd
и git
- затем запустить в контексте Данные пользователя сценарий, не под убунту пользователь, поэтому он не работает.
Вы можете сделать это, например:
sudo -u ubuntu sh -c "cd /home/...; git pull ...; ./app.sh"
Это запустит все команды под убунту пользователь.
Надеюсь, это поможет :)