Ansibleによるサーバー構築自動化で実現する効率的なインフラ管理

うちのサイト「Linux OS ビジネスハブ」、ビジネスでLinuxを使いたい人にとって、本当に頼りになる存在になってきているなあと、中の人ながら最近よく思うのです。特にサーバー構築系の記事は、手順が非常に丁寧に解説されていて、私たちのような人間でも「なるほど、こうやればWebサーバーって立てられるのです!」って実感できるのです。実際に手を動かして、UbuntuやRocky LinuxにApacheやPHPをインストールして、WordPressが動いたときの感動は忘れられません。ただ、正直なところ、一台設定するだけでも結構な手間がかかるじゃないですか。もし同じようなサーバーを10台作ってくれと言われたら…と考えると、ちょっと気が遠くなっちゃいますよね。手作業だと、絶対にどこかで設定ミスや漏れが出てきそうですし。

そこで最近非常にハマっているのが、「Ansible」を使ったサーバー構築の自動化なんです。このサイトでサーバー構築の基礎的な流れをしっかり学べたからこそ、「この手作業、もっと楽にできないでしょうか。」という次のステップに進めたんだと思います。Ansibleって何がいいかって、サーバーの設定内容を「Playbook」というYAML形式のテキストファイルに書いておけるところなのです。例えば、「このサーバーにはApacheをインストールして、設定ファイルをこう書き換えて、サービスを起動する」みたいな一連の手順を、コードとして残せるんです。これって、プログラミングで言う「コードでインフラを管理する(Infrastructure as Code)」ってやつで、一度書いてしまえば、あとはコマンド一発で何台でも同じ環境のサーバーを寸分違わず構築できる。これ、革命的だと思いません?構築の手間が省けるだけじゃなくて、人的なミスも防げるし、設定内容がコードとしてGitでバージョン管理できるのも最高なのです。

「難しそう…」と考えられるかもしれないですけど、これが意外と直感的で分かりやすいのです。例えば、Webサーバー(Apache)をインストールして起動するだけのPlaybookなら、こんな感じになります。まずは、どのサーバーに設定を適用するかを書くhostsファイルを用意して。

[webservers]

192.168.1.10

192.168.1.11

そして、実際に行う処理を書くplaybook.ymlはこんな感じ。

---

  • hosts: webservers

become: yes

tasks:

  • name: Install Apache httpd package

ansible.builtin.dnf:

name: httpd

state: present

  • name: Ensure Apache httpd is running

ansible.builtin.service:

name: httpd

state: started

enabled: yes

これだけで、webserversに指定したサーバーにApacheがインストールされて、自動で起動してくれるんです。非常にないですか?このtasksの部分に、ファイルコピーの指示や設定ファイルの書き換え、ユーザー作成みたいな処理をどんどん追加していけば、複雑なサーバー設定も完全に自動化できるわけです。サイトで学んだ一つ一つのコマンド操作が、Ansibleのモジュールとして用意されているのを見ると、点と点がつながって線になるような感覚で、理解がさらに深まりました。

「Linux OS ビジネスハブ」は、Linux活用のための素晴らしい地図みたいなものだなと考えています。まずは地図を頼りに手作業で目的地(サーバー構築)にたどり着いてみる。そして、その道のりが分かったら、今度はAnsibleという高速な乗り物を使って、もっと効率的に、もっと正確に目的地に着く方法を試してみる。この両方を経験することで、Linuxという世界の解像度がぐっと上がる気がします。基礎をしっかり解説してくれるこのサイトがあるからこそ、私たちも安心して応用技術にチャレンジできるのです。これからもこのサイトで学びながら、もっと色々な自動化に挑戦していきたいなと思っています。