公司有買 VMware license,但一直沒研究要如何做一份 VM template 出來,所以花了點時間研究到底怎麼做才會比較好。
這邊提供的方法是為了之後的通用性 (像是之後有可能用 KVM 堆虛擬機),所以不使用 VMware 獨規的設計,因此有些設定需要手動調整。
首先是先生出一台 Ubuntu 14.04.1 的 VM,在裝完基本系統後有些要先處理的:
- 可以考慮用 DHCP 或是不開啟網路設定,反正不要設固定 IP address,以免同時裝多台機器時發生狀況。
- 因為是 VMware 裡面,安裝 open-vm-tools 可以省下一些 puppet 安裝的時間。
- 砍掉
/etc/ssh/ssh_host_*
,每台機器的 host key 應該要不一樣。
做好 VM 後轉成 Template,之後每次在 deploy 完、開起來後,還要做這些事情:
- 改
/etc/hostname
與/etc/hosts
裡的機器名稱。 - 改
/etc/network/interfaces
裡的網路設定。 - 跑
dpkg-reconfigure openssh-server
重新產生 SSH host key。
有些參考資料:
- 研究別人怎麼裝 Ubuntu 14.04.1:「How to Install Ubuntu Server 14.04.1 on ESXi 5.5」。
- 重新產生 SSH host key 的方式:「Avoid Duplicate SSH Host Keys」。
過程其實還蠻簡單的,只是有一些眉眉角角的東西要注意...
ssh host key會在hostname變更時重新產生,所以可以不用砍
另外我們家有個怪現象,改了hostname之後如果hosts裡沒有相對應的設定,sudo就會卡住不會動,所以就變成要先在hosts裡面加好新的IP與hostname對應,然後再改hostname;我們家還會改vg的名字與grub.cfg,不然每個都是template那台的名字不好看
(個人習慣)以前還要改/etc/udev/rules.d/70-persistent-net.rules,把eth0砍了,不然clone出來的新機器網路卡會是eth1,現在不用了...