AnsibleとAWSでミニミニハッカソンしてみた


AnsibleとAWSを使ったミニミニハッカソン的なものを仲間内(チーム)でやってみたので、どんな感じだったか書いてみようと思います。

なんでやろうとしたの?

年度も変わり新チーム体制となったのですが、新チーム内には元々開発がメインで運用とかをやったことない人が何人かいました。
今後も自動化をしていく予定なのですが、今の各々のスキルで何ができるか?どこまでできるか?誰が何が得意なのか?を知るために身内で企画したところチーム全員+α(違うチームや他部署)でやれることになりました。

参加してくれた人

  • 若手(4年目位) x2
  • 役職クラスのおじさん達 x2
  • 新チームリーダー x1
  • もふおじさん(インフラおじさん) x1

目的

自動化システムおよび自動化対象の設計・実装および運用を一通り(できるところまで)経験してもらってIaCを体感してもらう。
IaCを体感してもらうことで、どういうツールや仕組みが必要で実装のやり方や運用の考え方、IaCの必要性を分かってもらう。
また、新チーム体制になったので、各々のスキルやノウハウを共有したりチームビルディングにつなげる。
後は、現段階のスキルでどこまで出来るか挑戦してみる。

事前にやったこと

何を作るか?

まずは、当日「どういう目的で何を作るか?」を事前に決めました。
目的は上に書いてある通りで、作るシステムはAWSに以下のものを作ることにしました。

オンプレに自動化システムがある想定で、インターネットを経由してAWSにネットワーク(VPC)とサーバを自動で構築してみることにしました。

役割分担

役割は以下のように分けました。

  • 開発・自動化環境を設計・構築するチーム
    • 役職ついてるおじさん + チームリーダーが担当
      • 若手の子からの提案で、おじさんやリーダーはほぼ調整業務ばかりなので実際に構築してみるのがいいんじゃないか?というのをおじさん達も受け入れてくれた。
  • 自動化対象環境を設計・構築するチーム
    • 若手 + 役職おじさんが担当
      • AWSに詳しい若手となんでもやる若手と技術めっちゃ好き役職おじさん(Ansible経験あり)に担当してもらった
  • ヘルプ・タイムキーパー
    • もふおじさんが担当
      • 何か困ったこととかハマった時に助ける人
      • なんでも出来るわけじゃないので頑張るマン

時間割

時間割はこんな感じにしました。

時間 内容
9:50 現地集合
10:00 – 10:15 準備&当日やることのおさらい
10:15 – 12:00 午前中の作業を担当毎に分かれて実施
12:00 – 13:00 お昼休憩
13:00 – 15:00 午後の作業を担当毎に分かれて実施
15:00 – 15:30 一旦、現状を共有
15:30 – 17:30 作ったシステムを組み合わせて実際に運用を体感してみる
17:30 – 18:00 振り返り

ミニミニハッカソンをするために必要だったもの

  • AWSのアカウント
    • これはどうしたもんかと思ったら若手の子がアカウント持ってないから作りたいということで協力してもらいました
    • かかった費用は後日割り勘にすることにしました
    • 構築に使うアカウントは当日のみIAMで払い出してもらいました
  • 場所
    • 場所は スペイシー で貸し会議室(個室)を検索しました
    • wifiありの場所を探しました
    • 日曜の10時から18時で17280円でした
  • 作業ノートパソコン
  • 食費・場所代金
  • 電源タップ延長コード
  • 各々のやる気
    • これは大丈夫でした
  • 現地にあったもの
    • プロジェクター
    • ホワイトボード
    • 机・椅子

ミニミニハッカソン当日

現地集合

場所は秋葉原の貸し会議室を借りました。

https://www.spacee.jp/listings/2360

ちょっと分かりにくい場所だったので、一人道に迷ってしまいました。。。

午前中

ちょっと遅れて始めましたが午前中に事前に決めたことのおさらいと役割分担の再確認をした後に、それぞれの役割に取り掛かってもらいました。

「自動化対象環境」を担当してくれてたチームは順調に進んでいて午前中にはAWS上に以下のようなシステムを自動で作ってみようという話になりました。

一方、「開発・自動化環境」を担当してくれてたチームはと言うと

  • 事前に作ってきたPlaybook(VPC作るやつ)が、(おそらく)IAMロール周りが原因で動かない!!
  • ロールを今から整理するのは時間がかかるので、ひとまずVPCは手で作ろう
  • Amazon Linuxにdocker-composeうまく入らない;;
  • インスタンスのサイズが小さすぎてAWXインストールにハマる

などなどハマっていたのでヘルプマンの自分と一緒にやっていくことにしました。
一通り原因調査してAWXのインストール手前まで解決したので、後はAWXとGitLabの構築をお願いし自分はDev環境を構築するように役割を分けました。
(Devが無いと「自動化対象環境」を担当している方が検証などの手が動かせなかったので)

昼休憩

ちょっと時間オーバーしましたが、なんとか自動化開発環境が整ったのでお昼休憩へ!

やっぱり休日ということもあり秋葉原の飯屋はどこも混雑していて色々ウロウロした結果ラーメン食べて腹ごしらえ。

午後

午後からは、それぞれの役割に分かれて基本もくもくする感じで進んでいました。
若い子達は「あーでもない」「こーでもない」「こうやったら動くんじゃね?」「うごかねーなー」「あ、動いたゾ!!」という感じに良い意味で勝手に前に進んでくれてました 🙂
後、Ansibleに詳しい子がいたのでAWSに詳しい子と協力してもくもくしていたため自分のヘルプもほぼ必要なく進めてくれていました。

どちらかというとおじさんチームが結構ハマったので、そっちをメインで助けてました。
コンテナやCI環境を作ったり、CIを実際に動かしてみたりなどなど。

途中で現状共有をしてAWXとGitLabを「自動化対象環境」を担当するチームに引き渡して構築の自動化をやってもらいました。

振り返り

一通り作業を終えてから、参加してくれた人たちに感想や意見を聞いてみました。(自分含む)

  • Amazon Linuxに慣れていなかったので色々ハマった、RHELとかCentOSの方がよかったかもしれない
  • Playbook作ってAWSを操作するのは簡単だった(yamlはとっつきやすかった)
  • Ansible/GitLabの使い方のイメージはついた
  • AWXの構成イメージがよくわからなかった(コンテナ部分)
  • 今までは環境構築までしかしていなかったので、AWSではCloudFormationのみしか使ったことがなくAnsibleを使うという発想は無かった
  • Ansibleは簡単だけど、AWSの全サービスをカバーできていないためCloudFormationなどと使い分ける必要があると思った
  • AWSの環境を作るのであればCloudFormationの方がいいと思う
  • CI/CDのイメージはつかめた
  • 自動化するシステムを作るのは大変だということが分かった
  • Ansibleで躓いたことはなかった
  • AWSを使う場合のキー(アクセスやシークレット)をどう管理するか考える必要がある

などなど。
確かに調整が甘かったので「何のOSを使うか?」とかは事前に決めてなくて、当日インスタンスを立ち上げてもらったらAmazon Linuxだったのですが、(検証したことないけど)大丈夫だろうと思って進めたら結構ハマったりしました。(調整が甘かった)
Ansibleを初めて使う人たちがほとんどだったので大丈夫かな?と思っていましたが、「Playbookだと簡単にできた」とか「そこまで難しく無かった」という感じでとっつきやすかったようです。
また、「自動化ツールも得意・不得意があるので使い分けが必要だよね」という意見も「確かに」とみんな頷いて、今後の棲み分け(適材適所)も考える必要が出てきました。
後はハッカソンと言っておきながら最終的にはもくもく会になっていた感じですかねw

やってみて

当初の目的だった

  • IaCを体感してもらう
  • ツールの使い方や仕組みを理解してもらう
  • ノウハウの共有

は出来てよかったと思います。
通常業務を通じて教育するとなると情報が断片的になって効率が悪かったりする時がありますが、今回初めて1日がっつりチームでやったことでノウハウの共有やゴールのイメージが効率よくできたと思います。(モブプロとかこんな感じなのかな)

今後は、Ansibleや自動化をどうやって周りを巻き込んでやっていくか?などを考えていく必要があると思っているので今回のフィードバックは「今後、起こるであろう課題」とかも含んでいてありがたかったです。
今後のモチベにも繋がりました٩( ‘ω’ )و
カイゼンして越境だーーー!

後はみんな協力的だったので、とてもありがたかったです🙏

余談

後日、AWSの料金を聞いたら1ドル位だったらしいです。

One Response

  1. アバター
    日常系インフラ自動化もふもふおじさん 2023年11月30日

Leave a Reply

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください