Назад | Перейти на главную страницу

Вытяните репозиторий GitHub при запуске сервера Ubuntu

У меня есть группа автомасштабирования EC2, и у меня есть центральная конфигурация с использованием git между серверами. Они настроены с помощью ключей, поэтому им не нужен пароль.

Я хочу убедиться, что при запуске и создании экземпляра из AMI (с возможно устаревшей конфигурацией) он извлекает конфигурацию с помощью обычной команды git pull. Команда должна быть выполнена от имени определенного пользователя, так как только этот пользователь может git pull, поскольку он имеет ключ RSA в своем домашнем каталоге.

Таким образом, по сути, при запуске сервера определенному пользователю необходимо запустить git pull в определенном репозитории.

Вы можете установить эту команду в /etc/rc.local. Измените rc.local в своем образе, чтобы он состоял из чего-то вроде этих строк:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

pushd /certain/repository
su -s /bin/bash -c "git pull" <username>
popd
exit 0

Просто замените пользователя, с правами которого вы хотите запускать git pull. Также на всякий случай не забудьте запустить:

chmod +x /etc/rc.local

Это часть соответствующей документации RedHat на rc.local, но в основном она одинакова для всех дистрибутивов:

Сценарий /etc/rc.d/rc.local выполняется командой init во время загрузки или при изменении уровня выполнения. Добавление команд в конец этого сценария - простой способ выполнять необходимые задачи, такие как запуск специальных служб или инициализация устройств, без написания сложных сценариев инициализации в каталоге /etc/rc.d/init.d/ и создания символических ссылок.