SlideShare a Scribd company logo
シンプルなシステム構成フレームワーク
        alnair
お前、誰よ
●   naoina
●   kyoto.py 主催
WEBサービス開発で
●
    デプロイサーバーの環境構築を手動でする
    –   今の設定がどうなっているか分からない
    –   2台目以降に同じ環境を構築するのが面倒
    –   設定が別管理になる
解決方法案
●
    あきらめる
●   Chefを使う
●   Puppetを使う
●   Kokkiを使う
解決方法案
●
    あきらめる → 試合終了
●   Chefを使う
●   Puppetを使う
●   Kokkiを使う
解決方法案
●
    あきらめる → 試合終了
●   Chefを使う → Ruby製、サーバーが必要
●   Puppetを使う
●   Kokkiを使う
解決方法案
●
    あきらめる → 試合終了
●   Chefを使う → Ruby製、サーバーが必要
●   Puppetを使う → 上記 + DSL
●   Kokkiを使う
解決方法案
●
    あきらめる → 試合終了
●   Chefを使う → Ruby製、サーバーが必要
●   Puppetを使う → 上記 + DSL
●   Kokkiを使う → サーバー上で実行
alnair
alnairとは
●
    システム構成フレームワーク
    –   サーバー上で実行する必要のないKokki
●   Python製
●   CLIとライブラリの両方提供
    –   Fabricなどと組み合わせて使うことができる
https://github.com/naoina/alnair
使い方
●
    インストール
●
    テンプレート作成
●
    パッケージインストールコマンドの設定
●
    レシピの作成
●
    実際にサーバーをセットアップ
インストール

% sudo pip install -U alnair

 or

% sudo easy_install -U alnair
テンプレート作成

 % alnair generate template archlinux

  or

 % alnair g template archlinux




現在のディレクトリに recipes/archlinux/common.py が作成される
パッケージインストールコマンドの
       設定

% vim recipes/archlinux/common.py



# common.py
install_command = 'pacman -Sy --noconfirm'
レシピの作成

% alnair g recipe python



recipes/archlinux/python.py が作成される
実際にサーバーをセットアップ

% alnair setup archlinux python



ホストを聞かれるのでデプロイ先のホストを入力してGo!
デモ
ライブラリとして使う

from alnair import Distribution

distname = 'archlinux'
with Distribution(distname) as dist:
    dist.setup('python')
デモ
設定ファイルだけのデプロイ
recipes/archlinux/mysql.py

from alnair import Package

mysql = Package()

mysql.setup.config('/etc/my.cnf').contents("""
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
""")
設定ファイルだけのデプロイ

% alnair config archlinux mysql


 or

from alnair import Distribution

distname = 'archlinux'
with Distribution(distname) as dist:
    dist.config('mysql')
セットアップ後のコマンド実行
recipes/archlinux/mysql.py

from alnair import Package, Command

mysql = Package()

mysql.setup.after = Command(). 
    sudo(r'/etc/rc.d/mysqld start'). 
    sudo(r'/etc/rc.d/mysqld stop')
セットアップ後のコマンド実行

% alnair setup archlinux mysql


 or

from alnair import Distribution

distname = 'archlinux'
with Distribution(distname) as dist:
    dist.setup('mysql')
レシピファイル
●   ただのPythonスクリプト
    –   Pythonで出来ることはなんでも書ける
(まだ)できないこと
●
    依存関係の解決
●
    共通処理の定義
向かないこと
●
    数十〜数百台のサーバーのセットアップ
まとめ
●   サーバーにRubyを入れたくないときにalnair
●   ChefやPuppetサーバーを立てたくない程度の
    小規模サーバー群のセットアップにalnair
●   Pythonですべてやってしまいたいときにalnair
質問?

https://github.com/naoina/alnair
ありがとうございました

More Related Content

シンプルなシステム構成フレームワークalnair