はじめに
Ubuntu上のKVMを使って、新たにUbuntuの仮想マシンを立ててcloud-initで初期化する手順を記載します。
環境
- Ubuntu20.04(ホストOS)
- Ubuntu20.04(ゲストOS)
- KVMはインスール済
環境構築手順
Cloud Imageをダウンロードする
rootになり、ダウンロード先のフォルダを作成する
$ sudo -i # mkdir -p /var/lib/libvirt/images # cd /var/lib/libvirt/images
次に Cloud Imageをダウンロードする。 バージョンの確認方法は次のリンクを参考に実施する。 inorio.hatenablog.com
# curl -o ubuntu-20.04.1-server-cloudimg-amd64.img http://cloud-images-archive.ubuntu.com/releases/focal/release-20210125/ubuntu-20.04-server-cloudimg-amd64.img
VM用のディスクを作成する。
ダウンロードしてきたイメージファイルからそのまま起動するとディスク消費量が増えるため、QCOW2形式で差分ディスクが作成し、それをベースにVMを動作させる
# qemu-img create -F qcow2 -b ubuntu-20.04.1-server-cloudimg-amd64.img -f qcow2 test.qcow2 50G
rootによる操作は終了する。
# exit $
cloud-initで使用するmeta-dataとuser-dataを作成する
今回、ダウンロードしたCloud Imageではcloud-initという技術を使用して起動時に、ユーザアカウントなどの初期化処理を実施することができる。 cloud-initの構成要素であるmeta-dataとuser-dataを使用して初期化処理を行う。
まず、はじめに作業用ディレクトリを作成する
$ cd ~ $ mkdir -p cloud-init $ cd cloud-init/
access.redhat.com を参考にmeta-dataとuser-dataを作成する。
$ VMNAME=test $ mkdir -p $VMNAME $ pushd $VMNAME $ cat > user-data <<-EOS #cloud-config password: ubuntu chpasswd: {expire: False} ssh_pwauth: True EOS $ cat > meta-data <<-EOS instance-id: $VMNAME local-hostname: $VMNAME EOS $ genisoimage -output ../cidata-${VMNAME}.iso -volid cidata -joliet -rock user-data meta-data
virt-installコマンドによるインスール
virt-installコマンドを使用して、VMをインスールする。 virt-installコマンドのオプションは適当に設定する。
$ VMNAME=test $ IMAGE_FILE=/var/lib/libvirt/images/${VMNAME}.qcow2 $ CIDATA_FILE=$PWD/cidata-${VMNAME}.iso $ sudo virt-install \ --name $VMNAME \ --ram 49152 \ --vcpus 16 \ --arch x86_64 \ --os-type linux \ --os-variant ubuntu18.04 \ --hvm \ --virt-type kvm \ --file $IMAGE_FILE \ --cdrom $CIDATA_FILE \ --boot hd \ --network bridge:br0 \ --network network:default \ --graphics none \ --serial pty \ --console pty \ --autostart --noreboot
数分待ち、インスールが完了すると、ログインを要求する画面が表示され、user-dataで設定したパスワードでVMにログインを行うことができる。
(省略) 5gran-5gc login: ubuntu ←入力 Password: ubuntu ←入力 $