Можно ли использовать переменные в файле preseed?

Я создал автоматизированное изображение Ubuntu с использованием упаковщика с использованием файла preseed.cfg и понял, что мы используем несколько шаблонов, и для каждого из них требуется одинаковое предварительное условие, но несколько разных значений для конкретных параметров.

Можно ли создать переменную в предварительном семени для получения значения из переменной среды?

Если бы не мой обходной путь:

  1. Создать заменяемый значение в preseed.cfg аналогично $CUSTOM_VALUE и переименуйте предварительное семя в preseed.cfg.tpl
  2. Перед процессом упаковщика запустите sed для preseed.cfg.tpl, чтобы заменить $CUSTOM_VALUE значением переменной среды и вывести файл as preseed.cfg
  3. Запустить упаковщик на новом семени

Другой обходной путь - использовать препровизатор, подобный racker , чтобы прочитать шаблон семени, заменить значение, сохраните его в файл, а затем направьте вывод устройства для монтажа в упаковщик, например racker ubuntu.rb - | packer build -

1
задан 24 July 2019 в 22:32

1 ответ

Да. bootparam имеет эту важную часть:

Что-либо формы 'foo=bar', который не принят как функция установки, как описано выше, затем интерпретируется как переменная среды, которая будет установлена.

И приложение B.2.2 "Автоматизации установки с помощью предварительного отбора":

B.2.2. Используя параметры начальной загрузки для предварительного отбора вопросов, Если файл предварительного конфигурирования не может использоваться для предварительного отбора некоторых шагов может все еще быть полностью автоматизирована установка, так как можно передать значения перед семенем командной строке при начальной загрузке установщика.

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

Для устанавливания значения, которое будет использоваться в debian-установщике, просто передайте path/to/variable=value для любой из переменных перед семенем, перечисленных в примерах в этом приложении. Если значение должно использоваться для конфигурирования пакетов для целевой системы, необходимо будет предварительно ожидать владельца (Владелец debconf переменной (или шаблон) обычно название пакета, который содержит соответствующий шаблон debconf. Для переменных, используемых в самом установщике, владелец является “d-i”. Шаблоны и переменные могут иметь больше чем одного владельца, который помогает определить, могут ли они быть удалены из debconf базы данных, если пакет очищен.) переменной как в owner:path/to/variable=value. Если Вы не укажете владельца, то значение для переменной не будет скопировано в debconf базу данных в целевой системе и таким образом останется неиспользованным во время конфигурации соответствующего пакета.

Обычно, предварительный отбор, вопрос таким образом будет означать, что вопрос не зададут. Для установки определенного значения по умолчанию для вопроса но все еще вопрос спросил, используйте “? =” вместо “=” как оператор. См. также Раздел B.5.2, “Используя предварительный отбор для изменения значений по умолчанию”.

Обратите внимание, что некоторые переменные, которые часто устанавливаются при подсказке начальной загрузки, имеют более короткий псевдоним. Если псевдоним доступен, он используется в примерах в этом приложении вместо полной переменной. Переменная предварительного семени/URL, например, была искажена как URL. Другим примером является псевдоним задач, который переводит в tasksel:tasksel/first.

Примечание: Текущие ядра Linux (2.6.9 и позже) принимают максимум 32 параметров командной строки и 32 опций среды, включая любые опции, добавленные по умолчанию для установщика. Если эти числа будут превышены, то ядро запаникует (отказывают). (Для более ранних ядер эти числа были ниже.)

Примечание: ubuntu.parmfile ограничен 11 строками только, каждый 80 символов в длину. (Точный предел является 11 строками с каждым * 80 символов плюс дополнительные 10 символов.) Следовательно рекомендуется попытаться указать больше, чем всего один параметр на строку, отдельные параметры одиночными пробелами и использованием как можно больше (сократили) псевдонимы. Но не указывайте единственный параметр (включая, он - значение) через несколько строк! Случай параметра, а также последовательности не имеет значения.

И B.2.4 имеет список псевдонимов:

B.2.4. Псевдонимы, полезные с предварительным отбором следующие псевдонимы, могут быть полезными при использовании (автоматический режим) предварительного отбора. Обратите внимание, что это просто короткие псевдонимы для имен вопроса, и всегда необходимо указывать значение также: например, auto=true или interface=eth0.

priority    debconf/priority
fb          debian-installer/framebuffer
language    debian-installer/language
country     debian-installer/country
locale      debian-installer/locale
theme       debian-installer/theme
auto        auto-install/enable
classes     auto-install/classes
file        preseed/file
url         preseed/url
domain      netcfg/get_domain
hostname    netcfg/get_hostname
interface   netcfg/choose_interface
protocol    mirror/protocol
suite       mirror/suite
modules     anna/choose_modules
recommends  base-installer/install-recommends
tasks       tasksel:tasksel/first
desktop     tasksel:tasksel/desktop
dmraid      disk-detect/dmraid/enable
keymap      keyboard-configuration/xkb-keymap
preseed-md5 preseed/file/checksum
1
ответ дан 7 December 2019 в 15:00

Другие вопросы по тегам:

Похожие вопросы: