ブロックチェーン・AI・システム開発の株式会社INDETAIL

Ansibleでサーバ構築してみよう

2014.05.29
tacck

5月ですが、札幌は暖かくなったり寒くなったりと、なかなか気温が安定しない日々です。
早く暖かくなって、ビアガーデンを楽しみたいtacckです。

気温は安定しませんが、開発にあたって使用するサーバ環境は、安定したものにしたいですよね。
今回は、手軽にサーバ構築手順を作れる構成管理ツールのうち、個人的に推しているAnsibleについての紹介をしてみたいと思います。

Ansibleの簡単な特徴

まず、Ansibleですが、これはChefやPuppetと同様な構成管理ツールの一種です。

これらのツールと比較すると、

  1. 開発言語がPython (Chef、PuppetはRuby)
  2. 設定ファイルがYAMLという開発言語から独立した形式
  3. 構築したいターゲットホストに対してAnsibleインストールが不要

といったところが特徴として挙げられると思います。

また、構成管理ツールの特徴である「冪等性」も持っており、何度実行しても常に同じ状態を保つことができるようになっています。

インストール

では、Ansibleをインストールしてみましょう。

特徴に書いた通り、Ansibleはターゲットホストではなく、操作を実行するマシンにインストールします。
実行マシンのOSによって入れ方は色々あり、オフィシャルページにも手順の解説があります。

一番簡単なのは、一般的なPythonのモジュール管理と同様にpipを使ったものでしょう。

Macであれば、私の前回記事ようにHomebrewを使うことでも簡単にインストールできます。

私は実行マシンにMacBook Air(OS X 10.9.3)を使用していますので、Homebrewを使っています。
インストール結果は、下記の様になります。

以降のコマンド出力結果は、すべてこのマシン上でのものとなります。

Ansibleの実行

今回は、Ansibileを使いVagrant上のCentOS 6.5へApache HTTPDをインストールしてみましょう。

各種準備

実際にAndibleを使うために、準備を行ないます。

まずはVagrantのBoxを準備します。
(Vagrant自体は、1.6.xが別途インストール済みの前提です。)

今回は、Vagrantbox.esから「CentOS 6.5 x86_64」を選択しました。

適当なディレクトリに、下記のVagrantfileファイルを作成します。

次に、同じディレクトリにvagrant.ymlファイルを作成します。

同じく、下記内容のhostsファイルも、同じディレクトリに作成します。

最後に、動作確認用として、簡単なHTMLファイルを作成しましょう。
今回は、同じディレクトリに下記内容のindex.htmlを配置しました。

Vagrant起動

まずは、Vagrantを起動しましょう。

この仮想環境でHTTPDが動いていないことを確認します。
設定に書いたように、localhostの8000番ポートへ接続すれば、Vagrant内の80番ポートに繋がります。

上記のとおり接続失敗したので、HTTPDはまだ動いていませんね。

AnsibleでHTTPDインストールと起動

では、Ansibleを実行して、HTTPDのインストールと起動を行なってみましょう。

ここでの注意点として、過去にVagrantへSSH接続したことがある場合、~/.ssh/known_hostsファイルにポート番号2222の鍵情報が残っていて接続できない場合がある、ということです。
そのため、次の操作の前にknown_hostsから該当エントリを削除しておくことをお勧めします。

では再び、HTTPDが起動しているか確認します。

今度は応答があり、自分で作ったindex.htmlの内容が表示されましたね。

もっと便利に

Vagrantはvagrant up時に一緒にAnsibleを起動してくれる機能(provision)を持っています。

Vagrantfileを下記のように修正してみましょう。

では、環境をリセットして、再度Vagrantを起動してみます。

config.vm.provision部分に"ansible"を指定することで、vagrant upと同時にAndible実行まで出来てしまいました。
とても便利ですね。

もう一度、HTTPDが起動しているか確認してみましょう。

ちゃんと起動できています。

実際のホストで使用するためには、対象のホストに事前にSSH公開鍵を保存しておくなどの準備が必要ですが、ansible-playbookコマンドで簡単に環境構築できることは変わりません。

Vagrantの仮想環境で一通り確認
 ↓
実際のホストへ反映

ということができるので、非常に気軽にサーバ環境構築に取り組むことができるようになります。
みなさんも、是非Ansibleにチャレンジしてみてください。

参考リンク

tacck Takuya KIHARA

エンジニア (モバイルアプリ、フロントエンド、バックエンド、インフラ) 得意なことは、領域をまたいで考え、開発すること。 ブログでは、主にAnsible、Docker、Raspberry Piのことを書いています。 好きなフィギュアスケートの技は、スプレッド・イーグルです。

「いいね」ボタンを押すと、最新情報をすぐに確認できます。