Наша лабораторная группа только что приобрела около дюжины новых рабочих станций. Это Dell, поэтому, возможно, для удобства они сообщают свой сервисный тег с помощью dmidecode -s system-serial-number
. Мы думаем использовать Clonezilla для простого развертывания образов на всех них, но для каждого из них нужно задать определенное имя хоста и статический IP-адрес. Поэтому объединение этих двух кажется простым с помощью поиска, например:
declare -A tags
tags=(["HKX321K"]="ws1name 10.32.54.10"
["HBZ321G"]="ws2name 10.32.54.11"
)
tag=$(sudo dmidecode -s system-serial-number)
read -a nameip <<< "${tags[$tag]}"
wsname=${nameip[0]}
wsip=${nameip[1]}
sed
или что-то подобное может затем создать файлы /etc/hosts
, hostname
, и network/interfaces
из некоторых шаблонов. Однако достаточно ли изменить эти файлы, и как мне выполнить скрипт "персонализации" на самом раннем этапе загрузки, прежде чем Ubuntu начнет настраивать что-то?
Может ли мой план оказаться плохим по какой-то непредвиденной причине? Какие скрытые подводные камни могут меня поджидать?
решение1
Да, достаточно изменить эти файлы. Вы можете использовать hostnamectl
команду, чтобы легко изменить имя хоста. Эти изменения нужно сделать только один раз. Поэтому вы можете сделать изменения через rc.local
или что-то подобное, чтобы запустить один раз, удалить себя от того, что вызвало его запуск при загрузке, а затем перезагрузить его, прежде чем продолжать делать другие вещи.
Если перезагрузка — слишком много лишней работы, можно попробовать запланировать задание Upstart. Задание Upstart, у которого есть start on startup
условие, запустит его как можно раньше. А еще лучше, задание с start on local-filesystems
запустится достаточно рано, чтобы убедиться, что необходимые файловые системы смонтированы.