目標:GUI が使えない手元 KVM に ubuntu 仮想マシンをセットアップしたい。X を飛ばすとかは無しで。
xenial-server-cloudimg-amd64-disk1.img
をダウンロードする。このイメージの cloud-init
では複数の DataSource が利用できる。イメージの中では次のように設定されている。
datasource_list: [ NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, None ]
手元の KVM で使う分には、一番最初の NoCloud
が簡単だと思う。
default_user である ubuntu
のパスワードを有効化するには、次の NoCloud user-data
を使うのが簡単。
#cloud-config
ssh_pwauth: True
password: password
lock_passwd: False
新規にユーザを作るならこんな感じにすると簡単だろう。
#cloud-config
users:
- name: adminuser
groups: admin
plain_text_passwd: password
lock_passwd: false
インストール
実際に起動させるには、例えば次のようにする。
cp xenial-server-cloudimg-amd64-disk1.img /var/lib/libvirt/images/test.img
cloud-init
で何が起こってるのかわからない時など、root
でログインしたい場合は次のようにしてパスワードを設定できる。これはデバッグ時のみ。
virt-sysprep --root-password password:hogehoge -a /var/lib/libvirt/images/test.img
NoCloud
用の補助ディスクを作る。先ほどの user-data
を使う。必ず user-data
と meta-data
の両方のファイルを用意してコマンドを実行する。user-data だけでは NG
touch meta-data
genisoimage -output /var/lib/libvirt/images/udata.iso -volid cidata \
-joliet -rock user-data meta-data
libvirt 環境に登録する。
virt-install --virt-type kvm --name test --ram 2048 \
--disk path=/var/lib/libvirt/images/test.img,size=16 \
--disk path=/var/lib/libvirt/images/udata.iso,device=cdrom \
--graphics none --console pty,target_type=serial --import --network network=default
初期設定が終わったら無効化しておくのも手。
touch /etc/cloud/cloud-init.disabled
補足
virt-sysprep
で全部設定してしまえばいいような気もしますが、cloud-init
でユーザ作成などもおこなっているので、いい感じに順番に実行するのが難しかったです。
もっといい方法があるかなぁ…?
^]
は、CTRL を押しながら ] キーを押す。