packer およびpreseedを使用して、Hyper-VでのUbuntu 16.04 VMの展開を自動化しようとしています。私のpreseedファイルには、必要なすべての依存関係をインストールします。
d-i preseed/late_command string in-target apt-get install -y --install-recommends linux-virtual-lts-xenial linux-tools-virtual-lts-xenial linux-cloud-tools-virtual-lts-xenial;
インストールは問題なく完了し、再起動後にサービスが実行されます。
root@ubunt-xenial:~# systemctl status hv-kvp-daemon.service
● hv-kvp-daemon.service - Hyper-V KVP Protocol Daemon
Loaded: loaded (/lib/systemd/system/hv-kvp-daemon.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-01-15 13:32:34 UTC 12s ago
Main PID: 567 (hv_kvp_daemon)
CGroup: /system.slice/hv-kvp-daemon.service
└─567 /usr/lib/linux-tools/4.4.0-109-generic/hv_kvp_daemon -n
Jan 15 13:32:34 ubuntu-xenial systemd[1]: Started Hyper-V KVP Protocol Daemon
Jan 15 13:32:34 ubuntu-xenial KVP[567]: KVP starting: pid is: 567
Jan 15 13:32:34 ubuntu-xenial KVP[567]: KVP LIC Version: 3.1
ただし、packerが完了するには、ハイパーバイザーがゲストのIPアドレスを確認できる必要があります。しかし、どういうわけか、Hyper-Vは「連絡なし」を報告します。
D:\packer> Get-VMIntegrationService 'ubuntu-xenial'
[...]
ubuntu-xenial Key-Value Pair Exchange True No Contact
VMに戻ると、サービスが最初は実行されているのに失敗したことがわかります。
root@ubunt-xenial:~# journalctl
[...]
Jan 15 13:33:36 ubuntu-xenial kernel: hv_balloon: Received INFO_TYPE_MAX_PAGE_CNT
Jan 15 13:33:36 ubuntu-xenial kernel: hv_balloon: Data Size is 8
Jan 15 13:34:26 ubuntu-xenial KVP[567]: read failed; error:9 Bad file descriptor
Jan 15 13:34:26 ubuntu-xenial systemd[1]: hv-kvp-daemon.service: Main process exited, code=exited, status=1/FAILURE
Jan 15 13:34:26 ubuntu-xenial systemd[1]: hv-kvp-daemon.service: Unit entered failed state.
Jan 15 13:34:26 ubuntu-xenial systemd[1]: hv-kvp-daemon.service: Failed with result 'exit-code'.
「systemctl restart hv-kvp-daemon.serv ice」でサービスを手動で再起動すると、サービスは起動しますが、しばらくすると再び失敗します。デーモンを適切に起動する唯一のオプションは、マシンをシャットダウンしてから再び電源を入れることです(再起動はnot動作します。手動で起動する必要があります)。
自動ビルドの場合、実行するにはこのサービスが必要ですが、これを修正するためのアイデアはありますか?
tl; dr:hv-kvp-daemonが起動し、〜1min後に失敗し、手動で再起動した後にのみ起動します。
マシンは「データ交換」を有効にして設定されていますか?
このオプションは、Hyper-Vマネージャーにあります。マシンを右クリックして、[設定...]-> [管理/統合サービス]を選択します。少なくとも「データ交換」の横にチェックマークがあることを確認します。