У меня небольшой вопрос.
Мои DNS-серверы обновляются нашим DHCP-сервером (Microsoft Windows 2003 R2 SP2).
Мои клиенты - это Debian Linux Distro, и мне нужно изменить свой файл DHCLIENT.CONF на нем, чтобы отправить его полное квалифицированное имя хоста.
НО у меня около 1600 компьютеров, и я не хочу изменять каждого клиента один за другим. Могу ли я, например, использовать системную переменную в файле конфигурации?
Пример:
#DHCLIENT CONF;
где переменная $ hostname - это псевдоним, записанный на BASHRC для команды hostname -f.
send "$hostname"
Если вам нужна дополнительная информация, просто сообщите мне.
Новейшие (4.2.x) версии dhclient поддерживают это, предоставляя функцию gethostname ().
Таким образом, с последней альфа-версией dhclient вы можете поместить что-то подобное в dhclient.conf
send host-name = gethostname();
У Ubuntu есть патч в их версии dhclient, которая позволяет вам делать
send host-name = "<hostname>";
и он заменит его правильным именем хоста.
Redhat исправляет свой dhclient, чтобы предоставить параметры командной строки -H и -F (-H = send host-name, -F = send fqdn.fqdn) command line options. Итак, на Redhat вы можете запустить
dhclient -H $(hostname)
и он отправит правильное имя хоста.
Я ничего не знаю о Debian - возможно, вы захотите исправить свой dhclient с помощью патча Ubuntu.
Думаю, у вас здесь несколько разных подходов. AFAIK, dhclient.conf не поддерживает расширение переменных, как вы указали. Таким образом, остается два очевидных варианта:
Вариант 1. уродлив, он поможет вам преодолеть это препятствие, но его будет сложно поддерживать. Прежде чем вы это узнаете, вы будете регулярно писать сценарии для входа на все свои машины, что займет много времени, будет подвержено ошибкам (например, как правильно обрабатывать хосты и возвращаться позже) и их трудно поддерживать.
Вариант 2. определенно то, что я бы порекомендовал, и я бы рекомендовал puppet как его гораздо более гибкий и простой в использовании по сравнению с cfengine, но относительно зрелый.
Вот ваш манифест (не проверено)
class dhcp-client {
file { "/etc/dhclient.conf":
content => template("dhclient.conf")
}
}
И шаблон:
other dhclient.conf stuff
send "<%= fqdn %>"
и конфигурация узла:
node default {
include dhcp-client
}
Большое спасибо всем (вам обоим), я открыл для себя огромный инструмент под названием Puppet и улучшил свои навыки написания сценариев.
Тема решена.