狠狠撸
Submit Search
anybuild/Hosting casual #1
?
3 likes
?
2,025 views
Ryo Kuroda
Follow
1 of 25
Download now
Download to read offline
More Related Content
anybuild/Hosting casual #1
1.
共用ホスティングでのLL管理 Ryo Kuroda @lamanotrama
2.
所属 GMOペパボ 技術基盤チーム
3.
経歴 ? ~30才 郵便局の窓口に座ってた ?
京都のWebホスティング会社で4年弱 ? ペパボで5年弱 ? ヘテムル ? Sqale ? 他いろいろ
4.
本題 LL(lightweight language)をそこそこ効率的に監理、運用でき るツールを作りました。
5.
http://heteml.jp/ 共用Webホスティングサービス ApacheのVirtual Host 動的コンテンツはCGI
6.
求められる仕様 ! 契約して直ぐに好きな言語で色々さくっと動く環境 ? 色々使える ? PHP、Perl、Ruby、Pyhton ?
それぞれ複数のバージョンから選択できる ? モジュール(ライブラリ)が最初からそれなりに っている ? お客んさんは中でコンパイルできないしね !
7.
現場の声 ? 大量のRPMつくるのは辛い ? ビルド、インストールに時間かかるの辛い ?
リポジトリ(yum|puppet)が太るの辛い ? サーバ毎の仕様差を生まないようにするには… ? 履歴監理… ! そこで、
8.
https://github.com/paperboy-heteml/anybuild anybuild
9.
xbuild使って設定ファイルベース でばんばんインストール出来る君 ! + 差分同期スクリプト
10.
xbuildとは モヒカン界の至宝 @tagomoris 氏作 https://github.com/tagomoris/xbuild ! hoge-install
<version> <install_path> ! な感じで、本番環境のLLをセットアップできるやつ !
11.
anybuild . |-- README.md |-- any-install |--
any-perl-install |-- any-php-install |-- any-python-install |-- any-ruby-install |-- functions `-- sync-lang
12.
anybuild - con?guration /etc/anybuild/ "##
perl $?? "## cpanfile $?? &## versions.txt "## php $?? "## definitions $?? $?? "## 5.3.19-heteml $?? $?? &## 5.4.11-heteml $?? "## pearfile $?? "## peclfile $?? &## versions.txt "## python "## ruby $?? "## Gemfile $?? &## versions.txt &## sync-lang
13.
./any-install! ビルドサーバ上で実行 1. 各言語のversions.txtの各行をxbuildの引 数に渡して、ビルドしまくる 2. cpan?leとかGem?leとか読んでモジュー ルをインストールしまくる
14.
./sync-lang push|pull 1. any-install実行前にビルド済みデータをrsyncサーバ からローカルにpull 2.
any-installで(差分)ビルド、インストールしたものを rsyncサーバにpush 3. 本番サーバで実行してrsyncサーバからデータをpull
15.
こんな感じ +----------+ +--------------+ LL
runtimes +--------------+----------+ | build VM | built LL runtimes | | for Role A | Ahost001 | Ahost002 | | | <--------------------- | | -------------> | | | +----------+ | | +--------------+----------+ | | lang server | LL runtimes ^ | incremental update | (rsyncd) | for Role A | +-------------------------------> | | ---------------------------------+ | | | | | | -+ +--------------+ | | | | LL runtimes | LL runtimes | for Role B | for Role B v v +--------------+---------------+ | Bhost001 | Bhost002 | +--------------+---------------+
16.
Vagrant + Puppet
+ anybuild
17.
anybuildの設定、依存RPM (*-devel)等はpuppetで管理
18.
Vagrantのpuppet provisionerでもろもろ完了 # 手元で [@mac puppet]#
vi roles/web/files/etc/anybuild/perl/cpanfile [@mac puppet]# git commit -m ‘お客さんの要望でHoge.pmを追加’ [@mac puppet]# VM_ROLE=web vagrant provision cent6_anybuild ! # 本番サーバ全台で [@web001 ~]# sudo /usr/local/anybuild/sync-lang pull
19.
現場の声(再掲) ? 大量のRPMつくるのは辛い ? ビルド、インストールに時間かかるの辛い ?
リポジトリ(yum|puppet)が太るの辛い ? サーバ毎の仕様差を生まないようにするには… ? 履歴監理… !
20.
現場の声(再掲) ? 大量のRPMつくらずrsyncでファイル同期するだけ ? ビルド、インストールに時間かかるの辛い ?
リポジトリ(yum|puppet)が太るの辛い ? サーバ毎の仕様差を生まないようにするには… ? 履歴監理… !
21.
現場の声(再掲) ? 大量のRPMつくらずrsyncでファイル同期するだけ ? ビルド、インストールはビルドサーバで一回だけ ?
リポジトリ(yum|puppet)が太るの辛い ? サーバ毎の仕様差を生まないようにするには… ? 履歴監理… !
22.
現場の声(再掲) ? 大量のRPMつくらずrsyncでファイル同期するだけ ? ビルド、インストールはビルドサーバで一回だけ ?
リポジトリ(puppet)にはanybuildの設定だけ ? サーバ毎の仕様差を生まないようにするには… ? 履歴監理… !
23.
現場の声(再掲) ? 大量のRPMつくらずrsyncでファイル同期するだけ ? ビルド、インストールはビルドサーバで一回だけ ?
リポジトリ(puppet)にはanybuildの設定だけ ? サーバの仕様はsync-lang pullで う ? 履歴監理… !
24.
現場の声(再掲) ? 大量のRPMつくらずrsyncでファイル同期するだけ ? ビルド、インストールはビルドサーバで一回だけ ?
リポジトリ(puppet)にはanybuildの設定だけ ? サーバの仕様はsync-lang pullで う ? 履歴がpuppetのリポジトリに集約される !
25.
やったね!
Download