Я настраиваю некоторые серверы, которые, по сути, должны сами управлять собой после того, как я уйду из компании, поскольку я всего лишь контрактный ИТ-парень. Кто бы это ни управлял, он должен клонировать образ виртуальной машины в ESXi, а когда он запускается, он должен сам себя настроить.

Я знаю, вы, вероятно, говорите "Использовать Puppet or Chef" или "Использовать Docker", хорошо, что я тоже подумал, но это, очевидно, слишком сложно для этой установки, они идут с подходом «меньше - больше».

Эти серверы должны иметь статический IP-адрес, поэтому я подумал, что когда он запускается в первый раз, я могу получить IP-адрес через DHCP, а затем перенастроить /etc/sysconfig/network-scripts/ifcfg-enp0s3 Файл -enp0s3 , использующий текущий IP-адрес в качестве DHCP, и, возможно, даже супер фантазии, например, проверить, работает ли он, если нет, вернуть файл ifcfg-en0s3 , получить его в сети, а затем отправить электронное письмо кому-нибудь, что серверу нужно какое-то руководство внимание, что бы ни работало.

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

Я думал, что мог бы иметь его на уровне выполнения 3, а затем, когда он сам себя настроит, просто удалите символическую ссылку в папке rc3.d на скрипт ... Но это своего рода вариант резервного копирования, если я не могу найти способ просто запустить его при "следующем запуске".

Я также подумал о том, чтобы просто использовать @reboot с заданием cron, но опять же, нужно удалить себя из crontab.

Если кто-то поможет мне найти другое решение для настройки статического IP-адреса, это нормально, но мне все еще нужно знать, как лучше запустить скрипт при следующей загрузке (с указанными уровнями выполнения), потому что это необходимо и для других задач. ,

Спасибо!

PS Я понимаю, что выполнение сценарием таких вещей, как удаление себя из каталогов crontab или rc.d, не обязательно имеет большое значение, я просто подумал, что это джимми-фальсификация, и подумал, что уже может быть альтернативный способ, что-то это означало выполнить один раз при следующей перезагрузке. Но если нет, то любой из двух предыдущих подходов будет достаточно

PSS Я нашел похожую тему здесь, где есть скрипт execute @reboot , который проверяет любые файлы / скрипты в указанном каталоге, которые необходимо выполнить, а затем перемещает их, чтобы отключить их. Я полагаю, что это сработает, я могу сделать что-то вроде символической ссылки на каталог вместо перемещения самих файлов, но если это лучшее решение, то этого будет достаточно. (что бы ни делали работу :-))

2 ответа2

1

довольно просто - добавьте его в качестве сценария запуска - последняя строка сценария после проверки все в порядке и т.д .:

рм $ 0

0

За последние пятнадцать лет я написал сценарий 'firstboot' для нескольких физических и виртуальных устройств хранения и всегда использовал rm символической ссылки после успешного завершения первой загрузки, чтобы убедиться, что она не будет работать в будущих загрузках. ,

Другая возможность - установить файл часового типа, как '/FIRSTBOOT' после завершения первой загрузки, затем добавить строку 'if [-f /FIRSTBOOT]; затем ; выход 0; фи к началу сценария. Это дало бы возможность удалить файл sentinel и перезагрузить компьютер, если вам когда-нибудь понадобится снова перенастроить виртуальную машину, что проще для большинства людей, чем символическая ссылка на неизвестный файл в какой-то непонятный каталог в системе.

Вы находитесь на Centos 7, так что вы используете systemd, а не SysV init. Так что сторожевой файл может быть проще для вас.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .