kyutaro_kyutaroの日記

福岡でPHP使ってます(LaravelとかECCUBEとかWordpressとかあたりを諸々)。よろしくお願いします。

構成管理ツールど素人がAnsibleを使い感動した話

はじめに

 諸々の都合上、サーバ構築などもやることが多いのですが、 最近、サーバ環境の自動構築などをやってくれる構成管理ツールなるものがあることを知りました。
 これは、そんな構成管理ツールを知ったど素人がそのツールの一つであるAnsibleを使い、 感動するまでの小話です。

そもそも構成管理ツールとは?

 当たり前の人にとっては当たり前なのかもしれませんが、意外と知らない方がいるのではないかと思います(私とか)。
 構成管理ツールというのは環境構築などの作業を自動化してくれるツールです。詳しく調べたわけではないので完全に私見ですが、今まで手作業やシェルスクリプトでやっていた環境構築をもっと楽にしようという背景で生まれたのだと思います。
 とはいえ自動化といっても画面でポチポチしたりして環境構築、というわけではなく、yamlファイル等にミドルウェアのインストール指定など環境構築のための記載をする必要があります(少なくともAnsibleでは)。
 それでも、これまでより労力をかけずして環境構築が出来るので、流行ってきたのだと思います。

使うまでの経緯など

 キッカケは単純です。つい先日、とあるエンジニアさんから構成管理ツールなるものがあることを教えてもらったからです。
 それまでは、サーバの環境構築などを手順書などに頼って一つずつ手作業でやっていました。が、構成管理ツールを上手く使えばこれらの作業を自動化出来るというので、使ってみようということになった、という話です。

まずはどの構成管理ツールを使うかという話 → Ansibleが使いやすいのでは

 ど素人の私にとってまず何を使うべきかの選定から入りました。そもそも、構成管理ツールといっても一つしかないわけではなく、

  1. Puppet
  2. Chef
  3. Fabric
  4. Ansible
  5. Itamae

など様々な種類があります。
 そんな中、「インフラ学習ツールとしてのAnsible」や「[構成管理ツール][プロビジョニング]chef,puppet,itamae,ansibleらあるけどメリットデメリットまとめてみた」などのサイト様を覗いてみると、Ansibleが学習コストも低く、使いやすいらしいということが分かりました。そういうわけで、先ずはとっかかりとしてシンプルであろうAnsibleを使うことにしました。

実際にAnsibleで環境構築してみた

 細かな環境構築の話などはここでは本題から外れるので置いておくとしますが、Ansibleで環境構築をするにあたって下記記事を参考にさせていただきました。

 ちなみに、vagrantを使っております。vagrantを使ったことがあるのであれば、割と簡単にいくと思います。

実際にAnsibleを使ってみて

感動した!

 お世辞でも何でもないです。

だけではなく、

  • DBユーザーの作成
  • confファイルの設定、phpMyAdminの設定

などの諸々の設定もyamlファイルに記載すれば全てやってくれるのです。 環境を立ち上げればもうPHPを動かすことは出来るし、phpMyAdminだって見ることが出来る…… 技術関連で凄いなと思うことはよくありますが、構成管理ツールはそれを通り越して「感動した!」レベルでした。

最後に

AnsibleにはRolesという機能もあります

 一度Ansibleで環境構築出来たなら、今度はRolesという機能も活用してみてください。
 下記サイト様などをご覧いただければ、大体どういうものか、どう便利なのか分かるかと思います。

RolesでAnsibleのPlaybookを整理してみよう

今回作ったansible関連ファイルなどをgithubにあげてます

 今回ローカル環境構築用に作ったものは、githubに上げていますので、もし良かったらご覧になってみてください。

MyAnsibleレポジトリ