SadServersとは

ある問題を抱えたサーバーを実際に操作し、トラブルシュートを試みることができるスキルチェックサイトです。
各シナリオ毎に難易度が設けられており、制限時間内で解決まで導けたかどうかを確認することができます。
基本的に問われる内容はLinuxの知識となります。

SadServers:https://sadservers.com/
※サイトの目的やアーキテクチャなどの詳細についてはFernando Duran氏がGitHubで公開しているので気になる方はそちらもあわせてご確認ください

基本的な使い方

サイト内でも使い方は説明されていますので詳細は直接サイトをご確認ください。

注意点

  • 各問題には制限時間が設けられており、その制限時間に達すると自動的にサーバーとの通信が切断されサーバーが削除されますのでチャレンジする場合はまとまった時間がある時にしましょう
  • 制限時間の関係上、サーバーがデプロイされてから問題文を読むのは時間ロスになりますので、開始前に[Show Me Sad Servers]からシナリオの[Info]を読んでおくことをオススメします
  • 実際に環境がデプロイされますので、何度も[Run]をしたり放置したりしないようにしましょう

始め方

今のところユーザー登録など不要でそのまま開始することができます。
※プライバシーに関してはFAQに記載がありますが、現在はアクセス元のIPアドレスを取得しているようです

[Give Me a Sad Server]を選択すると最初の問題が開始されますので、とりあえず試してみたい方はそちらから進んでみてください。
[Show Me Sad Servers]を選択すると問題の一覧を確認することができますので、内容を見てから考えたい方はそちらから進んでみてください。(こちらがオススメ)

サーバーがデプロイされると、画面上に Ready! と共に[Open the server terminal in a new window.]というリンクが表示されますので、そちらをクリックしてCLI画面を起動します。

行き詰まったら

次に取るアクションが分からなくなったら、ヒントをうまく活用していきましょう。

終わったら[Check My Solution]で結果を確認

シナリオで求めらている対応が完了したら[Check My Solution]でチェックしましょう。
対応内容が正しければ解決までに掛かった時間などが表示され、同時にサーバーは削除され完了となります。([Check My Solution]でチェックできないシナリオもあります)
また、途中でやむを得ず中断しないといけない場合は通常のOSシャットダウンコマンドでシナリオを終了することも可能です。

実際に試してみる

今回は "Saskatoon": counting IPs.(Level:Easy) にチャレンジしてみます。

※ネタバレ要素を含みますので、自力で解きたい方は読み飛ばしてください

制限時間がありますので先にお題を確認します。
ざっくり要約すると「アクセスログの中で最もリクエストのあったIPアドレスを指定のファイルに書き込んでください」です。

シナリオとしては運用しているWebサーバーなどでよくある話だと思います。
このシナリオで求められている内容は「特定の箇所を抜き出す」「並び替える」「カウントする」あたりの操作が必要であろうと解釈しました。
いくつかのコマンドを実行しファイルに書き出すことができたので、最後に[Check My Solution]で確認して完了です。
対応内容は合っていたようなので、結果が表示されると共にサーバーが自動的にシャットダウンされました。

感想

普段業務で使用しないコマンドを使うきっかけにもなりインフラエンジニアとしてまだまだ伸び代があるなと感じているところです。(前向き)

今回の記事を書くにあたり Easy/Medium/Hard からそれぞれいくつか試しましたが、EasyはシンプルにLinuxの知識が問われる内容でした。
それ以降も基本的にはLinuxの知識を問われる内容ですが、Mediumからはアプリケーションの一般的な知識があると解決の糸口が見つけやすいと感じるものもありました。
Hardに至ってはOSの少し深いところの知識を問われることもあり「え、こんな設定あるの?」という発見がありました。(正直調べながらでないと厳しかったです)

運用業務においてトラブルシュートは必ず通る道だと思いますので、Linuxサーバー運用をされている方は一度ご自身の知識を振り返ってみてはいかがでしょうか。