Slide 1

Slide 1 text

歴代の運営委員と上位入賞者が語る ICTSC攻略 2019/10/25

Slide 2

Slide 2 text

目次 ● 自己紹介 ● 大会概要 ● 大会の変遷 ● マネジメント視点から見た運営 ● 作問者側からの視点 ● 先日行われた1次予選について ● 参加者視点から見た攻略法 ● 参加者攻略ネットワーク編

Slide 3

Slide 3 text

大会概要 トラコンとは 学生が出題するトラブルが起きた環境を 同じ大学に所属する5人以下の学生チームが解決する 学生の学生による学生のためのインフラの大会

Slide 4

Slide 4 text

大会概要 規模感 ● 使用機材:200台 ● VM数:ICTSC2018 本戦 700, ICTSC2019 1次予選 1600 ● 関係者 ○ 20人前後の学生運営委員会 ○ 75~250人前後の学生参加者 ○ 10~20人程度の実行委員会 ○ 場所提供、機材提供、協賛の企業様方 ● 構想半年、現地準備2週間、本番2日、撤収1日

Slide 5

Slide 5 text

大会概要  変遷 ● 大会規模の拡大 ○ 参加者の増加   → 対応事項の増加 ○ 機材の増加    → 電源容量による開催地の制約 ○ VMの増加     → 展開技術の洗練 ○ ルールの変更   → 競技性・公平性の保持 ○ 大会回数の減少  → 予選の開催 ● トラコン予備校の開催

Slide 6

Slide 6 text

大会概要  トラコン予備校とは? ● 2018から開催 ● 予選問題を題材にした教育活動 ● 運営から組織された4人前後のチームが講師として全国の希望す る専門学校・大学に派遣される ● 開催地 例:東京、大阪、福岡、長崎、沖縄 ● 題材 例:Docker、WebRTC、IPv6

Slide 7

Slide 7 text

運営のマネジメント視点 大会を開くには? 様々なものを準備・管理しなければならない

Slide 8

Slide 8 text

運営のマネジメント視点 何を管理するか? ● 運営学生20人            モチベーションの高さは様々 ● 参加者の対応             公平性を保持 ● スケジュール             リスケは効かない ● 機材                 高価なもののレンタルなので・・ ● 会場                 電源系統に注意 ● バックボーン構築           検証に時間が必要 ● 手元環境の構築            大量にあるので物理展開が大変 ● 問題作成・検証・展開・解説      各自の進捗がバラバラ ● 競技ルール・資料           資料にミスが起きがち ● スコアサーバーの開発・運用      開発人員の確保 ● DC作業・搬送             検証環境の構築・会場への搬送 ● 会場提供・機材提供・協賛の企業折衝 コミュニケーション能力必須

Slide 9

Slide 9 text

運営のマネジメント視点 管理担当の決定 ● 運営リーダー     運営学生20人 ● 進行担当     全体スケジュール ● 機材担当       機材 ● 会場担当       会場 ● バックボーン担当   バックボーン構築 ● 手元担当       手元環境の構築 ● 問題担当       問題作成・検証・展開・解説 重いタスクを各担当に割り振り、必要な仕事などを各担当ごとに全てwikiにまとめて継 承出来るようにした 対外への折衝は統一ルール等や継承者を育てることにした           → タスクベースで役割を作るのは、当たり前なのか?

Slide 10

Slide 10 text

運営のマネジメント視点 前は ● 運営リーダー     運営学生20人+難しいこと全部 ● 副リーダー    ふわふわ ● イベントサポート   機材・会場・雑用全部 ● インフラリーダー   バックボーン・手元環境の構築 ● 問題リーダー     問題作成・検証・展開・解説 元々の運営は人材も限られていて規模も小さかったため管理職は少なくても何とか回っ ていた? 人材が限られた学生運営ではタスクベースでの役職作成は難しい タスクを任せられる人間に役職を作り、タスクを任せるマネジメントを行った       → 運営がホワイトであることと大会の質をあげることに貢献

Slide 11

Slide 11 text

作問者側からの視点 @nasu

Slide 12

Slide 12 text

よく聞かれること ● 範囲が広すぎて何を勉強したらいいかわからない ● 問題何がでますか? ● なにやっておけばいいですか? ● 問題難しくありませんか? ● 問題は誰が作ってるんですか? ● なんでこれ満点じゃないんですか?(減点されてるんですか?)

Slide 13

Slide 13 text

どんな感じで問題を作ってるのか ● 前回大会(2018)の本戦では 原則1人1問アイデア出し・構築・問題文作成をしている ● アイデア出しは大体・・・ ● 自分が出したい技術 ● 自分がそのトラブルに出会った ● アイデア出しても検証がうまくいかずに頓挫することもよくある ● バグを踏む ● トラブルが再現しない ● 手を付けていない!

Slide 14

Slide 14 text

問題を作るときの悩み ● どこまで情報を出すか ● 禁則事項が答えに直結しないか ● ヒントを出し過ぎていないか ● これ簡単すぎないかな? ● 大抵の場合は結果的に難しい場合がほとんど ● そんなに全員が全員解けるわけではない ● 難易度・配点調整が難しい ● この難易度でこの配点 高くor 低く ないですか? ● 想定外の解き方への対処

Slide 15

Slide 15 text

実際のVM作りの大変さ ● 用意されたベースイメージから作成 ● トラブルを起こした状態でアーカイブ化する必要がある ● 使うクラウド基盤によってVM・Disk・Switchの定義方法はばらばら ● 予選ではさくらのクラウドを使っているのでTerraformを利用 ● 前回の本戦はn0stackという独自のクラウド基盤を使っていて yamlファイルで定義する

Slide 16

Slide 16 text

さくらのクラウドのTerraform

Slide 17

Slide 17 text

本選で使ったn0stackのyaml

Slide 18

Slide 18 text

修正が発生したときが一番辛い ● 既にアーカイブしたものからの修正が一番辛い ● 修正したと思ったら別のトラブルが多発 ● 再アーカイブ化したらトラブルが起きていない ● ログインができなくなった ● /var/log, historyを消し忘れている ● 結局ベースイメージから作り直したほうが速い場合がある ● 構築メモは残しておこう!(いつVMが消えるか分かりません)

Slide 19

Slide 19 text

採点について ● 予選 ● 全58チーム分 ● 土曜日に実施、その日の夜から日曜にかけて採点、月~火曜に公表 ● 本戦 ● 本戦に出場できるのは15チーム ● 解答が提出され次第随時採点 ● 競技終了後の表彰式までに確定しないといけない ● 約1時間半

Slide 20

Slide 20 text

出題方式と採点基準 ● 出題方式 ● 前回の本選では問題開放方式というものを採用している ● 前提の問題が解けたら次の問題が解けるという方式 ● 得点について ● 基準点(正解とする基準)と満点(100%)が存在する ● 問題ごとに採点基準は設けられており、 トラブルが解決していたら基準点は必ず与えている ● 満点にならない理由は様々 ● 解答の説明が正しくない ● 一部設定が抜けている

Slide 21

Slide 21 text

解答方法 ● 解答方法は報告書形式で提出 ICTSCチームのトラコン太郎です。 〇〇のトラブルについて調べましたので /var/log/**.logから以下のログが見つかりました。 恐らくはXXが原因だと思われます。 以下のコマンドを実行し復旧しましたのでご確認ください。

Slide 22

Slide 22 text

こんな解答はしてほしくない ● 叩いたコマンドをそのまま貼る ● 「なんかトラブル解決しました」 ● 技術の参考ページのURLのみ ● 「https://qiXta.com/XXXXXXXX」

Slide 23

Slide 23 text

先日行われた1次予選について@nasu

Slide 24

Slide 24 text

ICTSC2019 1次予選 概要 ● 8/31(土) オンライン予選 ● 競技時間 13:00 ~ 18:00 ● 全57チーム ● 1チームあたり 28VM, 合計1596VM ● ちなみに去年は49チーム, 1764VM

Slide 25

Slide 25 text

どうやったら1次予選突破できますか ● 満遍なく色んな技術を触れているチームが上位に来る ● 偏りはよくない! ● 上位陣を見ると場数をよく踏んでいる印象がある ● 点数が下の方になっていくとそもそも何をしたらいいのかが分からないって いうのが起きる ● 基本的なところは抑えよう ● /var/log 見る ● 現在の設定内容と構成の把握 ● どのレイヤーでトラブルが起きているか

Slide 26

Slide 26 text

今回の1次予選の問題ジャンル ● Container ● Database ● IPv6 ● Mail ● Packet Filter ● Routing ● Tunneling ● Web

Slide 27

Slide 27 text

一次予選結果

Slide 28

Slide 28 text

参加者から見た攻略法 ① @kanatakita

Slide 29

Slide 29 text

問題例: 問題文 問題文
 Kubernetes クラスタ環境を移行後、Kubernetes上のWordPressにアクセスできなくなりました。 
 原因をつきとめ、修正してください。 
 
 情報
 Kubernetesクラスタの移行手順書は存在しません。アドレスレンジに以下の変更があったことのみ分かっていま す。
 * Kubernete Node Address Range: 172.16.0.0/24 -> 192.168.0.0/24 * Kubernetes Service Address Range : 192.168.0.0/24 -> 10.254.0.0/24 
 
 ゴール
 VNC 踏み台サーバ上のブラウザにて「192.168.0.1:30080」を入力することで、WordPressの画面が表示される 
 
 ICTSC2018 予選: https://blog.icttoracon.net/2018/08/27/ictsc2018-prep01-docker-p2/

Slide 30

Slide 30 text

問題例: 構成図 K8s Master & Node K8s Node K8s Node 192.168.0.0/24 .3 .2 .1 10.254.0.0/24 ClusterIP Range MySQL Pod WordPress Pod kube-dns Pod To: mysql.default.svc.cluster.local:3306 NodePort Service To: 192.168.0.1:30080

Slide 31

Slide 31 text

問題例: トラブルの箇所 K8s Master & Node K8s Node K8s Node 192.168.0.0/24 .3 .2 .1 10.254.0.0/24 ClusterIP Range MySQL Pod WordPress Pod kube-dns Pod To: mysql.default.svc.cluster.local:3306 NodePort Service To: 192.168.0.1:30080 CrashLoopBackOff

Slide 32

Slide 32 text

問題例: 解説・想定解法 1. WordPress PodがCrashLoopBackOffしてることを確認
 ● kubectl get pod 2. WordPress Pod のログ確認
 ● kubectl logs wordpress-xxx
 ⇒ getaddrinfo failed: Temporary failure in name resolution ⇒ 名前解決に失敗
 3. kube-dns Pod のログ確認
 ● kubectl -n kube-system logs kube-dns-xxx ⇒ x509: certificate is valid for 172.16.0.1, 192.168.0.1, not 10.254.0.1 ⇒ 証明書の Subject Alternative Names が誤っている 4. 証明証を再生成して kube-apiserver を再起動 Kubernetesクラスタの移行手順書は存在しません。アドレスレンジに以下の変更が
 あったことのみ分かっています。
 * Kubernete Node Address Range: 172.16.0.0/24 -> 192.168.0.0/24 * Kubernetes Service Address Range: 192.168.0.0/24 -> 10.254.0.0/24 問題文より

Slide 33

Slide 33 text

例年の問題の傾向 ● 運営が興味のある技術に関する問題が出る ● Docker / Kubernetes ● QEMU / KVM / OpenStack ● 運営目線: ● 大会を開くために仮想化基盤を利用 ● 仮想化基盤に興味があるから運営がやりたい ➢ トラブルに当たる → 問題にしよう

Slide 34

Slide 34 text

じゃあ何をどう勉強しとけばいいの? ● サーバ構築をやってみる (例. LAMP, LVS, …) ● やってみた で終わらない ○ なんでこの設定が必要? ● 構築ログを文字でまとめる ○ 頭の中はメモリ、wikiやブログは外部記憶装置 ● もっと楽にするには?を考えてみる ○ 構築が面倒 → プロビジョニングツール (例. Ansible) ○ 物理マシンの用意が面倒 → Virtual Machine (例. KVM) ○ 依存関係の解決が面倒 → コンテナ (例. Docker) ● 基本を抑える ● 資格取得: 取得よりもそれまでに得た知識が財産

Slide 35

Slide 35 text

本番にやること ● Slack 等チャットツールを活用し分担して解く ● 問題が分からなかったら寝かす ● 不明瞭な点は運営に質問しまくる

Slide 36

Slide 36 text

本番にやること ● Slack 等チャットツールを活用し分担して解く ● 問題が分からなかったら寝かす ● 不明瞭な点は運営に質問しまくる

Slide 37

Slide 37 text

本番にやること ● Slack 等チャットツールを活用し分担して解く ● 問題が分からなかったら寝かす ● 不明瞭な点は運営に質問しまくる ● 他の人が解けるかも ● 他の問題がヒントになるかも ● 一日目と二日目の間にみんなで考える ● 切り分けポイントや質問することを考えておく

Slide 38

Slide 38 text

本番にやること ● Slack 等チャットツールを活用し分担して解く ● 問題が分からなかったら寝かす ● 不明瞭な点は運営に質問しまくる

Slide 39

Slide 39 text

懇親会 ● 例年、本戦の1日目と2日目の間にある ● 貴重な出会いの場 ● 同じくらいの年の強い人達がめっちゃ集まってる ● 企業がリクルーティングに来る / ラフにやってることを聞ける ● 次回トラコンの運営になれる! ● 伝えたいこと: 懇親会を楽しむのが一番のトラコン攻略

Slide 40

Slide 40 text

参加者攻略ネットワーク編 @katu7414

Slide 41

Slide 41 text

使用機材から考える攻略 予選 ● Vyosを基本に一部Cisco(CSRかな?)っぽい感じ ● 知識系(IPアドレスの話,光ファイバーの規格の話) ● 実際にconfigを変更する問題とconfigをみて考察する問題半分半分ぐらい 本選 ● Ciscoの物理機材がメイン(1841,1941.892j,2960) ● ここ数回はcisco以外もあるけど毎回出るか?正直わからない。 ● Vyosの問題も予選同様に出る。

Slide 42

Slide 42 text

使用技術から考える攻略 ICTSC7 ● IPv6,BGP,拡張ACL,NAPT,DHCP ICTSC8 ● DHCP,ssh,BGP,ACL,FW(Junos),ストーム制御,NAT-PT,IPv6,IPsec ICTSC9 ● SNMP,ACL,IPv6,VLAN,NAT,BGP,vrf 必須技術はだいたい見えてくる ポイントはCisco機器だけではなくVyosも対応しておくこと

Slide 43

Slide 43 text

当日やることから考える攻略(本選) ● 注意事項をちゃんと読む(やってはいけないことたくさんある) ● 物理図は配布されるので確認する(配線間違ってないかとかも) ● 競技開始と同時にconfigを抜き取って別の場所に保存 ● 問題文を読んでそれぞれの担当問題を作る。またそれぞれの問題のslack のチャンネルを作る ● 私たちのチームは1日目を捨てて論理図作成して頭を整理すること ● 2日目までに家でネットワーク機器を大量展開して完全再現する。そして明 日提出する用の解答を作成→寝る ● (余力があれば)モニター頑張って持っていくと人権あり。あとは貼るタイプ のホワイトボード

Slide 44

Slide 44 text

チーム作りから考える攻略(予選、本選) リーダーやるにあたって大事なこと ● 寝坊しない ● メンバーの得意分野の把握 ● ウザがられるぐらい大会中はコミュニケーションと進捗確認(解けない問題 解いても意味はない) 勉強会の実施(必要な場合) ● 過去問題の再現の実施 ● 予選などの復習 ● 実際に自分たちで問題を作ってみる

Slide 45

Slide 45 text

予選突破するためには ● 過去問の研究と再現(必須) ● 上位入賞チームはほとんど過去からずっと参加しているチーム(例外あり) ● 小さいICTSCを学内で開催してみても面白い。これは友達同士でもいいし 社会人がやってもかなり勉強になる ● よく使われる技術は定義からちゃんと勉強しておく ● 使えそうな技術書は集めておく(ex マスタリングTCP/IP)

Slide 46

Slide 46 text

最後に・・・ 運営やりたい人いますか?