VMWare ESXi 6.7 に cron の設定
■環境
VMware vSphere ESXi 6.7 Update 3
■cron の設定方法
ESXi には crontab コマンドがありませんので、crontab -e などで編集ができません。
cron の設定ファイルを直接に編集します。cron の設定はファイルは/var/spool/cron/crontabs/root です。
パーミッションは 1444 の 読込み専用になっているので、まずは一時的に 1744 に
変更します。
補足ですがパーミッション4桁のうち最初の1桁目はスティッキービットと呼びます。詳しい説明はべつの資料に参照していただきますが、スティッキービットのフラグが立っていると所有者もしくはスーパーユーザー (root) しかファイル・ディレクトリの削除ができなくなります。
# ls -l /var/spool/cron/crontabs/root
-r--r--r-T 1 root root 843 Jun 3 12:00 /var/spool/cron/crontabs/root
# chmod 1744 /var/spool/cron/crontabs/root
# ls -l /var/spool/cron/crontabs/root
-rwxr--r-T 1 root root 843 Jun 3 12:00 /var/spool/cron/crontabs/root
# vi /var/spool/cron/crontabs/root
##min hour day mon dow command
1 1 * * * /sbin/tmpwatch.py
1 * * * * /sbin/auto-backup.sh
0 * * * * /usr/lib/vmware/vmksummary/log-heartbeat.py
## JV-net Original Backup Tasks
00 16 * * * /vmware_backup.sh jvncentos73
crond を再起動し、設定を反映します。
# /bin/kill $(cat /var/run/crond.pid)
# /usr/lib/vmware/busybox/bin/busybox crond
■再起動した際に cron に自動追記する方法
ESXi の cron は再起動すると元に戻る仕様のようです。このままでは消えてしまうので、/etc/rc.local.d/local.sh を編集し起動時に cron 設定を追記するようにします。
※ /etc/rc.local.d/ の下に適当にファイルを作成しそこに記載してもよいと思います。
vi /etc/rc.local.d/local.sh
追記した内容は下記のとおりです。先の手順に記載した crond の再起動も忘れずに記述します。
※ 行末に書いている exit 0 の手前に追記してください。
/bin/echo "## JV-net Original Backup Tasks" >> /var/spool/cron/crontabs/root
/bin/echo "00 16 * * * /vmware_backup.sh jvncentos73" >> /var/spool/cron/crontabs/root
/bin/kill $(cat /var/run/crond.pid)
/usr/lib/vmware/busybox/bin/busybox crond
# active fw rule for email
/bin/cp ./email.xml /etc/vmware/firewall/.
/bin/esxcli network firewall refresh
設定結果を確認する。
# esxcli network firewall ruleset list
Name Enabled
---------------------- -------
sshServer true
sshClient false
。。。<省略>
email true
※ ./email.xml については下記のリンクによりご参照
「ESXi のファイアウォールのメール送信ルールを追加する」
※これで、ESXi を再起動しても cron が自動設定されるようになります。
※cron機能によりESXiのVMを自動バックアップについて下記の記事をご参照。
「VMWare ESXi の仮想マシンバックアップ」