カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

気がついたらGehirn RS2にPaaSみたいな環境が出来上がっていた件

概要: 何故かGehirn RSがPaaSの様になった……


本日の、

案件です。


僕はしばし前に、

というコトを書いていて、その中で、

というのを作ってるって言うてたんですが、その辺りの拡充というか、僕の個人用途の公開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で、中身でやってる事は

を見た方が早いです。が、一応説明等をすると、

  1. linboxのセットアップ
  2. Brewfileを自動生成してlinbox install を実行
    • この際、 supervisor を動かすのに必要なシロモノは全部インストールされる
  3. linbox 経由で pip install supervisor を実行
  4. supervisord.conf を自動生成
    • ちなみに supervisor のパスワードも自動生成
    • あとこの時生成される supervisor の設定は、
      • /home/${USER}/Applications/*/supervisord.conf
    • を読み込むようになってる
  5. あとは、 supervisordsupervisorctl を実行するためのBash scriptを生成
  6. おわり

という感じです。

nginx のインストール

で、次にこれまた Bops で、

$ bops nyarla@s13.rs2.gehirn.jp nginx-install 1.4.5 /home/nyarla/Applications/nginx

という感じでnginx をインストールします。

で、この nginx-install もまたBash Scriptなワケですが、中身はまあ、

を見た方が早いです。

で、一応デフォルト生成設定の特長を書いておくと、

  1. supervisor でプロセス管理するため、daemon off; の設定がしてある
  2. /home/${USER}/Applications/*/nginx.confの設定を読み込むようになってる
  3. あとその他は適当

という感じです。

あと、それともう一つ注意点を書くと、Bops recipesのnginx-install は、設定等が、PaaS-likeな環境構築用に特化しているため、普通に nginx を楽にインストールしたい場合は、前に僕が作った、

を使ったほうが良いかと思います。というか Bops recipesの nginx-install は、ぶっちゃけ上記の nginx-install を使ってます。

3. senv をセットアップする

senv って何? と思われる方も結構いるとおもうんですが、これは、

のコトで、中身としては、

  • .env ファイルを、セキュアに暗号化 or 復号化するためのBash script

と成ってます。

で、このセクションでの senv のセットアップ、というのは、senv をインストールするコト、 ではなく

  1. senv 用の ssh key pair を生成し
  2. それをサーバにうpする

という感じの内容です。

で、このセットアップは、 Bops では、

を使って、

$ bops-senv-setup nyarla@s13.rs2.gehirn.jp

すると、ローカルとリモートの ~/.ssh/ 以下に、

  • senv.key
  • senv.key,pub

というファイルが生成されます。

で、もし senv を使って .env を暗号化した .senv ファイルを生成する場合、

$ export SENV_KEY=~/.ssh/senv.key
$ senv --encrypt .env > .senv

という感じでコマンドを実行します。

あと復号化に関しては、

$ senv --decrypt .senv > .env

で出来ます。

4. アプリケーションをdeployする

ぶっちゃ実際に使ってる、

をdeployする場合だと、 aiproxyMakefileUSERとかHOSTとかを書き換えて、

$ make install
# or
$ make update

するだけです。

っていうかまあやってる事としては、

  1. rsync でローカルのファイルをリモートにdeploy
  2. リモートで SetupfileUpdatefile をbashに食わせて実行
  3. あとは supervisor に関連ファイルを読み込ませる

という感じです。

というコトで、大体は以上です。

っていうか、どう考えてもこれ、

  • DevOpsじゃなくてBashOpsじゃねーかー!!!!!!

と思われるかもしれませんが、そもそもするために作った Bops がそもそも、

Bops - Is this the bash script for devops

なので、まああながち間違いではありません。

まあぶっちゃけた話Bash Opsを簡単にできるようにしたのが、

ですからね。(テヘペロ

で、この辺り環境がいつの間にか出来上がって来て、一応Applicationのdeployとかが大分楽にはなったんですが、まだ、完全にすべてを自動化出来てるワケでもないので、その辺りは今のところちょっちびみょい感じです。

つか僕はDevOpsに関しては、

限りなく属人性と人力Deployを排し、完全な自動Deployを行うべき

と考えてるので、その点で言えば、まあこGehirn RS2に構築したPaaSもどきな環境は、点数としては50点ぐらいの環境かな、とは思ってます。

ま、でも前の完全人力よりかはマシですけどね。このPaaSもどきっぽい環境。

ま、そんな感じでしょうか。

というワケで本日の技術系記事は以上となります。

で、無限雑音にはちょろっと書いてますが、ここ最近、うつの症状が悪化して体調が本当によろしくないので、イマイチ記事の内容にノリ切れないのがなんとも言えない感じです。はい。

というか、もうやめて!私のライフは0よ!的な感じになってきたので、本日の記事を終わりたいと思います。

本当、誕生日までには落ちつて欲しいなぁ、鬱の症状。