概要: 何故か Gehirn RS が PaaS の様になった……
本日の、
http://www.gehirn.jp/rs2.htmlGehirnRS2 | ゲヒルンサービスサイト
案件です。
僕はしばし前に、
http://the.nyarla.net/post/76602749931僕個人としては、DevOps ツールというのは、Bash Script と ServerSpec だけでも良いのではないか、と思ってる - 空繰再繰
というコトを書いていて、その中で、
https://github.com/boxelly/bopsBops - Is this the bash script for devops?
というのを作ってるって言うてたんですが、その辺りの拡充というか、僕の個人用途の公開 Web サービスの構築の自動化まわりを整備しておった結果、
Gehirn RS2 に PaaS みたいな環境が出来た!!!!!!
ので、今日はその辺り書きたいと思います。
Gehirn RS2 を PaaS もどきっぽくする方法
supervisor のインストール
今日は寝不足で頭があんまり働いてないので、実例で説明しますが、手順としては、第一に、
が使える環境で、
$ bops nyarla@s13.rs2.gehinr.jp supervisord-install /home/nyarla/System/sypervisord
という感じで、Bops recipe の supervisord-install を使って、いろんな PaaS でおなじみの supervisorをインストールします。
で、このレシピの正体はぶっちゃけただの Bash script で、中身でやってる事は
- <https://github.com/boxelly/bops/blob/master/recipes/supervisord-install https://github.com/boxelly/bops/blob/master/recipes/supervisord-install>
を見た方が早いです。が、一応説明等をすると、
linboxのセットアップBrewfileを自動生成してlinbox installを実行 この際、supervisorを動かすのに必要なシロモノは全部インストールされるlinbox経由でpip install supervisorを実行supervisord.confを自動生成 ちなみにsupervisorのパスワードも自動生成あとこの時生成される
supervisorの設定は、/home/${USER}/Applications/*/supervisord.confを読み込むようになってる
あとは、
supervisordとsupervisorctlを実行するための Bash script を生成- おわり
という感じです。
nginx のインストール
で、次にこれまた Bops で、
$ bops nyarla@s13.rs2.gehirn.jp nginx-install 1.4.5 /home/nyarla/Applications/nginx
という感じでnginx をインストールします。
で、この nginx-install もまた Bash Script なワケですが、中身はまあ、
- <https://github.com/boxelly/bops/blob/master/recipes/nginx-install https://github.com/boxelly/bops/blob/master/recipes/nginx-install>
を見た方が早いです。
で、一応デフォルト生成設定の特長を書いておくと、
supervisorでプロセス管理するため、daemon off;の設定がしてある/home/${USER}/Applications/*/nginx.confの設定を読み込むようになってる- あとその他は適当
という感じです。
あと、それともう一つ注意点を書くと、Bops recipes のnginx-install は、設定等が、PaaS-like な環境構築用に特化しているため、普通に nginx を楽にインストールしたい場合は、前に僕が作った、
https://github.com/nyarla/xbuild-nyarla/blob/master/nginx-installxbuild-nyarla/nginx-install at master · nyarla/xbuild-nyarla
を使ったほうが良いかと思います。というか Bops recipes の nginx-install は、ぶっちゃけ上記の nginx-install を使ってます。
3. senv をセットアップする
senv って何? と思われる方も結構いるとおもうんですが、これは、
https://github.com/josh/senvjosh/senv
のコトで、中身としては、
.envファイルを、セキュアに暗号化 or 復号化するための Bash script
と成ってます。
で、このセクションでの senv のセットアップ、というのは、senv をインストールするコト、 ではなく 、
senv用の ssh key pair を生成し- それをサーバにう p する
という感じの内容です。
で、このセットアップは、 Bops では、
https://github.com/boxelly/bops/blob/master/bin/bops-senv-setupbops/bin/bops-senv-setup at master · boxelly/bops
を使って、
$ bops-senv-setup nyarla@s13.rs2.gehirn.jp
すると、ローカルとリモートの ~/.ssh/ 以下に、
senv.keysenv.key,pub
というファイルが生成されます。
で、もし senv を使って .env を暗号化した .senv ファイルを生成する場合、
$ export SENV_KEY=~/.ssh/senv.key $ senv --encrypt .env > .senv
という感じでコマンドを実行します。
あと復号化に関しては、
$ senv --decrypt .senv > .env
で出来ます。
4. アプリケーションを deploy する
ぶっちゃ実際に使ってる、
https://github.com/nyarla/aiproxynyarla/aiproxy
を deploy する場合だと、 aiproxy の Makefile のUSERとかHOSTとかを書き換えて、
$ make install # or $ make update
するだけです。
っていうかまあやってる事としては、
rsyncでローカルのファイルをリモートに deploy- リモートで
SetupfileかUpdatefileを bash に食わせて実行 - あとは
supervisorに関連ファイルを読み込ませる
という感じです。
というコトで、大体は以上です。
っていうか、どう考えてもこれ、
DevOps じゃなくて BashOps じゃねーかー!!!!!!
と思われるかもしれませんが、そもそもするために作った Bops がそもそも、
Bops - Is this the bash script for devops
なので、まああながち間違いではありません。
まあぶっちゃけた話 Bash Ops を簡単にできるようにしたのが、
https://github.com/boxelly/bopsBops - Is this the bash script for devops?
ですからね。(テヘペロ
で、この辺り環境がいつの間にか出来上がって来て、一応 Application の deploy とかが大分楽にはなったんですが、まだ、完全にすべてを自動化出来てるワケでもないので、その辺りは今のところちょっちびみょい感じです。
つか僕は DevOps に関しては、
限りなく属人性と人力 Deploy を排し、完全な自動 Deploy を行うべき
と考えてるので、その点で言えば、まあこ Gehirn RS2 に構築した PaaS もどきな環境は、点数としては 50 点ぐらいの環境かな、とは思ってます。
ま、でも前の完全人力よりかはマシですけどね。この PaaS もどきっぽい環境。
ま、そんな感じでしょうか。
というワケで本日の技術系記事は以上となります。
で、 無限雑音 にはちょろっと書いてますが、ここ最近、うつの症状が悪化して体調が本当によろしくないので、イマイチ記事の内容にノリ切れないのがなんとも言えない感じです。はい。
というか、もうやめて!私のライフは 0 よ!的な感じになってきたので、本日の記事を終わりたいと思います。
本当、誕生日までには落ちつて欲しいなぁ、鬱の症状。