VirtualBoxインスタンスからカスタムのvagrantボックスを作成するためのインターネット上の多くのリソースがあります。しかし、私はkvm/libvirtインスタンスから直接カスタムのvagrantボックスを作成する直接的な方法を知りたいです。 vagrant-mutateや、VirtualBoxを別のプロバイダーに変換するものを提案しないでください。
浮浪者と一緒に時間を過ごした後、私はカスタムボックスの解決策を得ました。まず、Linux OSをlibvirt/qvmにインストールし、それにログインしてカスタマイズし、vagrant
ユーザーをパスワードvagrant
で作成します。
adduser vagrant
vagrant
ユーザーは、パスワードなしでSudoコマンドを実行できる必要がありますプロンプト
Sudo visudo -f /etc/sudoers.d/vagrant
貼り付けます
vagrant ALL=(ALL) NOPASSWD:ALL
vagrant boxをカスタマイズするために何でも行い、以前にインストールされていない場合はopenssh-server
をインストールします
Sudo apt-get install -y openssh-server
vagrant userからsshキーを置く
mkdir -p /home/vagrant/.ssh
chmod 0700 /home/vagrant/.ssh
wget --no-check-certificate \
https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub \
-O /home/vagrant/.ssh/authorized_keys
chmod 0600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant /home/vagrant/.ssh
sudo vi /etc/ssh/sshd_config
を開いて変更します
PubKeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication no
を使用してsshサービスを再起動します
Sudo service ssh restart
ツールを適切にコンパイルしてインストールするための追加の開発パッケージをインストールする
Sudo apt-get install -y gcc build-essential linux-headers-server
必要な変更を行い、シャットダウンしますVM。now、ゲストVMが実行されているホストマシンに移動し、/var/lib/libvirt/images/
に移動します。変更を加えた生の画像を選択し、どこかにコピーします。例:/test
cp /var/lib/libvirt/images/test.img /test
metadata.json
に2つのファイル/test
とVagrantfile
を作成しますmetadata.json
にエントリを作成します
{
"provider" : "libvirt",
"format" : "qcow2",
"virtual_size" : 40
}
Vagrantfile
Vagrant.configure("2") do |config|
config.vm.provider :libvirt do |libvirt|
libvirt.driver = "kvm"
libvirt.Host = 'localhost'
libvirt.uri = 'qemu:///system'
end
config.vm.define "new" do |custombox|
custombox.vm.box = "custombox"
custombox.vm.provider :libvirt do |test|
test.memory = 1024
test.cpus = 1
end
end
end
を使用してtest.imgをqcow2形式に変換します
Sudo qemu-img convert -f raw -O qcow2 test.img ubuntu.qcow2
ubuntu.qcow2の名前をbox.imgに変更します
mv ubuntu.qcow2 box.img
注:現在、libvirt-vagrantはqcow2形式のみをサポートしています。したがって、名前をbox.imgに変更するだけで形式を変更しないでください。デフォルトでは名前がbox.imgの入力を受け取るためです。
ボックスを作成
tar cvzf custom_box.box ./metadata.json ./Vagrantfile ./box.img
ボックスを浮浪者に追加する
vagrant box add --name custom custom_box.box
vagrantを初期化するディレクトリに移動し、Vagrantファイルを作成する以下のコマンドを実行します
vagrant init custom
vagrant VMの構成を開始する
vagrant up --provider=libvirt
楽しい !!!