TerraformのプロバイダーでVMware vSphereが用意されている。
仮想マシンをテンプレートから新規に作成することができるが、ホスト名、固定IPなどをTerraformから設定するには少し準備が必要だったのでメモ。注意点としてはテンプレートを作成する前に一度「open-vm-tools」を実行させないと自動デプロイに失敗すること。
Ansible 用 SSH 鍵の配置
テンプレートから仮想マシンを作成後にすぐにAnsibleを実行させたいのでssh鍵の設定を行う。
ssh root@10.8.95.14 mkdir -m 700 ~/.ssh
scp ~/.ssh/id_rsa.pub root@10.8.95.14:~/.ssh/authorized_keys
自動デプロイ必要な設定
以下パッケージをインストール
- yum-utils
- open-vm-tools
- open-vm-tools-devel
open-vm-toolsのインストール後一度実行
service vmtoolsd start
ホストマシンからVMware Toolsが実行中になっていることを確認
こうしないと以下エラーが発生する。
ゲスト OS「centos7_64Guest」のカスタマイズは、この設定ではサポートされていません。論理ボ リューム マネージャを持つ Microsoft Vista (TM) と Linux ゲストは、最新の ESX ホストおよび VMware Tools バージョンでのみサポートされています。サポート対象の設定については、vCenter Server のドキュメントを参照してください。
テンプレートの作成手順
以下、サイトを参考にテンプレートを作成する
How to: Create a RHEL/CentOS 6/7 Template for VMware vSphere
おまけ:テンプレート作成用スクリプト
上記サイトを参考にスクリプトを作成してみた。
ssh root@10.8.0.14 <<EOS
date
uname -n
uname -a
yum update --skip-broken -y
yum install -y perl yum-utils open-vm-tools open-vm-tools-devel
/sbin/service vmtoolsd start
/bin/sleep 20
/sbin/service rsyslog stop
/sbin/service auditd stop
package-cleanup --oldkernels --count=1 -y
yum clean all
/usr/sbin/logrotate -f /etc/logrotate.conf
/bin/rm -f /var/log/*-???????? /var/log/*.gz
/bin/rm -f /var/log/dmesg.old
/bin/rm -rf /var/log/anaconda
/bin/cat /dev/null > /var/log/audit/audit.log
/bin/cat /dev/null > /var/log/wtmp
/bin/cat /dev/null > /var/log/lastlog
/bin/cat /dev/null > /var/log/grubby
/bin/rm -f /etc/udev/rules.d/70*
/bin/sed -i '/^(HWADDR|UUID)=/d' /etc/sysconfig/network-scripts/ifcfg-e*
/bin/rm -rf /tmp/*
/bin/rm -rf /var/tmp/*
/bin/rm -f /etc/ssh/*key*
/bin/rm -f ~root/.bash_history
unset HISTFILE
/bin/rm -f ~root/anaconda-ks.cfg
history -c
uname -n
date
sys-unconfig
EOS