Tag Archives: jail

[メモ][FreeBSD] 複数Jailのpkg upgradeを一気に済ませたい

Pocket

メモ。

jailのpkg操作は、いちいちそのjailの中に入らなくてもpkg -j <jail名 or jail ID> …というように-jオプションを付与すればできる。

しかしjailの指定は、個々に行う必要がある。
たとえばpkg -j * upgradeというように、ワイルドカードを使うようなことは、もってのほかのようである。
jailなんてどんどん増えていくのに、いちいち-jで指定していくのもなあ。
仕方ないんで、やっつけでパイプを繋いで実現。

以上

[slack][hubot][jail][メモ] FreeBSD Jailでhubotを飼う

Pocket

slackにhubotを住まわせる記事は山のようにあるが、それを「hubotを自前サーバ」「それもFreeBSDに」という条件にすると記事数が激減する。

そんななか、四苦八苦してなんとか達成したのでここに採録。
なお、そっけなく不親切に見えるのは、ここまでたどり着くのに疲労困憊したから。
ではどうぞ。

jailの作成

フッツーに。
以下ではqjailを使っているがezjailでもなんでも、好きなのを使いたまえ。

 

npmのインストール

まずjailをスタートさせて中に入ろうか。
そしてnpmのインストール。

node, npmのバージョンを確認しておく。
問題なくインストールされているかの確認でもある。

 

generatorのインストール

 

hubot用ユーザの作成

jailの中でadduserし、お好きなユーザを作る。
以下では「bot」というユーザ。

 

hubot用ユーザでhubotレポジトリ作成

botホストの作業はいったんはここまで。
以降、slack側で。

 

slackにhubotのインストール

slackのteamメニューからApp&Integrations > Hubotをインストール
表示されるAPI Tokenを記録する。
hubotがslackへアクセスするためのトークン。

 

botホストで起動スクリプトの作成

再びbotホスト
/usr/local/etc/rc.d/hubotとして以下を作成。
試行錯誤で作ったから雑なスクリプトであることに注意。
それから実行権限付けるのを忘れないこと。

 

起動確認

/etc/rc.confにhubot_enable=YESを記載。
service -l でhubotがリストされることを確認したら、service hubot startで起動。

以下のような表示が出ればOK。

 

ポートフォワーディングの設定。

前章の起動時メッセージ、「INFO hubot-redis-brain: Using default redis on localhost:6379」に注目。
6379でポート待ち受けている。
ご家庭のサーバで動かしている場合には、ルータでのポートフォワーディング設定を忘れずに。
なお2016/4/16現在、slackの側でサーバのIPアドレスを指定したりするような設定は不要。

 

slack側の確認

slackでbotを住まわせたいchannelにInvite。
botの名前の左側に在席マークが点いているのを確認し、「@<bot名> ping」とし、botからPONGと帰ってきたら成功。
もし起動時メッセージが不要であれば、以下のように/usr/sbin/daemonのオプションに-fを加えるとよい。

[FreeBSD] jailのetcを更新する(qjail)

Pocket

qjailだと、ここで示したようにqjail update -bでjailのバイナリアップグレードをしてくれる。

アップグレードといっても、ホストのバイナリをjailのsharedfsにまるまるコピーしているだけである。
ということは、通常のアップグレードで更新されるはずの/etc下ファイルには一切、手を付けないということ。

jailのetc更新にはmergemaster

実はmergemasterは更新するフォルダを-Dオプションで選ぶことができる。
つまり、ホストのsrcをベースにjailのetcを更新できる。

jailの/etcを更新するには

jail ex01を更新する場合は、以下の通り。-D以外のオプションはUPiF。

新しくjailを作る際のテンプレートも更新しておく。

以上

[FreeBSD][メモ] PlexConnectに関する情報

Pocket

PlexConnect

https://github.com/iBaa/PlexConnect

最低限入れておくべきもの(jailを想定)

  • plexmediaserver(これは当然)
  • ca_root_nss
  • python2.*

スタートアップスクリプト

/usr/local/etc/rc.dに設置。
/etc/rc.confにplexconnect_enable=”YES”

[メモ] 写真、ホームビデオ等をため込んだFreeBSDホストのjailにPlex Media Serverをインストール

Pocket

件名の通り。
FreeBSDホストに格納してある写真、動画を各種メディアプレイヤー向けに公開したいが、オリジナルのホストを直接は公開したくないな、というときのため。
jailなら物理的に同じマシンを使いつつ、論理的には別マシンとして振る舞えるので適任である。

jailの作成

jailとくればezjailが定番だが、私はqjailが好き。
qjailについてはこちらを。

以下、qjail installまで終わっている前提で勧める。

flavorにssh-defaultを選んでplexという名前で作成。

jail plexをスタートし、pkgをインストール
インストールはとにかくpkgコマンドを叩けばOK。

plexmediaserverインストール

そのままplexmediaserverをインストール。
もちろん、マシンは64bitです。

plexmediaserver起動

rc.confに一行加えてさっさと起動。

ブラウザからhttp://<IPアドレス>:32400/webに繋ぐ。
もし「このサーバに権限(permission)がない」というようなことを言われたなら、以下のファイルを変更するといいかもしれない。
「かもしれない」というのは、以下の通り変更したら症状が改善したので、確認のために戻してみたら、二度と症状が再現しないから。
うーん…。

いったんそのままにしておく。

plexmediaserver向けにディレクトリをマウント

jailから抜けてホスト側で作業
jailであるplexのファイルシステムは、ホスト側では/usr/jails/plexにある。
/usr/jails/plex/がjail plexのルートディレクトリ。
だからホストの/warehouseにデータがあるとして、/usr/jails/plex/mediaにマウントすれば、jail plexでは/mediaとして見える。

せっかくだからread onlyでね。

jail plexから見えるのを確認したら、ホスト側のfstabに書き込み。

あとはブラウザからplex media serverにつないで、メディアの追加で/mediaを選ぶだけ

以上

Poudriereのjailにセキュリティアップデートを適用

Pocket

Heartbleedバグ対応では皆さんいかがお過ごしでしたか。

Poudriereではpackageの作成をjail内で実行するんだけども、もちろんこれらjailにもセキュリティアップデートは必要だ。
ずいぶん簡単なんだけれども採録。

Poudriere jailのアップデートは-uで

ほんとうに簡単で、-uをつけるだけ。
以下のようなjailがあったとする。

そうしたら-uを指定するだけ。

おしまい。

 

Hadoopフレンドリーなデータとは

Pocket

 

ログは1行1イベントに

何を言っとるんだお前はという感じであるが、つまりこういう事である。

通常、ログは1行が1イベントである。
たとえばapacheのログやらなにやら、みんなそうである。
少なくともUNIX系のシステムであれば、これは常識である。
しかし、この世の中、UNIX系の常識が通用しないログだって山ほどあるのである。

1イベントが複数行にわたるログがなぜいけないか。

たとえば以下の様な擬似ログを考えてみよう。

まったく関係のない話だが、以下のデータは手元にあるLIFEのノートから適当にでっち上げた。
冒頭にタイムスタンプがあり、イベントの内容が記される、典型的なログである。

しかしこれが、以下のように複数行にわたって記録(あるいは表示)される、こういうログを相手にすることだってあるのだ。

 

これは主に可読性を意識したせいであろうが、こういったログをHadoopで扱うのは難しい。

Hadoopのデータの扱い方

というのも、Hadoopは分散処理のためにログを分割するからだ(デフォルトでは64MBごと)。

しかもその分割は、単純にサイズのみで判断され、文脈は考慮されない。
上のログで言えば、Nobleの手前で切られてしまってログとして意味がなくなってしまうことだってある。

これを避けるには、Hadoopにファイルそのものではなくて、ファイルリストを与える手があるけれども、それではHadoopの長所を活かせない。
ファイルリストは綺麗に分割されるけど、ファイルの大きさはまちまちだから。

ログの整形

というわけで、こういったログを扱う前に、下準備として1行1イベントにまとめてしまおう。

まとめ自体もHadoopで処理してしまえば楽である。
Hadoopの象本Appendix Cに良い例があるのでこれを使う。
ここでfiles.txtは処理するログファイルをリストしたものとする。
また、concat.shは1行1イベントにまとめるスクリプトとする。

 

reduceは必要ないのでmapred.reduce.tasks=0。
重複して書き込んでほしくないのでmapred.map.tasks.speculative.execution=false。
タイムアウトは長めに。
mapが一回に処理するファイルはひとつにしたいので、-inputformat org.apache.hadoop.mapred.lib.NLineInputFormat 。

以上