さくらのvpsにansibleでowncloud構築

こんにちは 第2回はインフラ担当のあすてるが担当します。

今回はansibleでowncloudサーバを構築です。
その前にansibleとowndloudについて少し紹介します。

ansibleとは

今回は構成管理ツールと呼ばれるansibleを使って構築したいと思います。
pythonで書かかれたエージェントがいらないツールとなっています。
簡単にいうと構築する際に書くシェルスクリプトのようなものです。

ansibleモジュール

標準モジュールといわれるものがあり公式が提供しています。
ファイルをコピーしたりyumコマンドやaptコマンドを使用する際に使います。

vimをyumインストールする際には

1
- yum: name=vim

と書くだけでインストールすることができます。
モジュールを使用することにより冪等性が担保されます。
もう一度動作した場合は既にインストールされているのでスキップされます。

複数台に同時に実行可能

ansibleはサーバを指定して実行することが可能です。
またそれは1台だけではなく数十台同時に実行することができます。
今回のサンプルコードにはhostという名前でファイルを作成し、一台のサーバのみしか書いていませんが

1
2
[api_server]
192.168.1.[1:20]

と書くことにより平行して複数サーバを構築することができます。

気を付けること

一番気を付けることは冪等性です。
標準モジュールにはshellやcommandといったものがあるので全てshellモジュールで書くことも可能です。
しかしそれでは冪等性が失われる場合があるので注意しましょう。
echo hogehoge >> /etc/piyo/foo.conf などを実行した場合どうなるでしょうか?

初期構築時は問題ないかもしれませんが2回実行した場合、foo.confにはhogehogeが2つ書かれてしまいます。
標準モジュールはたくさんありますがよく使うものは限定されていきますので出来るだけモジュールを使用しましょう。

ansible-playbookを実行した際
okかchangedという2種類のどちらかが基本的に表示されます。

okの場合、既にインストールされていたり処理が実行済みの場合です。
逆にchangedは変更があった際に実行されます。
ansibleのコツは2回目に流した際にchangedをなるべく出さないことですね。


owncloudとは

オンラインストレージサービスを自分のサーバで構築できるオープンソースソフトです。
自前dropboxとよくいわれているみたいです。
webサーバ上でphpで動作します。


サンプルコード

今回はowncloudということで
nginx + php-fpm + mysql という構成で構築します。

初期設定として鍵認証でsshできるようにしてsudo権限がある、
もしくはrootになってローカルにansibleを流す様にすると簡単に実行できると思います。
OSはcentos6を想定しています。

まだ改善の余地があるかと思いますがサンプルコードはこちらです。

ansible-playbookを実行し全部が流し終わると http://hostip/owncloud/ にアクセスしてowncloud初期設定ができると思います。

以上、あすてるでした。
次回も乞うご期待!