CentOS7 EOLに伴うサーバーのIaC化挑戦記 ~Ansibleの導入とチームでの成長~

みなさんお久しぶりです。技術本部インフラストラクチャーDivの中嶋です。
最近はめっきりDeadlockという開発中のゲームにハマっています。

さて、今回私が執筆する内容はCentOS7のEOLを目前に、私たちのチームでオンプレミスサーバーのIaC(Infrastructure as Code)化に取り組んだ話となります。
特に、Ansibleを使ったサーバー構築の自動化にチャレンジすることとなり、その過程で多くの議論と学びが生まれました。
今回は、その経験と苦労、そしてAnsibleを活用して得た成果についてお話させていただきます!

プロジェクト背景とAnsible化の理由

CentOS7のEOLにより、サーバーのリプレイスが急務となりました。
私たちインフラチームが管理していたサーバーは、本番・テスト系のDNSやNTP、Baculaサーバー、メール関連サーバーなど多岐にわたります。
これらのサーバーの手作業による再構築は、膨大な時間と労力を必要とします。
今後のために、AnsibleによるIaC化を選択しました。
Ansibleは一度セットアップすれば、次回以降のサーバー構築が非常にスムーズになるため、私たちはこの機会をAnsibleの導入に活かすことにしました。

Ansible初心者が挑戦したこと

私自身、Ansibleを使うのは今回が初めてでした。
これまでに勉強会などで軽く触った経験はありましたが、本格的にコードを書くのはこのプロジェクトが初めてでした。
Ansibleのベストプラクティスやフォルダ構成を参考にしながら、試行錯誤を繰り返しました。

まず手を付けたのはテスト環境のDNSサーバーのAnsible化でした。
しかし、過去に在籍していたメンバーが構築したサーバであり、当時の管理体制上、構築をはじめとした資料は何も残っていませんでした。
そのため、ネットワークの仕様や環境の詳細が不明瞭で、最初の一歩を踏み出すのに時間がかかりました。

そんな中でも、Ansibleの構成や内容においては、チームでの議論が非常に有効でした。
例えば、Ansibleのフォルダ構成について「ベストプラクティスに従いすぎると複雑になりすぎる」という意見も出ました。
結果、シンプルで管理しやすいフォルダ構成を採用し、複雑化を避ける方向に落ち着きました。

苦労した点

Ansibleを使い始めた当初は、スムーズに進むことはありませんでした。
まず、Ansible特有のYAML形式の記述や、構成の考え方に慣れるのが大変でした。
また、初めての実装ということもあり、チーム内での認識合わせに多くの時間を費やしました。
フォルダ構成や役割分担、Ansibleのベストプラクティスに基づいた実装方法など、議論が絶えませんでした。

初期段階で議論が活発に行われたおかげで、2回目以降の実装はスムーズに進むようになりました。
最初に着手したDNSサーバのコード化が完了した後は、同様のテンプレートを用いてNTPやメールサーバーのIaC化が迅速に進みました。
初期の議論と試行錯誤のおかげで、コードの再利用性が高まり、効率が格段に向上しました。

結果と今後の展望

現時点で、今回のプロジェクトで移行したサーバーの100%をAnsible化することに成功しています。
一部のサーバー、特に「秘伝のサーバー」と呼ばれるような古いシステムに関しては構築資料も乏しく、完全なコード化は困難でした。
しかし、綿密に調査を進め、なんとかGitでの管理やAnsibleを経由した設定変更を通じて運用が改善されつつあります。

Ansible化を進めることで、私自身もAnsibleの理解を深めることができましたし、チーム全体での知識共有が促進されました。
今回のプロジェクトで得た知見やテンプレートは、今後の運用や新しいプロジェクトでも役立つと確信しています。

また、コード化することによる安心感も大きな収穫です。
今後、他のメンバーがサーバーを触る際にも、コードを読むだけで理解できる状態が整ったため、将来の保守性が向上しました。

最後に

今回のAnsible化プロジェクトは、単にサーバー構築の自動化をするだけでなく、チームとしての成長や知識の共有にも大きく貢献しました。
最初は議論や試行錯誤の連続でしたが、それが結果的にチーム全体のスキルアップと効率化につながりました。
IaC化を進めたいと考えている方々にとって、Ansibleの導入は少々敷居が高いと感じるかもしれませんが、チームで議論しながら進めることで、確実に成果が得られると実感しています。

今後は複雑なサーバーやシステムにもAnsibleを適用し、さらなる自動化と効率化を目指していきたいと思います。
みなさまもよきAnsibleライフをお過ごしください!