毎回手で打っているコマンド、スクリプトにすれば一発です。運用自動化の入り口、シェルスクリプトの基本をまとめます。
まずは「コマンドを並べるだけ」
シェルスクリプトは、普段打つコマンドをファイルに並べたものです。難しく考えなくて大丈夫。
#!/bin/bash
# バックアップスクリプト
tar czf /backup/app_$(date +%Y%m%d).tar.gz /var/www/app
echo "バックアップ完了"
先頭の #!/bin/bash は「これはbashで動かす」の宣言(シバン)です。
実行できるようにする
chmod +x backup.sh
./backup.sh
chmod +x で実行権限を付けてから実行します。
変数と日付
TARGET="/var/www/app"
DATE=$(date +%Y%m%d)
tar czf /backup/app_${DATE}.tar.gz ${TARGET}
$(コマンド) で、コマンドの結果を変数に入れられます。ログ名に日付を入れる定番パターンです。
条件分岐でミスを防ぐ
if [ -d "$TARGET" ]; then
tar czf /backup/app_${DATE}.tar.gz "$TARGET"
else
echo "対象がありません: $TARGET"
exit 1
fi
対象があるか確認してから実行する、という一手間で事故を防げます。
繰り返し(ループ)
for host in web01 web02 web03; do
echo "=== $host ==="
ssh $host "df -h /"
done
複数サーバのディスク使用率を一括確認、のような定番作業がぐっと楽になります。
エラーで止める設定
スクリプトの先頭に付けておくと安全です。
set -euo pipefail
エラーが出たら止まる(-e)、未定義変数を弾く(-u)、パイプの途中エラーも拾う、という保険です。
自動化の第一歩は「今日の手作業」から
いきなり大作を作らなくていいです。「毎日打っている3コマンド」をスクリプトにするだけで、ミスが減り、時間が浮きます。それをcronで定期実行すれば、立派な自動化の完成です。小さく始めるのがコツです。