libvirt / kvmインスタンスからカスタムvagrantボックスを作成する方法?


16

VirtualBoxインスタンスからカスタムの浮浪者ボックスを作成するには、インターネット上に多くのリソースがあります。しかし、kvm / libvirtインスタンスから直接カスタムの浮浪者ボックスを作成する直接的な方法を知りたいです。vagrant-mutateやVirtualBoxを別のプロバイダーに変換するものを提案しないでください。

回答:


21

Vagrantで時間を過ごした後、カスタムボックスのソリューションを得ました。まず、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ユーザーから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をシャットダウンします。ここで、ゲストVMが実行されているホストマシンに移動 /var/lib/libvirt/images/し、変更を行った生のイメージを選択して、たとえばどこかにコピーします/test

cp /var/lib/libvirt/images/test.img  /test 

2つのファイルmetadata.jsonを作成しVagrantfile/test doエントリに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 

楽しい !!!


2
私は、ギグをtarするためにすべての時間を費やした後、浮浪者はそのtarを再び解凍するのと同等の時間を費やすことを指摘したかったのです。:fubar:
ThorSummoner

2
往復のtar / untarしをスキップし、あなたのVagrantfile、meta.jsonをドロップし、直接box.imgすることができるかもしれない~/.vagrant.d/boxes/<name>/0/libvirt/
ThorSummoner

比較的複雑な手順について非常に明確な説明に賛成票を投じてください。おかげで
アヴィMehenwal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.