web-dev-qa-db-ja.com

preseedファイルで変数を使用できますか?

preseed.cfgファイルを使用して、packerを使用して自動ubuntuイメージを作成しました。複数のテンプレートを使用しており、それぞれに同じpreseedが必要ですが、特定のパラメーターにはいくつかの異なる値が必要です。

Preseedに変数を作成して、環境変数から値を取得することはできますか?

そうでない場合、私の回避策は次のとおりです。

  1. preseed.cfgのように$CUSTOM_VALUEに置き換え可能な値を作成し、preseedの名前をpreseed.cfg.tplに変更します
  2. パッカープロセスの前に、preseed.cfg.tplに対してsedを実行して$CUSTOM_VALUEを環境変数値に置き換え、ファイルをpreseed.cfgとして出力します
  3. 新しいプレシードでパッカーを実行します

別の回避策は、 racker のようなプレプロビジョニングツールを使用して、テンプレートプレシードを読み取り、値を置き換えてファイルに保存し、ラッカー出力をパッカーにパイプすることです。 racker ubuntu.rb - | packer build -

1

はい。 bootparam にはこの重要な部分があります:

上記のようにセットアップ関数として受け入れられない「foo = bar」の形式のものは、設定される環境変数として解釈されます。

そして「preseedを使用したインストールの自動化」の付録B.2.2:

B.2.2。ブートパラメータを使用した質問のプレシード事前構成ファイルを使用して一部の手順をプレシードできない場合でも、インストーラの起動時にコマンドラインでプレシード値を渡すことができるため、インストールを完全に自動化できます。

事前シードを実際に使用したくないが、特定の質問に対する回答を提供したいだけの場合にも、ブートパラメーターを使用できます。これが役立ついくつかの例は、このマニュアルの他の場所に記載されています。

Debian-installer内で使用される値を設定するには、この付録の例にリストされている任意のpreseed変数にpath/to/variable = valueを渡すだけです。値を使用してターゲットシステムのパッケージを構成する場合は、所有者を付加する必要があります(通常、debconf変数(またはテンプレート)の所有者は、対応するdebconfテンプレートを含むパッケージの名前です。使用される変数の場合インストーラー自体では所有者は「di」です。テンプレートと変数は複数の所有者を持つことができ、パッケージがパージされた場合にテンプレートをdebconfデータベースから削除できるかどうかを判断するのに役立ちます。)owner:path/toのような変数の/ variable = value。所有者を指定しない場合、変数の値はターゲットシステムのdebconfデータベースにコピーされないため、関連するパッケージの構成中は未使用のままになります。

通常、この方法で質問をプレシードすると、質問は行われません。質問に特定のデフォルト値を設定し、それでも質問を尋ねるには、演算子として「=」の代わりに「?=」を使用します。セクションB.5.2「preseedを使用してデフォルト値を変更する」も参照してください。

ブートプロンプトで頻繁に設定される一部の変数は、エイリアスが短いことに注意してください。エイリアスが使用可能な場合、この付録の例では、完全な変数の代わりにエイリアスが使用されます。たとえば、preseed/url変数はurlとしてエイリアスされています。別の例は、タスクエイリアスです。これは、tasksel:tasksel/firstに変換されます。

:現在のLinuxカーネル(2.6.9以降)は、デフォルトで追加されたオプションを含め、最大32のコマンドラインオプションと32の環境オプションを受け入れますインストーラ。これらの数を超えると、カーネルがパニック(クラッシュ)します。 (以前のカーネルでは、これらの数は少なかった。)

:ubuntu.parmfileは11行に制限されており、それぞれの長さは80文字です。 (正確な制限は、11行で、各* 80文字+追加の10文字です。)したがって、1行に複数のパラメーターを指定し、パラメーターを単一のスペースで区切り、できるだけ多くの(短縮された)エイリアスを使用することをお勧めします。ただし、複数の行にわたって単一のパラメーター(その値を含む)を指定しないでください。パラメータの大文字小文字やシーケンスは関係ありません。

また、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
Rinzwind