これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド virt-builder です。
プログラム:
NAME
virt-builder - 仮想マシン イメージをすばやく構築する
SYNOPSIS
virt-builder の OS バージョン
[-o|--output DISKIMAGE] [--size サイズ] [--format raw|qcow2]
[--arch アーキテクチャ] [--ISO ファイルを添付]
[--chmod PERMISSIONS:FILE] [--commands-from-file FILENAME]
[--copy SOURCE:DEST] [--copy-in LOCALPATH:REMOTEDIR]
[--delete PATH] [--edit FILE:EXPR] [--firstboot SCRIPT]
[--firstboot-command'CMD + ARGS '] [--firstboot-install PKG、PKG ..]
[--hostname HOSTNAME] [--install PKG、PKG ..]
[--link TARGET:LINK [:LINK ..]] [--mkdir DIR] [--move SOURCE:DEST]
[--password USER:SELECTOR] [--root-password SELECTOR]
[--run SCRIPT] [--run-command'CMD + ARGS '] [--scrub FILE]
[--sm-attach セレクター] [--sm-register] [--sm-remove]
[--sm-unregister] [--ssh-inject USER [:SELECTOR]] [--truncate FILE]
[--truncate-recursive パス] [--timezone タイムゾーン] [--touch ファイル]
[--update] [--upload FILE:DEST] [--write FILE:CONTENT]
[--no-logfile] [--password-crypto md5 | sha256 | sha512]
[--selinux-relabel] [--sm-credentials セレクター]
virt-builder -l|--list [--long] [--list-format short|long|json]
virt-builder --notes os-version
virt-builder --print-cache
virt-builder --cache-all-templates
virt-builder --delete-cache
virt-builder --get-kernel ディスクイメージ
[--format raw|qcow2] [--output OUTPUTDIR]
DESCRIPTION
Virt-builder は、新しい仮想マシンをすばやく構築するためのツールです。 色々施工できます
通常は数分以内に、ローカルまたはクラウドで使用する VM の数を増やします。 ヴァートビルダーも
これらの VM をカスタマイズする方法は多数あります。 すべてがコマンドラインから実行され、何も実行されない
root 権限が必要なため、自動化とスクリプト作成は簡単です。
virt-builder はゲストを最初からインストールしないことに注意してください。 きちんとした準備が必要です。
デジタル署名された OS テンプレートを作成し、それらをカスタマイズします。 このアプローチが使用されるのは、
はるかに高速ですが、新規インストールを行う必要がある場合は、 仮想インストール(1)
と oz-installとします。
開始する最も簡単な方法は、次のセクションの例を見ることです。
例
リスト バーチャル 利用できます
virt-builder --list
インストール可能なオペレーティング システムが一覧表示されます。 自由な選択
再配布可能な OS が標準で提供されています。 独自のものを追加することもできます (以下を参照)。
リストからゲストを選択した後、インストールがあるかどうかを確認したい場合があります
注意事項:
virt-builder --notes fedora-20
建設 a バーチャル 機械
virt-builder フェドーラ-20
virt-builder と同じアーキテクチャの Fedora 20 イメージをビルドします (したがって、
i386 インストールでは、利用可能な場合は i386 イメージを構築しようとします)。 これで全部入ります
デフォルト設定 (最小サイズ、ユーザー アカウントなし、ランダムなルート パスワード、裸のパスワードのみ)
最低限インストールされているソフトウェアなど)。
我が国 do このコマンドをルートとして実行する必要があります。
これを初めて実行するときは、ネットワーク経由でテンプレートをダウンロードする必要がありますが、これは取得されます
キャッシュされます (「キャッシュ」を参照してください)。
出力ファイルの名前はテンプレート名から派生するため、上記のようになります
フェドラ-20.img. を使用して出力ファイル名を変更できます。 -o オプション:
virt-builder fedora-20 -o mydisk.img
使用することもできます -o 既存のデバイスまたは論理ボリュームに書き込むオプション。
virt-builder fedora-20 --format qcow2
上記と同様ですが、qcow2 形式で出力を fedora-20.qcow2.
virt-builder fedora-20 --サイズ 20G
上記と同様ですが、出力サイズは 20 GB になります。 ゲスト OS はコピー時にサイズ変更されます
出力 (自動的に、 virt-サイズ変更(1))。
virt-builder fedora-20 --arch i386
上記と同様ですが、利用可能な場合は i386 テンプレートを使用します。
設定 ルート password
virt-builder fedora-20 --root-password ファイル:/tmp/rootpw
Fedora 20 イメージを作成します。 root パスワードはファイルから取得されます /tmp/rootpw.
する場合は注意してください しない セッションに --root-パスワード その後、ゲストは与えられます ランダム rootパスワード。
ユーザー アカウントを作成することもできます。 以下の「ユーザーとパスワード」を参照してください。
作成セッションプロセスで hostname
virt-builder fedora-20 --ホスト名 virt.example.com
ホスト名を「virt.example.com」に設定します。
装着 ソフトウェア
通常の (ゲスト) ソフトウェア リポジトリ (例: yum または apt) からパッケージをインストールするには:
virt-builder fedora-20 --install "inkscape,@Xfce Desktop"
(Fedora では、「@」はパッケージのグループをインストールするために使用されます。Debian では、
代わりにメタパッケージを使用してください)。
コア パッケージを最新バージョンに更新するには:
virt-builder debian-7 --update
Fedora や Red Hat Enterprise Linux などの SELinux を使用するゲストの場合は、以下を実行する必要がある場合があります。
パッケージのインストールまたは更新後の SELinux の再ラベル付け (以下の「SELINUX」を参照):
virt-builder fedora-20 --update --selinux-relabel
カスタマイズ インストール
インストールをカスタマイズできる多くのオプションがあります。 これらには以下が含まれます:
- 走る/--実行コマンド、ディスク イメージの実行中にシェル スクリプトまたはコマンドを実行します。
生成され、ディスク イメージに入るファイルを追加または編集できます。
--firstboot/--firstboot-コマンド、最初に実行されるスクリプト/コマンドを追加できます
ゲストの起動時間。 --編集 ファイルを編集します。 - アップロード ファイルをアップロードします。
例:
猫 <<'EOF' > /tmp/yum-update.sh
yum -yアップデート
EOF
virt-builder fedora-20 --firstboot /tmp/yum-update.sh
または単に:
virt-builder fedora-20 --firstboot-command 'yum -y update'
これは yum(8) ゲストの初回起動時に「update」コマンドを XNUMX 回実行します。
または:
virt-builder fedora-20 \
-- '/etc/yum.conf を編集:
s/gpgcheck=1/gpgcheck=0/'
編集するのは /etc/yum.conf ディスク イメージの内部 (ディスク イメージの作成中、ずっと前に
ブート)。
これらのオプションを組み合わせて、すべてのタイプの複数のオプションを使用できます。
OPTIONS
- 助けて
ヘルプを表示します。
- アーチ アーキテクチャ
出力イメージに指定されたアーキテクチャを使用します。 これは、ソースが存在する必要があることを意味します
要求されたアーキテクチャに要求されたテンプレートを提供します。
「アーキテクチャ」も参照してください。
-添付 ISOファイル
カスタマイズ段階で、指定されたディスクが libguestfs に接続されます
アプライアンス。 これは、追加のソフトウェア リポジトリやその他のデータを提供するために使用されます。
カスタマイズ。
接続されているディスクのボリュームまたはファイルシステムが次のようになっていることを確認する必要があります。
ラベルを付けて(またはISOボリューム名を使用して)、実行時にラベルでマウントできるようにします-
スクリプト:
mkdir / tmp / mount
LABEL = EXTRA / tmp / mountをマウントします
あなたは複数を持つことができます -添付 オプションであり、フォーマットは任意のディスクフォーマットにすることができます(
単なるISO)。
も参照してください。 - 走る, "ビルド時にサイド リポジトリからパッケージをインストールする",
ジェニソイメージ(1) virt-make-fsとします。
--添付フォーマット FORMAT
次のディスクフォーマットを指定します -添付 オプション。 「FORMAT」は通常「raw」です
または「qcow2」。 ISOには「raw」を使用します。
- キャッシュ DIR
-キャッシュなし
- キャッシュ DIR は、キャッシュされたテンプレート ファイルを使用/チェックするディレクトリを設定します。 設定されていない場合、
デフォルトはどちらか $XDG_CACHE_HOME/virt-builder/ or $HOME/.cache/virt-builder/.
-キャッシュなし テンプレートのキャッシュを無効にします。
--cache-all-templates
すべてのテンプレートをキャッシュにダウンロードして終了します。 「キャッシング」を参照してください。
これはすべてをキャッシュするわけではないことに注意してください。 より多くのテンプレートがアップロードされる可能性があります。 これも
パッケージをキャッシュしません ( - インストール, - 更新 オプション)。
--チェック署名
--チェック署名なし
OS テンプレートのデジタル署名をチェックする/チェックしない。 デフォルトはチェックすることです
署名が正しくない場合は終了します。 使用する --チェック署名なし これをバイパスします
チェック。
参照 - 指紋.
- カール カール
代替を指定する curl(1) バイナリ。 これを使用して、curl パラメーターを追加することもできます。
たとえば、https 証明書のチェックを無効にするには:
virt-builder --curl "curl --insecure" [...]
--削除キャッシュ
テンプレート キャッシュを削除します。 「キャッシング」を参照してください。
--失敗時に削除なし
ビルドに失敗しても出力ファイルを削除しません。 これを使用して障害をデバッグできます
スクリプトを実行します。 イメージをデバッグする方法については、「ビルドのデバッグ」を参照してください。
デフォルトでは、virt-builder が失敗した場合 (または、たとえば、いくつかの
実行するスクリプトは失敗します)。
- 指紋 「あぁぁぁぁぁぁぁぁぁぁ…」
インデックスとテンプレートが、指定されたフィンガープリントを持つキーによって署名されていることを確認してください。
(フィンガープリントは長い文字列で、通常は 10 つの 4 進数の XNUMX グループとして記述されます。
数字)。
このオプションは複数回指定できます。 ソース URL が複数ある場合は、
指紋を持たないか、XNUMX つまたは複数の指紋を持つことができます。 あなたが持っている場合
複数の場合、それぞれがソース URL と 1 対 1 で対応している必要があります。
- フォーマット qcow2
- フォーマット 生
通常のビルドの場合、これは出力形式を選択します。 デフォルトは 生.
連絡先 --get-カーネル これは入力形式を指定します。
古いスタイルの qcow2 ファイルを作成するには (RHEL 6 または非常に古い qemu との互換性のため)
1.1)、virt-builder を実行した後、次のコマンドを使用します。
qemu-img amend -f qcow2 -o compat=0.10 Output.qcow2
--get-カーネル IMAGE
このオプションは、以前に構築されたディスク イメージからカーネルと initramfs を抽出します。
「IMAGE」と呼ばれます(実際、これは、VM を使用して構築されたものだけでなく、任意の VM ディスク イメージで機能します
仮想ビルダー)。
指定しない限り、カーネルと initramfs は現在のディレクトリに書き込まれます。
- 出力 「出力ディレクトリ」 ディレクトリにジョブを開始します。 名前。
を使用して指定しない限り、ディスク イメージのフォーマットは自動的に検出されます。
- フォーマット オプションを選択します。
ゲストに複数のカーネルが含まれている場合、最も高い
バージョン番号が選択されます。 ディスク イメージから任意のカーネルを抽出するには、次を参照してください。
ゲストフィッシュ(1)。 全体を抽出するには /ブート ゲストのディレクトリ、参照 仮想コピーアウトとします。
--gpg GPG
代替を指定する gpg(1) (GNU Privacy Guard) バイナリ。 これを使用して追加することもできます
gpg パラメーター。たとえば、代替ホーム ディレクトリを指定します。
virt-builder --gpg "gpg --homedir / tmpに「[...]
-l
- リスト
- リスト --リスト形式 形式でアーカイブしたプロジェクトを保存します.
- リスト - 長さ
利用可能なテンプレートを一覧表示します。
で選択可能 --リスト形式 リスト テンプレートの出力形式:
短い
デフォルトの形式では、テンプレート識別子のみが出力され、その横にその短い
説明。
長い
利用可能なソースの詳細を含むテキスト リストを出力し、その後に
利用可能なテンプレートの詳細。
JSON
利用可能なソースの詳細との詳細を含む JSON オブジェクトを出力します。
利用可能なテンプレート。
メイン オブジェクトの「バージョン」キーは「互換バージョン」を表し、
結果の JSON 出力が
以前のバージョン (たとえば、構造が変更された、またはオプションではないキーが変更された)
もう存在しません)。
- 長さ 「長い」形式の省略形です。
も参照してください。 - ソース, - ノート、「テンプレートのソース」。
-機械可読
このオプションは、によって解析されるときに出力をよりマシンフレンドリーにするために使用されます
他のプログラム。 以下の「機械可読出力」を参照してください。
-m MB
--memsize MB
に割り当てられたメモリの量を変更します - 走る スクリプト。 あなたが見つけたらこれを増やしてください
それ - 走る スクリプトまたは - インストール オプションのメモリが不足しています。
デフォルトは、次のコマンドで見つけることができます。
ゲストフィッシュの取得-memsize
- 通信網
- 圏外
インストール中にゲストからのネットワークアクセスを有効または無効にします。
デフォルトは有効です。 使用する - 圏外 アクセスを無効にします。
ネットワークは発信接続のみを許可し、その他の小さな制限があります。 見る
の「ネットワーク」 仮想レスキューとします。
あなたが使用している場合 - 圏外 次に、次のような特定の他のオプション - インストール 動作しないでしょう。
これは、起動後にゲストがネットワークにアクセスできるかどうかには影響しません。
これは、ハイパーバイザーまたはクラウド環境によって制御され、何もすることがないためです。
virt-builder で行います。
一般的に言えば、あなたはすべきです つかいます - 圏外。 しかし、ここにあなたが
したいかもしれません:
1.使用しているlibguestfsバックエンドがネットワークをサポートしていないため。
(参照:の「バックエンド」 ゲスト(3))。
2.インストールする必要のあるソフトウェアはすべて添付のISOからのものであるため、
ネットワーク。
3.信頼できないゲストコードがホストネットワークにアクセスしようとするのは望ましくありません。
virt-builder を実行しています。 これは特に、信頼できない場合に問題になります。
オペレーティングシステムテンプレートのソース。 (以下の「セキュリティ」を参照してください)。
4.ホストネットワークがありません(たとえば、安全な/制限された環境)。
--同期なし
終了時に出力ファイルを同期しません。
Virt-builder fsync は、終了時の出力ファイルまたはディスク イメージです。
その理由は、qemu/KVM のデフォルトのキャッシュ モードが「none」または「directsync」であるためです。
ホスト ページ キャッシュをバイパスします。 したがって、これらは正しく機能しません。
virt-builder を実行した直後にゲストを起動しました - 彼らは
完全な出力ファイル。 (これらのキャッシュ モードは使用しないでください。
この理由やその他の理由で根本的に壊れています。)
これらの破損したキャッシュ モードを使用していない場合は、次を使用できます。 --同期なし これを避けるために
不必要な同期を回避し、パフォーマンスを大幅に向上させます。
- ノート os-バージョン
このゲストに関連するすべてのメモを一覧表示して終了します (これではインストールは実行されません)。
-o ファイル名
- 出力 ファイル名
出力を書き込む ファイル名. このオプションを指定しない場合、出力は
ファイル名は、「os-version」文字列に「.img」を追加することで生成されます (raw の場合)
形式) または ".qcow2" (qcow2 形式の場合)。
出力ファイル名は、デバイス、パーティション、または論理ボリュームであることに注意してください。
と一緒に使用する場合 --get-カーネル、このオプションは出力ディレクトリを指定します。
--プリントキャッシュ
テンプレート キャッシュに関する情報を出力します。 「キャッシング」を参照してください。
-q
- 静かな
通常の進行状況メッセージを出力しません。
- サイズ サイズ
出力ディスクのサイズを選択します。サイズは共通名を使用して指定できます
「32G」(32ギガバイト)など
Virt-builder は、ディスク イメージ内のファイル システムのサイズを自動的に変更します。
サイズが指定されていない場合、次の XNUMX つのいずれかが発生します。 出力が
ファイルの場合、サイズはテンプレートと同じです。 出力がデバイスの場合、
パーティションなどの場合、そのデバイスのサイズが使用されます。
サイズをバイト単位で指定するには、数字の後に小文字を続ける必要があります b、例:
"--サイズ 10737418240b".
--smp N
N≥2の仮想CPUを有効にする - 走る 使用するスクリプト。
- ソース URL
インデックスを検索するソース URL を設定します。
このオプションを複数回指定して、複数のソースを指定できます。
以下の「テンプレートのソース」も参照してください。
指さしてはいけませんのでご注意ください - ソース あなたが信頼していない情報源に(
ソースは信頼できる誰かによって署名されています)。 も参照してください。 - 圏外 オプションを選択します。
-v
-詳細
デバッグ メッセージを有効にしたり、詳細な出力を生成したりします。
バグを報告するときは、このオプションを使用して、完全な出力をバグに添付してください
レポート。
-V
- バージョン
バージョン番号を表示して終了します。
-x libguestfsAPI呼び出しのトレースを有効にします。
カスタマイズ オプション
--chmod 権限:ファイル
「FILE」の権限を「PERMISSIONS」に変更します。
注意:「PERMISSIONS」は、接頭辞0を付けて取得しない限り、デフォルトではXNUMX進数になります。
0700進数、つまり。 700ではなくXNUMXを使用してください。
--ファイルからのコマンド ファイル名
各行にXNUMXつずつ(およびその引数)、ファイルからカスタマイズコマンドを読み取ります。
各行には、単一のカスタマイズコマンドとその引数が含まれています。次に例を示します。
/ some / fileを削除します
一部のパッケージをインストールする
パスワードsome-user:password:its-new-password
空の行は無視され、「#」で始まる行はコメントであり、次のように無視されます。
良い。 さらに、「\」を追加することにより、引数を複数の行に分散させることができます
(継続文字)たとえば、行の
/ some / fileを編集します:\
s / ^ OPT =。* / OPT = ok /
コマンドは、ファイル内と同じ順序で、あたかもそうであるかのように処理されます。
として指定 - 消去 / some / file コマンドラインで。
- コピー 出典:DEST
ゲスト内でファイルまたはディレクトリを再帰的にコピーします。
ワイルドカードは使用できません。
-コピーイン LOCALPATH:REMOTEDIR
ローカルファイルまたはディレクトリをディスクイメージに再帰的にコピーし、それらをディスクイメージに配置します。
ディレクトリ「REMOTEDIR」(存在する必要があります)。
ワイルドカードは使用できません。
- 消去 パス
ゲストからファイルを削除します。 または、ディレクトリ(およびそのすべてのコンテンツ、
再帰的に)。
も参照してください。 - アップロード, - スクラブ.
--編集 FILE:EXPR
Perl式「EXPR」を使用して「FILE」を編集します。
式が変更されないように、式を適切に引用するように注意してください。
シェル。
このオプションは、Perl5がインストールされている場合にのみ使用可能であることに注意してください。
の「非対話型編集」を参照してください。 virt-編集とします。
--firstboot SCRIPT
ゲスト内に「SCRIPT」をインストールして、ゲストが最初に起動したときにスクリプトが実行されるようにします。
実行されます(rootとして、ブートプロセスの後半)。
ゲストにインストールすると、スクリプトは自動的にchmod + xになります。
代替バージョン --firstboot-コマンド 同じですが、便利にラップします
XNUMX行のスクリプトでコマンドを実行できます。
あなたは複数を持つことができます --firstboot オプション。 彼らは彼らと同じ順序で実行されます
コマンドラインに表示されます。
詳細および注意事項については、「FIRST BOOT SCRIPTS」を参照してください。
最初の起動スクリプト。
参照 - 走る.
--firstboot-コマンド 「CMD + ARGS」
ゲストが最初に起動したときに(rootとして、ゲスト内で)コマンド(および引数)を実行します。
起動プロセスの後半)。
あなたは複数を持つことができます --firstboot オプション。 彼らは彼らと同じ順序で実行されます
コマンドラインに表示されます。
詳細および注意事項については、「FIRST BOOT SCRIPTS」を参照してください。
最初の起動スクリプト。
参照 - 走る.
--firstboot-install PKG、PKG ..
名前付きパッケージ(コンマ区切りのリスト)をインストールします。 これらは、
ゲストは、ゲストのパッケージマネージャー(apt、yumなど)と
ゲストのネットワーク接続。
パッケージをインストールするさまざまな方法の概要については、「パッケージのインストール」を参照してください。
-ホスト名 ホスト名
ゲストのホスト名を「HOSTNAME」に設定します。 点線のhostname.domainnameを使用できます
(FQDN)必要に応じて。
- インストール PKG、PKG ..
名前付きパッケージ(コンマ区切りのリスト)をインストールします。 これらは、
ゲストのパッケージマネージャー(apt、yumなど)とホストのパッケージマネージャーを使用したイメージビルド
ネットワーク接続。
パッケージをインストールするさまざまな方法の概要については、「パッケージのインストール」を参照してください。
参照 - 更新.
- リンク TARGET:LINK [:LINK ..]
「LINK」から始まり「TARGET」を指すシンボリックリンクをゲストに作成します。
--mkdir DIR
ゲストにディレクトリを作成します。
これは「mkdir-p」を使用するため、中間ディレクトリが作成されます。
ディレクトリはすでに存在します。
- 動く 出典:DEST
ゲスト内でファイルまたはディレクトリを移動します。
ワイルドカードは使用できません。
--ログファイルなし
ビルド後にイメージから「builder.log」(ビルドコマンドのログファイル)をスクラブします。
完了。 イメージがどのように作成されたかを正確に明らかにしたくない場合は、これを使用してください
オプションを選択します。
「ログファイル」も参照してください。
- パスワード USER:SELECTOR
「USER」のパスワードを設定します。 (このオプションは ユーザーアカウントを作成します)。
「SELECTOR」フィールドの形式と設定方法については、「ユーザーとパスワード」を参照してください。
ユーザー アカウントを作成します。
--パスワード暗号化 md5 | sha256 | sha512
virtツールがゲストのパスワードを変更または設定する場合、このオプションは
そのパスワードの「md5」、「sha256」、または「sha512」へのパスワード暗号化。
「sha256」および「sha512」には、glibc≥2.7が必要です(チェック 陰窩(3)ゲスト内)。
「md5」は比較的古いLinuxゲスト(RHEL 3など)で動作しますが、安全ではありません
現代の攻撃に対して。
libguestfsが持っていなかった古いゲストを検出しない限り、デフォルトは「sha512」です。
SHA-512のサポート。この場合、「md5」を使用します。 libguestfsをオーバーライドできます
このオプションを指定します。
これにより、ゲストが使用するデフォルトのパスワード暗号化は変更されないことに注意してください。
ゲスト内に新しいユーザーアカウントを作成します。 あなたがそれをしたいのなら、あなたはすべきです
使用 --編集 「/ etc / sysconfig / authconfig」(Fedora、RHEL)を変更するオプションまたは
"/etc/pam.d/共通パスワード"(Debian、Ubuntu)。
--root-パスワード セレクタ
rootパスワードを設定します。
「SELECTOR」フィールドの形式と設定方法については、「ユーザーとパスワード」を参照してください。
ユーザー アカウントを作成します。
注:virt-builderでは、 しない セッションに --root-パスワード その後、ゲストは与えられます
ランダム rootパスワード。
- 走る SCRIPT
ディスクイメージ上で「SCRIPT」と呼ばれるシェルスクリプト(または任意のプログラム)を実行します。 スクリプト
小さなアプライアンス内で仮想化され、ゲストファイルシステムにchrootされて実行されます。
スクリプトは自動的にchmod + xになります。
libguestfsがそれをサポートしている場合、限られたネットワーク接続が利用可能ですが、それは
発信ネットワーク接続を許可します。 データディスク(ISOファイルなど)を接続することもできます
データ(ソフトウェアパッケージなど)をスクリプトに提供する別の方法として、
ネットワーク接続 (-添付)。 データファイルをアップロードすることもできます(- アップロード).
あなたは複数を持つことができます - 走る オプション。 それらは、表示されるのと同じ順序で実行されます
コマンドライン。
も参照してください。 --firstboot, -添付, - アップロード.
--実行コマンド 「CMD + ARGS」
ディスクイメージでコマンドと引数を実行します。 コマンドは内部で仮想化されて実行されます
ゲストファイルシステムにchrootされた小さなアプライアンス。
libguestfsがそれをサポートしている場合、限られたネットワーク接続が利用可能ですが、それは
発信ネットワーク接続を許可します。 データディスク(ISOファイルなど)を接続することもできます
データ(ソフトウェアパッケージなど)をスクリプトに提供する別の方法として、
ネットワーク接続 (-添付)。 データファイルをアップロードすることもできます(- アップロード).
あなたは複数を持つことができます --実行コマンド オプション。 彼らは彼らと同じ順序で実行されます
コマンドラインに表示されます。
も参照してください。 --firstboot, -添付, - アップロード.
- スクラブ FILE
ゲストからファイルをスクラブします。 これは - 消去 それ以外で:
・ゲストがデータを回復できないようにデータをスクラブします。
・ディレクトリは削除できず、通常のファイルのみが削除されます。
--selinux-relabel
ゲストのファイルにラベルを付け直して、正しいSELinuxラベルを付けます。
このオプションは、SELinuxをサポートするゲストにのみ使用してください。
--sm-アタッチ セレクタ
「subscription-manager」を使用してプールに接続します。
「SELECTOR」フィールドの形式については、「SUBSCRIPTION-MANAGER」を参照してください。
--sm-クレデンシャル セレクタ
「subscription-manager」の資格情報を設定します。
「SELECTOR」フィールドの形式については、「SUBSCRIPTION-MANAGER」を参照してください。
--sm-登録
「subscription-manager」を使用してゲストを登録します。
これには、を使用してクレデンシャルを設定する必要があります --sm-クレデンシャル.
--sm-削除
「subscription-manager」を使用して、ゲストからすべてのサブスクリプションを削除します。
--sm-登録解除
「subscription-manager」を使用してゲストの登録を解除します。
--ssh-注入 USER [:SELECTOR]
sshキーを挿入して、指定された「ユーザー」がsshを使用せずにログインできるようにします。
パスワードを提供します。 「USER」はゲストにすでに存在している必要があります。
「SELECTOR」フィールドの形式については、「SSH KEYS」を参照してください。
あなたは複数を持つことができます --ssh-注入 オプション、さまざまなユーザー用、さらに多くのキー用
ユーザーごとに。
-タイムゾーン タイムゾーン
ゲストのデフォルトのタイムゾーンを「TIMEZONE」に設定します。 次のような場所の文字列を使用します
「ヨーロッパ/ロンドン」
- 接する FILE
このコマンドは、 touch(1)-「FILE」に対する同様の操作。
-切り捨て FILE
このコマンドは、長さがゼロのファイルへの「パス」を切り捨てます。 ファイルはすでに存在している必要があります。
--truncate-recursive パス
このコマンドは、「パス」の下にあるすべてのファイルを再帰的に切り捨てて長さをゼロにします。
- 更新
「yumupdate」、「apt-get upgrade」、または必要なコマンドと同等の処理を実行します
テンプレートにすでにインストールされているパッケージを最新バージョンに更新します。
参照 - インストール.
- アップロード FILE:DEST
ローカルファイル「FILE」をディスクイメージの宛先「DEST」にアップロードします。 ファイルの所有者と
元の権限は保持されるため、必要なものに設定する必要があります
それらはディスクイメージに含まれます。
「DEST」が最終ファイル名になる可能性があります。 これは、アップロード時にファイルの名前を変更するために使用できます。
「DEST」がディレクトリ名(ゲストにすでに存在している必要があります)の場合、ファイルは次のようになります。
そのディレクトリにアップロードされ、ローカルファイルシステムと同じ名前を保持します。
も参照してください。 --mkdir, - 消去, - スクラブ.
- 書きます ファイル:コンテンツ
「コンテンツ」を「ファイル」に書き込みます。
REFERENCE
インストール PACKAGES
ゲストにパッケージまたはアプリケーションをインストールするには、いくつかの方法があります。
異なるトレードオフがあります。
装着 パッケージ at ビルド 時間
インストールするゲスト OS がホスト OS と類似している場合 (例: どちらも Linux)、および
libguestfs はネットワーク接続をサポートしているため、次を使用できます - インストール パッケージをインストールするには
このような:
virt-builder fedora-20 --inkscape のインストール
これは、ゲストのパッケージ マネージャーとホストのネットワーク接続を使用します。
更新 パッケージ at ビルド 時間
ビルド時にテンプレート内のパッケージのコア セットを更新するには:
virt-builder fedora-20 --update
virt-builder に同梱されているほとんどのテンプレートには、非常に最小限の選択が含まれています。
パッケージ (「JEOS」または「Just Enough Operating System」として知られている) で、最新の状態になっています。
テンプレートが作成された時点ですが、インストールするまでには古くなっている可能性があります
テンプレートからの OS。 このオプションは、これらのテンプレート パッケージを更新します。
装着 パッケージ at 最初の ブート
もう XNUMX つのオプションは、ゲストの初回起動時にパッケージをインストールすることです。
virt-builder fedora-20 --firstboot-installinkscape
これは、ゲストのパッケージ マネージャーとゲストのネットワーク接続を使用します。
欠点は、ゲストの初回起動に時間がかかることです。
パッケージのインストールが失敗した場合 (たとえば、ネットワークの問題が原因で
ゲストはパッケージ リポジトリにアクセスできません)。
装着 パッケージ at ビルド 時間 from a 側 倉庫
インストールするソフトウェアが、
ゲストの場合、サイド リポジトリを追加できます。 通常、これは ISO (CD ディスク
image) 追加パッケージを含むファイル。
次のいずれかを使用してディスク イメージを作成できます。 ジェニソイメージ(1)または virt-make-fs(1)。 にとって
genisoimage、次のようなコマンドを使用します。
genisoimage -o extra-packages.iso -R -J -V EXTRA cdcontents/
ISO をマウントしてリポジトリを設定するスクリプトを作成します。 yum の場合は、作成します
/tmp/install.sh 以下を含む:
mkdir / tmp / mount
LABEL = EXTRA / tmp / mountをマウントします
cat <<'EOF' > /etc/yum.repos.d/extra.repo
[余分な]
名前=追加
Baseurl=file:///tmp/mount
有効= 1
EOF
yum -y インストール有名なデータベース
apt の場合、以下を含む /tmp/install.sh を作成します。
mkdir / tmp / mount
LABEL = EXTRA / tmp / mountをマウントします
apt-cdrom -d=/tmp/mount を追加
apt-get -y インストール有名なデータベース
-添付 CD/ディスクイメージを添付するオプションと - 走る を実行するオプション
スクリプト:
virt-builder fedora-20 \
--attach extra-packages.iso \
-- /tmp/install.sh を実行
USERS そして PASSWORDS
この --root-パスワード オプションはルートパスワードを変更するために使用されます (それ以外の場合はランダム
パスワードが使用されます)。 このオプションは、次のいずれかでパスワード「SELECTOR」を取ります
フォーマット:
--root-パスワード ファイル:ファイル名
「FILENAME」から root パスワードを読み取ります。 このファイルの最初の行全体は、
交換用パスワード。 他の行は無視されます。 でファイルを作成する必要があります
モード 0600 を使用して、他の人が読み取れないようにします。
--root-パスワード パスワード:PASSWORD
root パスワードをリテラル文字列「PASSWORD」に設定します。
ご注意: この is 安全に 同じマシン上のすべてのユーザーがクリアテキストを見ることができるため
使用するパスワード psとします。
--root-パスワード ランダム
stdout に出力されるランダムなパスワードを選択します。 パスワードはおよそ
120 ビットのランダム性。
これがデフォルトです。
--root-パスワード 無効
root アカウントのパスワードは無効になっています。 これは、パスワードに「*」を入れるようなものです
フィールド。
--root-パスワード ロック:ファイル:FILENAME
--root-パスワード ロック:パスワード:PASSWORD
--root-パスワード ロック:ランダム
root アカウントはロックされていますが、アカウントにはパスワードが設定されています。 最初なら
(「passwd -u」を使用して) ロックを解除すると、ログインは指定されたパスワードを使用します。
--root-パスワード ロック
--root-パスワード ロック:無効
root アカウントがロックされている と パスワードは無効です。
作成 user アカウントの視聴者データを取得する
ユーザー アカウントを作成するには、 useradd(8) 次のような --firstboot-command を使用したコマンド:
virt-builder --firstboot-command \
'useradd -m -p "" rjones ; chage -d 0 rjones'
上記のコマンドは、パスワードなしで「rjones」アカウントを作成し、ユーザーに
最初のログイン時にパスワードを設定します。パスワードを管理する方法は他にもあります。
useradd詳細は(8)。
キーボード レイアウト
Linux でキーボード レイアウトを設定するには、非常に多くの方法があるためです。
ディストリビューションでは、virt-builder はまだ単純なコマンド ライン オプションを持つことを試みていません。
このセクションでは、いくつかの一般的な Linux ディストリビューションのキーボードを設定する方法について説明します。
キーボード レイアウト systemd
systemd "localectl" を使用するディストリビューションの場合、次のようなコマンドを使用します。
virt-builder fedora-20 \
--firstboot-command 'localectl set-keymap uk'
見る ローカルectl(1)と
https://www.happyassassin.net/2013/11/23/keyboard-layouts-in-fedora-20-and-previously/ for
詳細はこちら
キーボード レイアウト /etc/sysconfig/キーボード
RHEL ≤ 6、Fedora ≤ 18 などの場合は、キーボード構成ファイルをアップロードまたは変更します。
- アップロード, - 書きます or --編集 オプション。 例えば:
virt-builder centos-6 \
--edit '/etc/sysconfig/keyboard: s/^KEYTABLE=.*/KEYTABLE="uk"/'
このファイルの形式は、オンラインの多くの場所で文書化されています。
キーボード レイアウト Debian 由来 ディストロ
を使用する Debian 派生ディストリビューションの場合 /etc/デフォルト/キーボード、キーボードファイルをアップロードまたは変更します
- アップロード, - 書きます or --編集 オプション。 例えば:
virt-builder debian-7 \
- 編集 '/etc/デフォルト/キーボード: s/^XKBLAYOUT=.*/XKBLAYOUT="gb"/'
https://wiki.debian.org/Keyboard を参照してください。
言語
ほとんどの Linux ディストリビューションは複数のロケール設定をサポートしているため、ゲストを持つことができます
ロシア語などの別の言語で印刷されたメッセージ。
ただし、追加のパッケージが必要になる場合があるため、これを制御する単一の設定はありません。
コンソールと X フォント、およびキーボード入力方法をサポートするためにインストールする必要があります。 パッケージ
必要であり、それらの構成はディストリビューション固有であり、範囲外です
これを行うには virt-builder を使用します。
このセクションには、いくつかの一般的な Linux ディストリビューションの例が含まれています。
設定 Japanese in フェドーラ 20
virt-builder fedora-20 \
--サイズ 20G \
- アップデート \
--install @japanese-support \
--install @xfce \
--xorg-x11-server-Xorg、xorg-x11-drivers、rsyslog をインストールします \
--link /usr/lib/systemd/system/graphical.target:/etc/systemd/system/default.target \
--firstboot-command 'localectl set-locale LANG=ja_JP.utf8' \
--firstboot-command 'localectl set-keymap jp' \
--firstboot-command 'systemctl isolate Graphical.target'
設定 Japanese in Debianの 7 (喘鳴)
これにより、テキスト コンソールでも日本語が有効になりますが、
そこに適切にレンダリングされた日本語が表示されます。 ただし、日本語は X で適切にレンダリングされます
アプリケーションと端末。
pkgs=ロケール、xfce4、\
アイバス、アイバスアンシー、\
ttf-さざなみゴシック、ttf-さざなみ明朝、\
フォント-高尾明朝,\
xfonts-intl-japanese、xfonts-intl-japanese-big、\
Iceweasel-l10n-ja、manpages-ja
virt-builder debian-7 \
--サイズ 20G \
--$pkgs をインストールします \
--edit '/etc/inittab: s,^#([1-9].*respawn.*/sbin/getty.*),$1,' \
- 編集 '/etc/locale.gen: s,^#\s*ja,ja,' \
- 書きます '/ etc / default / locale:LANG="ja_JP.UTF-8"' \
--run-command "locale-gen"
LOG FILE
ビルド時に実行されるスクリプトとパッケージのインストール (- 走る, --実行コマンド, - インストール,
- 更新、 だけど firstboot) は、次のいずれかの場所に記録されます。
/tmp/builder.log
Linux、BSD、およびその他のゲスト。
C:\Temp\builder.log
Windows では、DOS ゲスト。
/ビルダー.ログ
If / tmpに or C:\一時 欠落しています。
最終イメージにログ ファイルを表示したくない場合は、 --ログファイルなし
コマンドラインオプション。
SSH キー
この --ssh-注入 オプションは、ゲストのユーザーに ssh キーを挿入するために使用されるため、
パスワードを入力せずにログインします。
オプション値の「SELECTOR」部分はオプションです。 この場合、 --ssh-注入 "ユーザー"
私たちが見ていることを意味します 現在 ユーザーの ~ / .ssh デフォルトのパブリック ID を検索するディレクトリ
ファイル。 そのキーがアップロードされます。 「デフォルト公開ID」は デフォルトIDファイル に記述されているファイル
ssh-copy-idとします。
指定する場合、「SELECTOR」は次のいずれかの形式にすることができます。
--ssh-注入 ユーザー:ファイル:ファイル名
から ssh キーを読み取ります。 ファイル名. ファイル名 通常は 。パブ ファイルにソフトウェアを指定する必要があります。
--ssh-注入 ユーザー:文字列:KEY_STRING
指定された「KEY_STRING」を使用します。 「KEY_STRING」は通常、次のようなパブリック文字列です ssh-rsa
ああああ…… ユーザー@ローカルホスト.
いずれにせよ、 ~ユーザー/.ssh ディレクトリと ~USER/.ssh/authorized_keys ファイルは
まだ存在しない場合は作成されます。
最初 BOOT スクリプト
この --firstboot と --firstboot-コマンド オプションを使用すると、最初にコマンドを実行できます
ゲストのブート。 そのために、ゲスト init システムの init スクリプトがインストールされます。
追加されたすべてのスクリプトとコマンドを実行します。
サポートされているオペレーティング システムは次のとおりです。
Linux
サポートされている init システムは、systemd、System-V init (sysvinit とも呼ばれます)、および
Upstart (System-V スクリプトを使用)。
通常、init スクリプトは root として実行されますが、より限定的な環境で実行されることに注意してください。
通常のシェルから利用できるもの: たとえば、$HOME が設定されていないか空である可能性があります。
最初の起動スクリプトの出力は、ゲストで次のように利用できます。
~root/virt-sysprep-firstboot.log.
Windows
rhsrvany.exeは、https://github.com/rwmjones/rhsrvany のソースから入手できます。
最初の起動スクリプトを実行するためにインストールされます。 必須で、初回起動時の設定
存在しない場合、スクリプトは失敗します。
rhsrvany.exe 「VIRT_TOOLS_DATA_DIR」が指す場所からコピーされます
環境変数; 設定されていない場合は、コンパイル済みのデフォルトが使用されます (次のようなもの
/ usr / share / virt-tools).
最初の起動スクリプトの出力は、ゲストで次のように利用できます。 C:\ Program ファイル\赤
Hat\Firstboot\log.txt.
サブスクリプションマネージャー
を使用して、システムの登録とアタッチを自動化することができます。
「サブスクリプションマネージャー」。 これは、Red Hat Enterprise Linux ゲストでは一般的です。 がある
このプロセスを容易にするいくつかのオプションは、コマンドを手動で実行して公開することを回避します
コマンドラインのパスワード。
--sm-登録 登録プロセスを開始し、 --sm-クレデンシャル ようにするには
指定; の「SELECTOR」の形式 --sm-クレデンシャル 次のいずれかです
フォーマット:
--sm-クレデンシャル ユーザー:ファイル:ファイル名
指定した「USER」のパスワードを ファイル名.
--sm-クレデンシャル ユーザー:パスワード:パスワード
指定された「USER」にはリテラル文字列「PASSWORD」を使用します。
--sm-アタッチ システムをサブスクリプションに接続します。 その「SELECTOR」の形式は次のいずれかです
以下
--sm-アタッチ オート
「subscription-manager」は、システムに最適なサブスクリプションにアタッチします。
--sm-アタッチ ファイル:ファイル名
からプール ID を読み取る ファイル名.
--sm-アタッチ プール:プール
リテラル文字列「POOL」をプール ID として使用します。
--sm-削除 ゲストからすべてのサブスクリプションを削除しますが、 --sm-登録解除 完全に
システムを登録解除します。
インストール プロセス
virt-builder を呼び出すと、インストールは次のように進行します。
・テンプレート画像がダウンロードされます。
テンプレート イメージがキャッシュに存在する場合は、キャッシュされたバージョンが代わりに使用されます。
(「キャッシング」を参照)。
· テンプレートの署名がチェックされます。
· テンプレートは tmp ファイルに解凍されます。
·テンプレート画像は、を使用して宛先にサイズ変更されます virt-サイズ変更とします。
・エクストラディスク付属(-添付).
· ゲスト用に新しいランダム シードが生成されます。
· ゲストのカスタマイズは、コマンド ラインで指定された順序で実行されます。
· SELinux の再ラベル付けが行われます (--selinux-relabel).
インポート 、 ディスク IMAGE
インポート に libvirt
を使用して、ディスク イメージを libvirt にインポートします。 仮想インストール(1) - 輸入 オプションを選択します。
virt-install --import \
--name ゲスト --ram 2048 \
--disk path=disk.img、format=raw --os-variant fedora20
注意:
1。 あなた しなければなりません 正しい形式を指定してください。 virt- を使用しない限り、フォーマットは「raw」です。
ビルダーの - フォーマット オプションを選択します。
2. --os バリアント を有効にする最適なデバイスが提示されるため、強くお勧めします。
ゲストを最も効率的に実行します。 すべてのバリアントのリストを取得するには、次のようにします。
osinfo-クエリos
上記のツールは libosinfo パッケージで提供されています。
3. root または非 root として virt-install を実行できます。 それぞれの動作はわずかに異なります。
libvirt は、ユーザーごとに異なる仮想マシンのセットを管理します。 特に
virt-manager は通常 root 所有の VM を表示しますが、Boxes はユーザー所有の VM を表示します
VM やその他のツールもおそらく動作が異なります。
インポート に OpenStackは
次のようにして、イメージを Glance (OpenStack イメージ ストア) にインポートします。
イメージ作成 --name fedora-20-image --file fedora-20.img \
--disk-format raw --container-format bare \
--is-public True
この - ファイル パラメータは、virt-builder によって生成されたディスク イメージです。 virt- と一致する必要があります。
ビルダーの - 出力 オプション。 ザ· --ディスクフォーマット パラメータは virt-builder のものと一致する必要があります
- フォーマット オプション(または、そのオプションを使用しなかった場合は「生」)。 の --コンテナ形式 すべき
virt-builder はイメージをコンテナーに配置しないため、常に「裸」である必要があります。
「glance image-show」を使用できます fedora-20-image」 プロパティを表示するコマンド
画像。
Nova コンピュート ノードでイメージのインスタンスを起動するには、次のようにします。
nova ブート fedora-20-server --image fedora-20-image \
--フレーバー m1.medium
可能性のあるマシンのフレーバーを一覧表示するには、「nova フレーバー リスト」を使用します。 実行中のリストを表示するには「nova list」を使用します
インスタンス。
ブート 直接に qemu or KVM
qemu コマンドラインはあまり安定しておらず、使いにくいため、必要な場合は libvirt を使用する必要があります。
可能。 ただし、次のようなコマンド ラインを使用して、
仮想マシン:
qemu システム x86_64 \
-マシンアクセル=kvm:tcg \
-cpu ホスト \
-m 2048 \
-ドライブファイル=disk.img、フォーマット=raw、if=virtio
libvirt と同様に、正しい形式を選択することが非常に重要です。 「生」になります
を除いて - フォーマット オプションが使用されました。
CONFIGURATION 公演の
人形
ゲストで Puppet エージェントを有効にするには、パッケージをインストールし、構成を
Puppetmaster を設定し、起動時にエージェントが実行されることを確認します。
典型的な virt-builder コマンドは次のようになります。
virt-builder fedora-20 \
--hostname client.example.com \
- アップデート \
--puppet をインストールします \
-- '/etc/puppet/puppet.conf を編集:
s/^\[エージェント\]/[エージェント]\n サーバー = puppetmaster.example.com/' \
--run-command 'systemctl enable puppet' \
--selinux-relabel
正確な手順は、Linux ディストリビューションによって異なります。 詳細については、次を参照してください。
http://docs.puppetlabs.com/guides/installation.htm
デバッグ ビルド
virt-builder 自体が失敗した場合は、デバッグを有効にします (-v)およびバグを報告する(「バグ」を参照)
下)。
インストール中のスクリプトまたはパッケージが失敗したために virt-builder が失敗した場合は、使用してみてください
--失敗時に削除なし 出力ファイルを保存し、このセクションを読み続けます。
virt-builder が成功してもイメージが機能しない場合は、次のことを試してください。
virt-rescue を使用する
ラン 仮想レスキュー(1) ディスクイメージ:
virt-rescue -a ディスク.img
これにより、レスキュー シェルが得られます。 ディスクイメージからファイルシステムをマウントできます
/sysroot 通常の Linux コマンドを使用してそれらを調べます。 chroot することもできます
ブートローダーを再インストールします。 virt-rescue の man ページには、さらに多くの情報があります。
情報と例。
ゲストフィッシュを使う
ラン ゲストフィッシュ(1) ディスクイメージ:
guestfish -a disc.img -i
「ll /directory」や「cat /file」などのguestfishコマンドを使用してディレクトリを調べ、
ファイル。
ゲストマウントを使用
FUSE を使用してホストにディスク イメージを安全にマウントし、 ゲストマウント(1):
mkdir /tmp/mp
guestmount -a disc.img -i /tmp/mp
cd /tmp/mp
ディスク イメージをアンマウントするには、次のようにします。
フューザーマウント -u /tmp/mp
シリアル コンソールを追加する
ブート中にゲストがハングする場合は、シリアル コンソールを
カーネル メッセージをシリアル コンソールに送信します。 シリアルコンソールの追加
ハイパーバイザーのドキュメントを確認する必要があります。 カーネルを指示する
メッセージをシリアル コンソールに表示するには、カーネル コマンド ラインに次の行を追加します。
コンソール=tty0 コンソール=ttyS0,115200
SOURCES OF TEMPLATES
virt-builder は、構成ファイルから利用可能なソースを読み取ります。 .conf
拡張子で、次のパスにあります。
· $XDG_CONFIG_HOME/virt-builder/repos.d/ ($XDG_CONFIG_HOME は $HOME/.config 設定されていない場合)。
· $XDG_CONFIG_DIRS/virt-builder/repos.d/ ($XDG_CONFIG_DIRS は、
その環境変数のディレクトリ、または単に /etc/xdg 設定しない場合)
各 .conf これらのパスのファイルは、次のような単純なテキスト形式です。
[libguestfs.org]
ウリ=http://libguestfs.org/download/builder/index.asc
gpgkey=file:///etc/xdg/virt-builder/repos.d/libguestfs.gpg
角括弧内の部分はリポジトリ識別子で、一意として使用されます
識別子。
次のフィールドが表示されます。
「uri=URI」
このリポジトリが参照するインデックス ファイルの URI。
この項目は必須です。
"gpgkey=URI"
このオプションのフィールドは URI を表します (ただし、 ファイル:// URI が受け入れられます) の
インデックス ファイルの署名に使用されるキー。 存在しない場合は、によって参照されるインデックス ファイル
うり=.. 署名されていません。
「プロキシ=モード」
このオプション フィールドは、インデックスのダウンロード時に使用されるプロキシ モードを指定します。
このリポジトリのファイル。 可能な値は次のとおりです。
いいえ, OFF
システム構成を上書きしても、プロキシはまったく使用されていません。
使用されるプロキシはシステムのものです。
何でも ほかに
システムをオーバーライドして、使用する実際のプロキシ構成を指定します
構成。
存在しない場合、想定される値は、システムのプロキシ設定を尊重することです (つまり、
あたかも 指定されます)。
「フォーマット=フォーマット」
このオプションのフィールドは、リポジトリの形式を指定します。 可能な値は次のとおりです。
ネイティブ
「virt-builder」リポジトリのネイティブ形式。 「作成と
インデックス ファイルに署名する」を参照してください。
シンプルストリーム
URI は、メタデータの Simple Streams v1.0 ツリーのルートを表します。
シンプル ストリームの詳細については、こちらも参照してください。
https://launchpad.net/simplestreams.
存在しない場合、想定される値は「native」です。
virt-builder を本格的に使用する場合は、テンプレートの独自のリポジトリを作成することをお勧めします。
libguestfs.org 倉庫
箱から出して、virt-builder はファイルをダウンロードします
http://libguestfs.org/download/builder/index.asc これは利用可能なテンプレートのインデックスです
さらに、それぞれについての情報がデジタル署名にまとめられています。 コマンド
「virt-builder --list」は、このインデックス ファイル内の情報を一覧表示します。
libguestfs.org でホストされているテンプレートは、シェル スクリプト、キックスタート ファイルを使用して作成されました。
libguestfs ソース ツリーの "builder/website" にある preseed ファイル。
設定 up 倉庫
インデックス ファイルといくつかのテンプレートを含む独自のサイトをセットアップしてから、
virt-builder をサイトに作成して .conf それを指しているファイル。
インデックスが署名されている場合は、適切に入力する必要があることに注意してください gpgkey=.. 自分で .conf
ファイル、GPGキーファイルも必ずデプロイしてください。
virt-builder --source https://example.com/builder/index.asc \
--fingerprint 'AAAA BBBB ...' \
- リスト
これは、任意の Web または FTP サーバー、またはローカルまたはネットワーク ファイルシステムでホストできます。
設定 up a GPG キー
GnuPG キーがない場合は、設定する必要があります。 (厳密に言えばこれは
オプションですが、インデックスとテンプレート ファイルが署名されていない場合、virt-builder ユーザーは
を使用する必要があります --チェック署名なし virt-builder を使用するたびにフラグを立てます。)
キーを作成するには、GPG マニュアルを参照してください。 http://www.gnupg.org/gph/en/manual.html.
GPG 公開鍵をエクスポートします。
gpg --export -a "[メール保護]" > 公開鍵
創造する テンプレート
テンプレートを作成するには多くの方法があります。 たとえば、既存のゲストのクローンを作成できます
(参照してください virt-sysprep(1))、または手動でゲストをインストールできます (仮想インストール(1))。 方法を見るには
テンプレートは virt-builder 用に作成されています。「builder/website」のスクリプトを見てください。
テンプレートを圧縮するときに最良の結果を得るには、次の xz オプションを使用します (
nbdkit-xz-プラグイン(1) 詳細説明):
xz --best --block-size=16777216 ディスク
作成 と 署名 index file
インデックス ファイルは単純なテキスト形式です (ここではデジタル署名なしで表示されています)。
[フェドラ-18]
名前=Fedora® 18
osinfo=fedora18
アーチ=x86_64
ファイル=fedora-18.xz
チェックサム[sha512]=...
フォーマット=生
サイズ= 6442450944
圧縮サイズ=148947524
Expand=/dev/sda3
[フェドラ-19]
名前=Fedora® 19
osinfo=fedora19
アーチ=x86_64
ファイル=fedora-19.xz
チェックサム[sha512]=...
リビジョン=3
フォーマット=生
サイズ= 4294967296
圧縮サイズ=172190964
Expand=/dev/sda3
角括弧内の部分は「os-version」であり、
その OS をビルドするための virt-builder コマンドライン。
「インデックス」ファイルを正しい形式で準備した後、次を使用してクリアサインします。
コマンド:
gpg --clearsign --armor インデックス
これにより、という最終ファイルが作成されます インデックス.asc これはサーバーにアップロードできます(および
は うり=.. URL)。 前述のとおり、インデックス ファイルへの署名はオプションですが、推奨されます。
次のフィールドが表示されます。
「名前=名前」
このテンプレートのわかりやすい名前。 これは、 - リスト 出力しますが
それ以外の場合は重要ではありません。
「osinfo=ID」
このオプションのフィールドは、オペレーティング システムを関連する libosinfo ID にマップします。 美徳-
ビルダーはそれを(まだ)使用していません。
「アーチ=アーチ」
テンプレート内にインストールされているオペレーティング システムのアーキテクチャ。 このフィールドは
必要。
「ファイル=パス」
xz 圧縮されたテンプレートのパス (インデックスからの相対パス)。
絶対パスまたは URI は ここで許可されます。 これは、virt-builder
テンプレートには「同一オリジン」ポリシーがあるため、他のサーバーから取得することはできません。
"sig=パス"
この オプション is 非推奨の. 代わりにチェックサム フィールドを使用してください。
xz ファイルの GPG 分離署名のパス (インデックスからの相対パス)。
絶対パスまたは URI は ここで許可されます。 これは、virt-builder
テンプレートには「同一オリジン」ポリシーがあるため、他のサーバーから取得することはできません。
ファイルは次のように作成できます。
gpg --detach-sign --armor -o disc.xz.sig disc.xz
"checksum[sha512]=7b882fe9b82eb0fef..."
の SHA-512 チェックサム 圧縮された ファイルはダウンロード後にチェックされます。 に
署名を作成するには、次のようにします。
sha512sum ディスク.xz
これを使用する場合、ファイルに署名する必要がないことに注意してください。 「シグ」は使わない。 この
オプションは「sig」をオーバーライドします。
"checksum=7b882fe9b82eb0fef..."
「checksum」は「checksum[sha512]」の別名です。
virt-builder = 1.24.0 と相互運用する必要がある場合は、「チェックサム」を使用する必要があります
そのバージョンでは、角括弧と数字で解析エラーが発生するためです。
フィールドのキー。 これは virt-builder ≥ 1.24.1 で修正されています。
「リビジョン=N」
リビジョンは、テンプレート キャッシュを制御するために使用される整数です。 増加
リビジョン番号により、クライアントはテンプレートを再度ダウンロードします。
キャッシュにコピーします。
リビジョン番号はオプションです。 省略した場合、デフォルトは 1 です。
「フォーマット=生」
「フォーマット=qcow2」
(圧縮される前の) ディスク イメージの形式を指定します。 指定しない場合、
形式は自動検出されますが、一般的には意図したものについて明示する方が良いです
形式でダウンロードすることができます。
これはソース形式であり、 - フォーマット オプション (要求された
出力フォーマット)。 Virt-builder は、ソース形式から
要求された出力形式。
「サイズ=NNN」
イメージの仮想サイズ (バイト単位)。 撮影時の画像サイズです
非圧縮。 qcow2 などの非 raw フォーマットを使用している場合は、仮想ディスクを意味します
qcow2 ファイルのサイズではありません。
この項目は必須です。
Virt-builder は、これをユーザーがリクエストできる最小サイズとしても使用します。 - サイズ
オプション、またはない場合はデフォルトのサイズとして - サイズ オプションを選択します。
"compressed_size=NNN"
ディスク イメージの圧縮サイズ (バイト単位)。 これは情報提供のみに使用されます
(使用時 - リスト - 長さ).
「expand=/dev/sdaX」
画像を最終的なサイズに拡大するときは、次のように指示します。 virt-サイズ変更(1) 拡大する
ゲスト イメージの名前付きパーティションを作成して、使用可能なすべての領域を埋めます。 これは次のように機能します
virt-resize - 拡大 オプションを選択します。
通常、ゲストのルート ファイルシステムのデバイス名をここに入力します。
これを使用することをお勧めしますが、必須ではありません。 フィールドが省略された場合、virt-
サイズを変更すると、空き領域をカバーするためにディスクの最後に追加のパーティションが作成されます。
これはユーザーフレンドリーではありません。
「lvexpand=/dev/VolGroup/LogVol」
画像を最終的なサイズに拡大するときは、次のように指示します。 virt-サイズ変更(1) 拡大する
ゲスト イメージ内の名前付き論理ボリュームを使用して、使用可能なすべてのスペースを埋めます。 これは機能します
virt-resize のように --lv-expand オプションを選択します。
ゲストが LVM2 を使用している場合、通常はゲストのルート ファイルシステムの LV を配置する必要があります。
ここ。 ゲストが LVM2 を使用していないか、そのルート ファイルシステムが LV 上にない場合は、
このオプションを使用します。
「メモ=メモ」
この画像に付随するメモ、特にどのパッケージが入っているかを説明するメモ
イメージ、イメージの準備方法、およびライセンス情報。
この情報は、 - ノート と - リスト - 長さ モード。
ここで複数行のメモを使用するには、新しい各行を少なくとも XNUMX つインデントします。
空白の文字 (空白行でも):
notes=この画像は
次のキックスタート スクリプト:
<-- 行頭に XNUMX つのスペース
部 /ブート --fstype ext3
...
「隠し=真」
hidden フラグを使用すると、テンプレートがリストに表示されなくなります。 - リスト オプション
(ただし、まだインストール可能です)。 これは、テスト イメージに使用されます。
「エイリアス=ALIAS1 ALIAS2 ...」
このオプションのフィールドは、スペースで区切られたイメージのエイリアスのリストを指定します。
たとえば、エイリアスを使用して、特定のアプリケーションの最新バージョンを常に指すことができます。
イメージを更新する代わりに、古いバージョンをインデックスで使用できるようにします
画像 (「リビジョン」フィールドを参照)。
Running: 仮想ビルダー に対して の試合に ソース
virt-builder で複数のソースを使用することが可能です。 おすすめの方法は、
展開します .conf インデックス ファイルを指すファイル。 別の方法は、ソースを指定することです
複数を使用して - ソース および - 指紋 オプション:
仮想ビルダー \
- ソース http://example.com/s1/index.asc \
- ソース http://example.com/s2/index.asc
N 個または 1 個のフィンガープリントを指定できます。 N 個の指紋を提供する場合、N =
ソースの数と、各ソースとそれぞれの間に 1 対 1 の対応があります。
指紋:
仮想ビルダー \
- ソース http://example.com/s1/index.asc --fingerprint '0123 ...' \
- ソース http://example.com/s2/index.asc --指紋「9876 ...」
1 つのフィンガープリントを提供する場合、同じフィンガープリントがすべてのソースに使用されます。
少なくとも 1 つの指紋を提供する必要があります。
ライセンシング of テンプレート
配布するイメージのライセンスに注意する必要があります。 オープンソース向け
ゲスト、「メモ」フィールドにソースコードへのリンクを提供し、他の
要件(例:商標関連)。
正式な 仕様 of index file
index ファイル形式には、flex スキャナーと bison によって定義された正式な仕様があります。
ファイルの解析に使用されるパーサー。 これは、libguestfs の次のファイルにあります。
ソースツリー:
builder/index-scan.l
builder/index-parse.y
と呼ばれるツール virt-index-validate(1) インデックス ファイルを検証して、
正しいです。
パーサーとツールは、署名付きまたは未署名のインデックス ファイル (つまり、.
index or インデックス.asc).
インデックスは常に UTF-8 でエンコードされます。
キャッシング
キャッシング テンプレート
テンプレートは通常非常に大きいため、ダウンロードされたテンプレートはユーザーの
ホームディレクトリ。
キャッシュの場所は $XDG_CACHE_HOME/virt-builder/ or $HOME/.cache/virt-builder.
どのゲストがキャッシュされているかなど、キャッシュ ディレクトリに関する情報を出力できます。
次のようにして、現在キャッシュされています。
virt-builder --print-cache
スペースを節約したい場合は、次のようにしてキャッシュを削除できます。
virt-builder --delete-cache
次のようにして、すべての (現在の) テンプレートをローカル キャッシュにダウンロードできます。
virt-builder --cache-all-templates
テンプレート キャッシュを無効にするには、次を使用します。 -キャッシュなし.
テンプレートのみがキャッシュされます。 インデックスと分離されたデジタル署名はキャッシュされません。
キャッシング パッケージ
Virt-builder の使用 curl(1)ファイルをダウンロードし、現在の「http_proxy」も使用します
(etc) パッケージインストール時の設定 (- インストール, - 更新).
したがって、量を最大化するために、これらの環境変数を設定することをお勧めします。
発生するローカル キャッシングの。 「環境変数」および curlとします。
ローカル ミラー
パッケージのインストールの速度と信頼性の両方を向上させるために、ローカルをセットアップできます。
ターゲットディストリビューションのミラーを作成し、ゲストパッケージマネージャーをそこに向けます。
インストールの各フェーズが発生する順序のため、 - 書きます
(パッケージマネージャーをレポに向けるため)その後に - インストール (そこからインストールする
レポ)。 の - 書きます と - インストール ステップは、その順序に関係なく、逆の順序で実行されます
コマンドラインで注文します。 これを使用して行う必要があります --実行コマンド - インストール.
Fedora でローカル ミラーを使用する
ローカル ミラーを使用して Fedora ゲストをインストールするには:
virt-builder fedora-20 \
--編集 '/etc/yum.repos.d/fedora.repo:
s{.*baseurl=.*}{baseurl=http://example.com/mirror/};
s{.*metalink=.*}{};
'\
-- 編集 '/etc/yum.repos.d/fedora-updates.repo:
s{.*baseurl=.*}{baseurl=http://example.com/mirror-updates/};
s{.*metalink=.*}{};
'\
--run-command 'yum -y update' \
--run-command 'yum -y install pkg1 pkg2 ...'
Debian でローカル ミラーを使用する
「apt-proxy」を使用してリポジトリをミラーリングしていると仮定すると、新しい
sources.listを プロキシを指すファイル (https://help.ubuntu.com/community/AptProxy を参照)
そして次のようにします:
virt-builder debian-7 \
--uploadsources.list:/etc/apt/sources.list \
--run-command 'apt-get -y update' \
--run-command 'apt-get -y install pkg1 pkg2 ...'
デジタル 署名
Virt-builder は GNU Privacy Guard (GnuPG または gpg) を使用して、インデックスとテンプレートが
改ざんされていません。
ソースは、オプションで署名されたインデックス ファイルを指します。
Virt-builder はインデックスをダウンロードし、署名が有効であることと署名者の
フィンガープリントは、指定されたフィンガープリントと一致します (つまり、 gpgkey=.. 会場は
.conf、または - 指紋、この順)。
組み込みの公開鍵/指紋と照合するには、これをインポートする必要があります
公開鍵をユーザーのローカル gpg キーリングに追加します (これが gpg の仕組みです)。
テンプレートがダウンロードされると、その署名が同じ方法でチェックされます。
署名はオプションですが、署名がない場合、virt-builder ユーザーは
使用する必要があります --チェック署名なし コマンドラインで。 これにより、攻撃者は
署名されたインデックス ファイルを署名されていないインデックス ファイルに置き換え、virt-builder を使用する
署名を確認せずに静かに作業します。 いずれにせよ、強くお勧めします
常に署名付きインデックスとテンプレートを作成します。
アーキテクチャ
Virt-builder は、ホスト アーキテクチャに関係なく、あらゆるアーキテクチャのゲストを構築できます。
は。 たとえば、ARM ホスト上の x86-64 ゲスト。
ただし、特定のオプション、特にコマンドの実行が必要なオプションが機能しない場合があります
ビルドプロセス中のゲストで: - インストール, - 更新, - 走る, --実行コマンド。 あなたかもしれない
これらを firstboot-equivalents に置き換える必要があります。
86 ビットの i64 ゲストを構築する x32-686 ホストは、特別な手順を実行しなくても動作するはずです。
SECURITY
Virt-builder は root として実行する必要はありません (実際、root として実行するべきではありません)。
setuid、「sudo」、または同様のメカニズムを使用しません。
- インストール, - 更新, - 走る と --実行コマンド アプライアンス(小さな
仮想マシン) であるため、これらのコマンドはホストでは実行されません。 を使用している場合
libguestfs libvirt バックエンドであり、SELinux が有効になっている場合、仮想マシンは
さらに、SELinux コンテナー (sVirt) にカプセル化されます。
ただし、これらのオプションはホストのネットワークにアクセスできます。
信頼できないコードが含まれていると、コードがホスト ネットワーク リソースにアクセスしようとする可能性があります。
いけない。 使用できます - 圏外 これを防ぐために。
Firstboot コマンドは、ゲストの起動時にゲストのコンテキストで実行されるため、セキュリティ
ハイパーバイザー/クラウドの最適化を検討する必要があります。
Virt-builder は、ビルドするすべてのゲストにランダムなシードを注入します。 これにより、
ゲストの起動時に、TCP シーケンス番号、UUID、ssh ホスト キーなどは本当にランダムです。
デジタル署名を確認し、署名エラーを無視しないでください。
クローン
同じタイプの新しいゲストを多数作成したい場合は、virt-builder を実行したくなるでしょう。
一度、出力ファイルをコピーします。 あなたがすべき これを行う。 virt-builder を実行する必要があります
必要な新しいゲストごとに XNUMX 回。
その理由は、各クローンが (少なくとも) 個別のランダム シードを持つ必要があるためです。
virt の将来のバージョンでは、おそらく他の固有の機能 (ファイルシステム UUID など)
ビルダー。
あなたがすべきもう一つのこと ゲストを起動してから、起動したディスク イメージのクローンを作成します。
その理由は、一部のゲストが最初に一意のマシン ID、SSH ホスト キーなどを作成するためです。
ブートし、クローンに重複した ID を持たせたくないでしょう。
も参照してください。 virt-sysprepとします。
パフォーマンスとは
優れたパフォーマンスを得るための最も重要な側面は、キャッシングです。 テンプレートは取得します
それらが最初に使用されたときにキャッシュにダウンロードされるか、または
--cache-all-templates オプション。 詳細については、上記の「キャッシュ」を参照してください。
に必要なパッケージ - インストール と - 更新 オプションは、ホストを使用してダウンロードされます
ネットワーク接続。 「http_proxy」「https_proxy」「ftp_proxy」の環境設定
ローカル Web キャッシュを指す変数を使用すると、ダウンロードが XNUMX 回だけで済みます。
セットアップが複雑になる可能性がありますが、ローカル パッケージ リポジトリを使用することもできます。
インストールしようとしている Linux ディストリビューションによって異なります。
使い方 --同期なし
--同期なし. ただし、上記の「オプション」セクションの注意事項をお読みください。
正しく使用しないと、ディスクが破損する原因となります。
スキップ virt-サイズ変更
Virt-builder は、特定の条件下で virt-resize ステップをスキップできます。 これによりvirt-
ビルダーははるかに高速です。 条件は次のとおりです。
· 出力は通常のファイル (ブロック デバイスではない) でなければなりません。 と
· ユーザーがした 使用 - サイズ オプション、 と
· 出力形式はテンプレート形式と同じです (通常は raw)。
pxzcat
liblzma があった場合、Virt-builder は pxzcat (並列 xzcat) の内部実装を使用します。
ビルド時に見つかりました。 ビルド時に liblzma が見つからなかった場合は、通常の「xzcat」が使用されます
これはシングルスレッドです。
ユーザーモード Linux
User-Mode Linux (UML) バックエンドで virt-builder を使用できます。 これは、次の場合に高速になることがあります。
仮想マシン内 (例: クラウド内) で virt-builder を実行します。
UML バックエンドを有効にするには、「USER-MODE LINUX BACKEND」の説明をお読みください。
ゲストとします。
現在、使用する必要があるのは - 圏外 オプション。 これは将来的に修正する必要があります
バージョン。
qcow2 出力形式は、UML ではサポートされていません。 raw 形式のゲストのみを作成できます。
セリナックス
SELinux (Fedora や Red Hat Enterprise Linux など) を使用するゲストには、それぞれ
ファイルには正しい SELinux ラベルがあります。
Virt-builder は新しいファイルにラベルを付ける方法を知らないため、XNUMX つの可能性があります。
正しいラベル付けを確実にするために使用できる戦略:
使い方 --selinux-relabel
これが走る 修正ファイル(8) SELinux ラベルを設定するゲストをファイナライズする直前
ディスクイメージで正しく。
インストール時に fixfiles を使用できない場合があります。その場合、このオプションを使用します。
フォールバック:
触る /.autorelabel
ゲスト テンプレートには、というファイルがすでに含まれている場合があります。 /.autorelabel、または次の場合に触れます
--selinux-relabel 修正ファイルを実行できません。
SELinux を使用するゲストの場合、これにより、最初の起動時に修正ファイルが実行されます。 ゲストは
初めて使用するときに一度再起動しますが、これは正常で無害です。
ゲストが SELinux を使用していて、その上で操作を行っている場合は注意してください。
新しいファイルを作成したり、既存のファイルを変更したりする可能性があるため、使用することをお勧めします
--selinux-relabel. これは、ファイルに適切な SELinux があることを確認するのに役立ちます
ラベル
機械 読みやすい 出力
この -機械可読 オプションを使用して、出力をよりマシンフレンドリーにすることができます。
他のプログラムや GUI などから virt-builder を呼び出すときに便利です。
このオプションを単独で使用して、virt-builder バイナリの機能を照会します。 典型的な
出力は次のようになります。
$ virt-builder -- 機械可読
仮想ビルダー
アーチ
設定ファイル
カスタマイズ
json リスト
pxzcat
機能のリストが0行にXNUMXつずつ印刷され、プログラムはステータスXNUMXで終了します。
ENVIRONMENT 変数
すべての libguestfs プログラムに影響するその他の環境変数については、「ENVIRONMENT」を参照してください。
変数」 ゲストとします。
"http_proxy"
"https_proxy"
"no_proxy"
ダウンロード用のプロキシを設定します。 これらの環境変数 (およびその他) は、実際には
によって解釈される curl(1)、virt-builder ではありません。
"家"
テンプレート キャッシュの場所とユーザーの場所を特定するために使用されます。
ソース。 「キャッシュ」および「テンプレートのソース」を参照してください。
「VIRT_TOOLS_DATA_DIR」
これは、Windowsのfirstbootに使用されるデータファイルを含むディレクトリを指すことができます
インストール。
通常、これを設定する必要はありません。 設定されていない場合、コンパイルされたデフォルトが使用されます
(何かのようなもの / usr / share / virt-tools).
このディレクトリには、次のファイルが含まれている可能性があります。
rhsrvany.exe
これはRHSrvAnyWindowsバイナリであり、「firstboot」スクリプトをインストールするために使用されます。
Windowsゲスト。 使用する場合は必須です --firstboot or
--firstboot-コマンド Windowsゲストのオプション。
参照:「https://github.com/rwmjones/rhsrvany」
「XDG_CACHE_HOME」
テンプレート キャッシュの場所を特定するために使用されます。 「キャッシング」を参照してください。
「XDG_CONFIG_HOME」
ユーザーのソースの場所を特定するために使用されます。 「テンプレートのソース」を参照してください。
"XDG_CONFIG_DIRS"
システム ソースの場所を特定するために使用されます。 「テンプレートのソース」を参照してください。
EXIT ステータス
このプログラムは、成功した場合は0を返し、エラーがあった場合はゼロ以外を返します。
onworks.net サービスを使用してオンラインで virt-builder を使用する