2014年9月30日火曜日

[emacs][ssh][tramp] trampを使ってremote host上でsudo状態でファイルを開く方法。

鯖といじってると特定のユーザにsudo権限を与えてrootのパスとか知らんとかポリシー上よくある。
例でいうとこんな感じ
ssh test@remotehost
test@remotehost ~/ $ sudo su
root@remotehost /home/test #
localからemacsでremoteのファイルを色々弄りたいとか、鯖管をしたいとか言うと結構面倒 なんとかemacs + trampでsudo状態でファイルを開けないかなと調べてたら見つかったので覚書 ファイルオープン
C-x C-f /ssh:you@remotehost|sudo:remotehost:/path/to/file RET
ちなこれもいける shell
M-x /ssh:you@remotehost|sudo:remotehost:/path/to/file RET
ちなみに内容はそのまま公式にありました。

2014年9月29日月曜日

[emacs][evernote] emacs-evernote-mode

エディタにemacsを使っていてなおかつevernoteを多用している人は結構いるのでは無いだろうか。いやいるに決まっている(反語)。
結構そういう人は
emacs-evernote-mode
を見つけたのでは無いのだろうか。 emacsのevernote-pluginである。 上のリンクが公式っぽいがもはや公式の開発は2011年にリリースされたver 0.41でストップしている。
且つ公式の最新はevernote側のoauthの実装などの変更がありそのままでは使えなくなっている。
ただ,github上ではいくつかforkされているリポジトリが存在しており一番最新で使えるリポジトリは
pymander/evernote-mode
かな。
基本的にREADME.mdを見てもらえばわかると思うがインストールするときに重要なのは2点で
  • evernote Developer Tokenの入力
  • evernote_oauth gemのインストール
これと加えて最近issueとして
Opening existing notes, searching and note browsing fails - undefined method `to_sym' for nil:NilClass
が私の環境でも 発生したので、ちょっと修正してみた。
i-takuya/evernote-mode
は私がforkして修正を入れたevernote-modeのリポジトリである。同じ問題が起きているなら使ってもらいたいと思う。俺の環境では動いた。(結構雑な修正なんで保証はしない)
ダメだったらissueないし、pull requestを送ってもらえるととりあえず見ようとは思う。(修正できるとは言っていない)

2014年9月21日日曜日

[Docker] Dockerfile 初級編

前回は基本的なDockerの使い方の列挙した。
次,Dockerfileを使ってみる。
GitHubにコミットしたリポジトリを元にDocker hubにAUTOMATED BUILD REPOSITORYができる。

元になったリポジトリはこれ
centosを元にsshdをただ立ち上げただけ。

基本的にDockerfileがあるフォルダで
docker build -t [repository name] .

を実行すればDockerfileに書かれた命令を上から順に実行してimageを作成してくれる。
Vagrantfileっぽい様に見えるがプロセスを起動するような命令は一回しか実行出来ない。

ここらへんはどうもdockerの仕様らしいが、やはり一つのコンテナ上で複数のプロセスを立ち上げたいみたいな 需要はあるようでDocker 起動と共にサービスを複数立ち上げたいと思ったらまず Supervisor あたりを試してみようみたいな記事はいっぱいある。

最終的にlighttpdとsshd辺りをコマンド一つで起動させたりしたいのでSupervisor辺りを使って書きなおそうかなとは思っている。

前はカスタマイズしたイメージをDocker hubにあげてたけどDockerfileでレシピを残したほうが筋が良いような気がする。
今までVMとcontainerどう使い分けたら良いかと思ったけど(そもそも技術的には違うけどやれること対して変わらないきがする)
テストオートメートのためのワンショットビルドとかの使い方がいい感じがする。

2014年9月19日金曜日

[docker] dockerの使い方 初級編

最近話題のdocker、基本的な使い方はここ のチュートリアルをみれば大体分かりそう。 今回は基本的なコマンドとその説明を書き留めていこうと思う。
docker ps : containerのリストを取得
docker inspect  : 指定したidのcontainerの情報を取得。ipとか取れる。
docker run -i -t  : コンテナを起動させる。-t ttyをアロケート、-iはstdinをオープンし続ける。
docker commit   : 指定したcontainer idをリポジトリにコミット(多分ローカル)
docker push  : commitした内容をDocker hub上のリモートリポジトリにpush
docker pull :
上記コマンドがdockerの基本的なコマンド、docker runで起動したコンテナに変更を加えて、commit, pushでその変更を Docker hub上に保持できる感じ。 Docker hubなんてネーミングからわかるがすごいgit like.
なお、余分なimageとcontainerの削除は下記ページに記載されていたので参考までに。

Dockerで不要になったコンテナやイメージを削除する 次はDockerfileをちょっと触ってみたい。