例: Ubuntu イメージ

This example installs an Ubuntu 18.04 (Bionic Beaver) image. To create an image for a different version of Ubuntu, follow these steps with the noted differences.

Ubuntu インストール ISO のダウンロード

Because the goal is to make the smallest possible base image, this example uses the network installation ISO. The Ubuntu 64-bit 18.04 network installation ISO is at the Ubuntu download page.

インストールプロセスの開始

前のセクションに記載されている virt-managervirt-install を使用して、インストールプロセスを開始します。 virt-install を使用する場合、必ず VNC クライアントを仮想マシンに接続してください。

Assume that the name of your virtual machine image is ubuntu-18.04, which you need to know when you use virsh commands to manipulate the state of the image.

virt-manager を使用している場合、このコマンドは以下のようになるでしょう。

# wget -O /var/lib/libvirt/boot/bionic-mini.iso \
  http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/mini.iso
# chown libvirt-qemu:kvm /var/lib/libvirt/boot/bionic-mini.iso
# qemu-img create -f qcow2 /var/lib/libvirt/images/bionic.qcow2 10G
# chown libvirt-qemu:kvm /var/lib/libvirt/images/bionic.qcow2
# virt-install --virt-type kvm --name bionic --ram 1024 \
  --cdrom=/var/lib/libvirt/boot/bionic-mini.iso \
  --disk /var/lib/libvirt/images/bionic.qcow2,bus=virtio,size=10,format=qcow2 \
  --network network=default \
  --graphics vnc,listen=0.0.0.0 --noautoconsole \
  --os-type=linux --os-variant=ubuntu18.04

インストールのステップ実行

インストーラーの初期ブートメニューで、Install を選択します。インストールのプロンプトを一つずつ実行します。デフォルトのままが良いでしょう。

_images/ubuntu-install.png

ホスト名

インストーラーが、ホスト名の入力を求めるかもしれません。デフォルトの ubuntu が良いでしょう。後ほど cloud-init パッケージをインストールします。これにより、このイメージを使用して展開された新規インスタンスの起動時に、ホスト名が設定されます。

ミラーの選択

インストーラーにより提案されるデフォルトのミラーが良いでしょう。

インストールのステップ実行

デフォルトのオプションを使用して、インストールを進めます。ユーザー名を聞かれた際、デフォルト (ubuntu) が良いでしょう。

ディスクのパーティション作成

ディスクのパーティションは、さまざまな選択肢があります。デフォルトは、うまく動作する LVM パーティションを使用し、3 つのパーティション (/boot/`、swap) を作成します。この代わりに、単一の ext4 パーティション を作成し、/`` にマウントすることもうまく動作するでしょう。

よくわからない場合、インストーラーのデフォルトのパーティション構成を使用することを推奨します。別の構成にする明確な利点がないためです。

自動更新

Ubuntu のインストーラーは、お使いのシステムのアップグレードを管理する方法を確認してきます。この選択肢は具体的なユースケースにより決まります。仮想マシンインスタンスがインターネットに接続される場合、「Install security updates automatically」(セキュリティー更新を自動的にインストール) を推奨します。

ソフトウェア選択: OpenSSH サーバー

OpenSSH server を選択して、OpenStack クラウド内での起動時に、仮想マシンに SSH ログインできるようにします。

_images/ubuntu-software-selection.png

GRUB ブートローダーのインストール

GRUB ブートローダーをマスターブートレコードにインストールするかを確認された際、 Yes を選択します。

_images/ubuntu-grub.png

Grub 設定の詳細は "イメージがブートログをコンソールに書き込むことの確認" の節を参照してください。

新規作成イメージへのログイン

When you boot for the first time after install, it may ask you about authentication tools, you can just choose Exit. Then, log in as admin user using the password you specified.

cloud-init のインストール

cloud-init スクリプトは、インスタンス起動時に起動し、メタデータサービスプロバイダーから公開鍵を取得するために、それを検索します。公開鍵は、イメージのデフォルトユーザーアカウントに置かれます。

cloud-init パッケージをインストールします。

# apt install cloud-init

Ubuntu イメージの構築時、 cloud-init が使用するメタデータのソースを明示的に設定する必要があります。OpenStack メタデータサーバーは、Amazon EC2 のイメージにより使用される EC2 メタデータサービスを真似ています。

イメージにより使用されるメタデータのソースを設定するために、 cloud-init パッケージに対して dpkg-reconfigure コマンドを実行します。プロンプトの表示時 EC2 データソースを選択します。

# dpkg-reconfigure cloud-init

アカウントはディストリビューションにより異なります。Ubuntu 系の仮想マシンの場合、アカウントは ubuntu という名前です。Fedora 系の仮想マシンの場合、アカウントは ec2-user という名前です。

You can change the name of the account used by cloud-init by editing the /etc/cloud/cloud.cfg file and adding a line with a different user. For example, to configure cloud-init to put the key in an account named admin, use the following syntax in the configuration file:

users:
  - name: admin
    (...)

インスタンスのシャットダウン

インスタンス内で root として以下を実行します。

# /sbin/shutdown -h now

クリーンアップ (MAC アドレスの詳細の削除)

オペレーティングシステムは、インストール中に仮想ネットワークカードの MAC アドレスを /etc/udev/rules.d/70-persistent-net.rules などの場所に記録します。しかしながら、イメージが起動するたびに、仮想ネットワークカードは別の MAC アドレスになります。そのため、この情報は設定ファイルから削除する必要があります。

virt-sysprep というユーティリティーがあります。これは、MAC アドレス参照の削除など、さまざまなクリーンアップ作業を実行します。決まった場所にある仮想マシンイメージをクリーンアップします。

# virt-sysprep -d bionic

libvirt ドメインの定義削除

これで、イメージは Image service にアップロードできる状態になっています。今後は、この仮想マシンイメージは libvirt により管理する必要がありません。virsh undefine vm-image コマンドを使用して libvirt に通知します。

# virsh undefine bionic

イメージの完成

The underlying image file that you created with the qemu-img create command, such as /var/lib/libvirt/images/bionic.qcow2, is now ready for uploading to the Image service by using the openstack image create command. For more information, see the Glance User Guide.