0Pricing
DevOps Bootcamp · レッスン

システム管理の自動化

Bashスクリプトを使って、バックアップ、ログローテーション、監視など、システム管理の一般的な作業を自動化します。

「システム管理の自動化」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

システム管理自動化の概要

ようこそ。このレッスンでは、Bashスクリプトを使って、システム管理でよく行うタスクを自動化する方法を学びます。ここで、スクリプト作成のスキルが真価を発揮します。

自動化によってシステム管理はより効率的で一貫したものになり、人為的なミスも減らせます。これは開発者やITプロフェッショナルにとって重要なスキルです。

システム管理タスクを自動化する理由

繰り返し行うタスクを自動化すると、大きなメリットがあります。

  • 効率:手作業なしで、タスクをより速く実行できます。
  • 一貫性:毎回同じ方法でタスクを実行でき、エラーを減らせます。
  • 信頼性:その場にいないときでも、スクリプトを確実にスケジュール実行できます。
  • スケーラビリティ:同じ操作を多数のシステムに簡単に適用できます。

自動化に適した一般的な対象

システム管理の多くのタスクは、自動化に適しています。

  • バックアップ:重要なデータを定期的にコピーする。
  • ログ管理:古いログを削除またはローテーションする。
  • システム監視:ディスク容量、CPU、メモリ使用量を確認する。
  • ユーザー管理:ユーザーアカウントを作成または削除する。
  • ソフトウェア更新:パッケージを最新の状態に保つ。

簡単なバックアップをスクリプト化する

最も重要なタスクの1つがデータのバックアップです。基本的なバックアップスクリプトでは、特定のファイルやディレクトリを安全な場所にコピーします。多くの場合、タイムスタンプも付けます。

cpコマンドとdateコマンドを使えば、一意のバックアップディレクトリを作成できます。

実行:毎日のデータバックアップ

このスクリプトは、my_dataディレクトリのバックアップをタイムスタンプ付きで作成し、backupsフォルダーに保存します。テストする際は、/path/to/my_dataをシステム上の実在するディレクトリに置き換えてください。

#!/bin/bash

SOURCE_DIR="/tmp/my_data"
BACKUP_DIR="/tmp/backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)

mkdir -p "$SOURCE_DIR"
echo "Hello from CoddyKit!" > "$SOURCE_DIR/file1.txt"
echo "More data." > "$SOURCE_DIR/file2.txt"

mkdir -p "$BACKUP_DIR"

# Perform the backup
cp -r "$SOURCE_DIR" "$BACKUP_DIR/backup_$TIMESTAMP"

echo "Backup created at: $BACKUP_DIR/backup_$TIMESTAMP"

ログのクリーンアップを自動化する

ログファイルはすぐに大きくなり、ディスク容量を大量に消費することがあります。ログのクリーンアップやローテーションを自動化することは、システムを健全に保つうえで重要です。

findコマンドを使って古いログファイルを探し、削除したりアーカイブに移動したりできます。

実行:古いログを削除する

このスクリプトは、指定したディレクトリにある7日より古いログファイルを削除します。実際のスクリプトでrmを使う際は注意してください。

#!/bin/bash

LOG_DIR="/tmp/app_logs"

mkdir -p "$LOG_DIR"
touch "$LOG_DIR/today.log"
touch -d "8 days ago" "$LOG_DIR/old_log_1.log"
touch -d "5 days ago" "$LOG_DIR/recent.log"
touch -d "10 days ago" "$LOG_DIR/old_log_2.log"

echo "Logs before cleanup:"
ls -l "$LOG_DIR"

# Find and delete log files older than 7 days
find "$LOG_DIR" -type f -name "*.log" -mtime +7 -delete

echo "\nLogs after cleanup:"
ls -l "$LOG_DIR"

ディスク使用量を監視する

ディスク容量などのシステムリソースを監視することは、障害を防ぐうえで重要です。スクリプトで使用量を定期的に確認し、しきい値を超えた場合に通知できます。

dfコマンドは、ファイルシステムのディスク使用量を報告します。その出力を解析して、割合だけを取得できます。

実行:ディスク容量アラート

このスクリプトはルートファイルシステム(/)のディスク使用量を確認し、80%を超えている場合に警告を表示します。THRESHOLDは変更できます。

#!/bin/bash

THRESHOLD=80

# Get disk usage percentage for root filesystem
USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')

# Check if usage exceeds threshold
if (( USAGE > THRESHOLD )); then
  echo "WARNING: Disk usage on / is at ${USAGE}%!"
else
  echo "Disk usage on / is ${USAGE}%. All good!"
fi

システム管理スクリプトのベストプラクティス

自動化スクリプトを作成するときは、次のベストプラクティスを検討してください。

  • エラー処理:set -eを使ってエラー発生時に終了し、明示的なエラーチェックも追加します。
  • ロギング:監査やデバッグのために、スクリプトの出力をログファイルにリダイレクトします。
  • 冪等性:複数回実行しても、1回だけ実行した場合と同じ結果になるようスクリプトを設計します。
  • 設定:変更しやすい値には変数または独立した設定ファイルを使用します。
  • 権限:スクリプトに正しい実行権限(chmod +x)があることを確認します。

システム管理自動化の確認

システム管理において、Bashスクリプトによる自動化に適しているタスクは次のうちどれですか?

振り返り:システム管理を自動化する

よくできました。Bashスクリプトによってシステム管理タスクを効率化する方法を学びました。

バックアップ、ログのクリーンアップ、ディスク使用量の監視を自動化しました。堅牢で信頼性の高い自動化スクリプトを作成するために、エラー処理やロギングなどのベストプラクティスを適用することを忘れないでください。

これらのスキルは、システムを健全かつ効率的に維持するうえで非常に役立ちます。

よくある質問

「システム管理の自動化」レッスンは無料ですか?

はい。「システム管理の自動化」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「システム管理の自動化」で何を学びますか?

Bashスクリプトを使って、バックアップ、ログローテーション、監視など、システム管理の一般的な作業を自動化します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「システム管理の自動化」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Cronによるタスクのスケジュール設定
  2. システム管理の自動化
  3. 高度なスクリプティングプロジェクト
  4. ログローテーションとクリーンアップの自動化
← DevOps Bootcampに戻る