Ubuntu Weekly Recipe

第611回 Packerでmultipass用の仮想マシンイメージを作る

この記事を読むのに必要な時間:およそ 6 分

イメージのビルドとmultipassでの利用

作成したPackerファイルはvalidateサブコマンドでチェックできます。

$ packer validate ubuntu.json
Template validated successfully.

またfixサブコマンドを使うと,JSONファイルそのものを整形できます。他人と共有するPackerファイルは,設定ファイルの書き方や位置を揃えるためにもfixコマンドを積極的に活用していきましょう。

$ packer fix ubuntu.json > new.json

イメージの作成はbuildサブコマンドです。

$ packer build ubuntu.json
qemu: output will be in this color.

==> qemu: Retrieving ISO
==> qemu: Trying http://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img
==> qemu: Trying http://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img?checksum=sha256%3A3c3a67a142572e1f0e524789acefd465751224729cff3a112a7f141ee512e756
==> qemu: Copying hard drive...
==> qemu: Resizing hard drive...
==> qemu: Starting HTTP server on port 8110
==> qemu: Found port for communicator (SSH, WinRM, etc): 3636.
==> qemu: Looking for available port between 5900 and 6000 on 127.0.0.1
==> qemu: Starting VM, booting disk image
    qemu: The VM will be run headless, without a GUI. If you want to
    qemu: view the screen of the VM, connect via VNC without a password to
    qemu: vnc://127.0.0.1:5950
==> qemu: Overriding defaults Qemu arguments with QemuArgs...
==> qemu: Waiting 10s for boot...
==> qemu: Connecting to VM via VNC (127.0.0.1:5950)
==> qemu: Typing the boot command over VNC...
==> qemu: Using ssh communicator to connect: 127.0.0.1
==> qemu: Waiting for SSH to become available...
==> qemu: Connected to SSH!
==> qemu: Provisioning with shell script: /tmp/packer-shell037271588
    qemu: /: 3.7 GiB (3969331200 bytes) trimmed
==> qemu: Halting the virtual machine...
==> qemu: Converting hard drive...
==> qemu: Error getting file lock for conversion; retrying...
Build 'qemu' finished.

==> Builds finished. The artifacts of successful builds are:
--> qemu: VM files in directory: output-qemu

作成したイメージはoutput-qemu/packer-qemuとして保存されます。

$ file output-qemu/packer-qemu
output-qemu/packer-qemu: QEMU QCOW2 Image (v3), 5368709120 bytes

あとはこのファイルをmultipassのインスタンス作成時に指定するだけです。

$ multipass launch file://$PWD/output-qemu/packer-qemu \
  --disk 5G --name packer
Launched: packer

これで任意の「構築済み仮想マシンイメージ」を作れるようになりました。cloud-initをサポートしているOSなら,Ubuntu以外でも同様の方法でイメージの作成が可能です。それはまたの機会に。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。