Rescue/Deploy/system-restore/CheckHardware
Привязка деплойной системы к оборудованию
По умолчанию бэкап можно восстановить или развернуть на машине с любой конфигурацией. Вплоть до того, что если он был снят с рабочей станции, нет проблем [по ошибке] попробовать накатить его на сервер, и наоборот! И обычно это не то, чего вы хотите. Потому что, даже если system-restore успешно отработает, совершенно не факт, что развёрнутая система будет работать с другим оборудованием ожидаемым образом.
Если вы готовите деплойную систему для кого-то и передаёте её [достаточно далеко], проверив на конкретном оборудовании, для вас важно, чтобы и на «другом конце» оборудование не отличалось, т.к. деплойная система для другого оборудования просто не предназначена и даже не проверялась с ним. На массовом производстве особенно важно проконтролировать, чтобы вся партия «железа» действительно соответствовала заявленному в поставке, малейшее отличия желательно выявлять прямо при развёртывании.
Другими словами: привязка деплойной системы к оборудованию крайне важна, настоятельно рекомендуется её делать. По нашему опыту такая привязка на массовом производстве всегда шла во благо, хотя по началу, сталкиваясь с неожиданными отличиями в «железе», нас просили её убрать, чтобы «не терять драгоценного времени». Такая элементарная проверка позволяет выявить брак и ошибки на массовом производстве, сэкономить уйму времени и ресурсов при дальнейшей поддержке всей поставки. Не нужно путать привязку деплойной системы и привязку развёртывания. Первая определяет, можно ли вообще пользоваться данной деплойной системой на этой машине ещё до того, как начнётся основной процесс, тогда как вторая выполняется в большинстве случаев в самом конце работы, иначе машина просто не загрузится.
Есть несколько способов выполнить нужную привязку. Комбинировать (совмещать) эти способы не стоит, используйте только какой-то один. Самый простой способ — указать название единственной поддерживаемой машины в параметре restrict_hardware. Название можно получить, например, такой командой:
# system-profile -s 2>/dev/null |sed -ne 's/^MACHINE: //p'
Graviton Graviton M75i
Полученное название вписывается в файл параметров:
restrict_hardware="Graviton Graviton M75i"
То же название можно будет увидеть в строке «Bare metal:», выводимой в процессе восстановления. Здесь информация о компьютере берётся из DMI материнской платы. К сожалению, в связи с ошибками записи информации в DMI на массовом производстве такой способ нельзя считать очень надёжным, к тому же название машины может не отражать всей её конфигурации. Тем не менее, данный способ привязки был сохранён.
Второй способ может быть основан на предложенном выше и предназначен для любителей писать собственные скрипты. Можно определить «хук» (в файле hooks.sh) с прототипом check_hardware(). Например, чтобы он проверял на соответствие не единственной строке, а массиву строк, сделав параметр restrict_hardware таким массивом. И тогда ваша деплойная система будет рассчитана не на единственную конфигурацию, а на несколько проверенных.
Третий способ является основным и рекомендованным. Он идеально подходит для любых ситуаций. Предлагается использовать профили оборудования и развёртывания, которые управляются отдельной программой system-profile, тесно интегрированной с system-restore. Соответствие всей конфигурации машины существующему профилю выполняется полностью автоматически либо интересующий профиль можно задать вручную через аргументы (-p, --profile=) или в файле параметров (profile=). Используемый при развёртывании профиль можно увидеть в строке «Profile:». Данный способ также существенно расширяет возможности system-restore, о чём говорится в следующем разделе.
