{ 2011.11.22 }

autofs + sshfs の設定

    はてなブックマーク - autofs + sshfs の設定
    このエントリーをはてなブックマークに追加

    初めまして。
    物理系出身で、新人の北岸です。

    ブログ初投稿ですが、よろしくお願いします。

    今回のテーマは 「autofs を使って、sshfs を利用する」 です。

    単純にsshfsを使うより、
    autofsと組み合わせた方が何かと便利かなーって思ったので、
    このテーマで進めたいと思います。

    というのも、毎回 sshfs コマンドを叩くのも煩わしいですし、
    起動時にマウントさせる設定などしてると、
    ネットに繋がっていない環境ではそこでエラーになってしまいます。

    でも、autofs なら大丈夫!
    そんな感じです。

    用意した環境

    Virtualbox 上にLinux を2台
    1. Ubuntu 11.10 64bit Desktop
    2. CentOS 5.7 64bit

    概要

    Ubuntu にて、
    ・公開鍵認証の設定
    ・autofs の設定
    ・sshfs でマウント
    という流れで進めます。

    公開鍵認証の設定

    root ユーザになり、
    秘密鍵と公開鍵のセットを作成するために次のコマンドを実行します。

    root@ub1110x64:~# ssh-keygen

    この時、秘密鍵の場所は、「/root/.ssh/id_rsa.bright」を指定し、パスフレーズは空で設定しました。

    SSH接続の際に、この秘密鍵を読み込むための設定をします。
    ファイル ~/.ssh/config に、次の設定を記述します。

    Host bright
    User root
    HostName 192.168.55.101
    IdentityFile ~/.ssh/id_rsa.bright

    後は、この公開鍵を CentOS に設置するだけです。
    次の手順で設置しました。

    root@ub1110x64:~# scp .ssh/id_rsa.bright.pub root@192.168.55.101:/root/
    root@ub1110x64:~# ssh root@192.168.55.101
    [root@localhost ~]# mkdir .ssh
    [root@localhost ~]# touch ~/.ssh/authorized_keys
    [root@localhost ~]# cat id_rsa.bright.pub >> .ssh/authorized_keys

    これで無事、次のコマンドなどを実行して、
    Ubuntu からパスワード無しでSSH接続が出来るようになりました。

    root@ub1110x64:~# ssh bright

    autofs の設定

    まず次のコマンドで、sshfs と autofs をインストールします。

    root@ub1110x64:~# apt-get install sshfs autofs

    次に、autofs の設定をしていきます。
    これは2つのファイルに、1行ずつ書くだけです。

    まず、ファイル /etc/auto.master の最終行に、次の一行を追加します。
    /home/sky/bright /etc/auto.sshfs --timeout 0 --ghost

    この設定の意味は、
    ディレクトリ /home/sky/bright に、
    ファイル /etc/auto.sshfs の内容に従ってマウントするというものです。

    --timeout 0

    これは、自動切断をする時間のための設定で、
    ゼロを指定しているため、自動でアンマウントしない設定です。

    --ghost

    これは、実際にアクセスするまでマウントしないという設定です。

    最後に、ファイル /etc/auto.sshfs というファイルを作成して、
    blue -fstype=fuse,allow_other :sshfs\#bright\:/
    だけ記述します。

    この設定の意味は、
    ファイル /etc/auto.master に記述されたディレクトリ上の、
    ディレクトリ blue に sshfs でマウントするというものです。

    -fstype=fuse,allow_other

    これは、sshfs の FUSE options で allow_other を指定するという設定です。
    これを加える事で、例えば一般ユーザ sky でも
    マウントしたディレクトリにアクセス出来るようになります。

    autofs の設定はここまでです。

    最後に、次のコマンドで、autofs を再起動するだけです。

    root@ub1110x64:~# service autofs restart

    autofs の設定に関する余談

    1. もし、/root/.ssh/config ファイルの設定をしていなかったら
    設定ファイル /etc/auto.sshfs に関しては、次のように書かないとマウント出来ません。

    blue -fstype=fuse,allow_other,IdentityFile=/root/.ssh/id_rsa.bright :sshfs\#root@192.168.55.101\:/

    2. 1 の条件で、sshfs コマンドでマウントするとしたら
    次の2つのコマンドを実行する必要があります

    root@ub1110x64:~# mkdir -p /home/sky/bright/blue/
    root@ub1110x64:~# sshfs -o allow_other,IdentityFile=~/.ssh/id_rsa.bright /home/sky/bright/blue/ root@192.168.55.101:/

    マウントの確認

    マウントしたポイントは、/home/sky/bright/blue/ です。

    次のコマンドを実行してみると、
    無事にマウントが出来ている事が確認出来ました。

    root@ub1110x64:~# ll /home/sky/bright/blue/
    合計 112
    drwxr-xr-x 1 root root  4096 2011-11-13 03:58 ./
    drwxr-xr-x 3 root root     0 2011-11-13 13:20 ../
    -rw-r--r-- 1 root root     0 2011-11-13 03:57 .autofsck
    -rw-r--r-- 1 root root     0 2011-10-05 14:17 .autorelabel
    drwxr-xr-x 1 root root  4096 2011-10-28 01:00 bin/
     
    *** (略) ***

    試しに、適当なファイルを作成してみたいと思います。
    今回は Ubuntu の一般ユーザ(sky)でやってみます。

    sky@ub1110x64:~$ cat /etc/issue >> ~/bright/blue/sky.txt
    sky@ub1110x64:~$ ll ~/bright/blue/sky.txt
    -rw-r--r-- 1 root root 20 2011-11-13 04:21 /home/sky/bright/blue/sky.txt

    無事に作成できました。

    CentOS にログインしてみても、確かにファイルは存在してました。

    [root@localhost ~]# ll /sky.txt
    -rw-r--r-- 1 root root 20 11月 13 04:21 /sky.txt
    [root@localhost ~]# cat /sky.txt
    Ubuntu 11.10 \n \l

    おわり

    初投稿で、文章を書くのも苦手で、なかなか苦戦しました。
    準備でもケアレスミスの連続で大変でした。。。
    まだまだ未熟ですが、めげずに頑張っていきます!

    ちなみに、自分の開発環境を Windows から Ubuntu に変更したので、
    積極的にこの設定を使っていこうと思います。

    物理をやってたあの頃

    豆知識ってわけではありませんが、
    物理をやってたあの頃の割とどうでもいい事をつらつらと。。。

    研究室に、片栗粉がありました。
    しかも、料理のためではありません。
    水と混ぜる、それだけのためです。
    それ以外の使い方を見た事がありません!

    なぜ混ぜるのか、
    それは、ダイラタント流体を作るためです。

    もしかすると、テレビなどで、
    白い液体の上を走る人を見たことがあるかと思います。
    アレです。

    このダイラタント流体は、
    圧力を加えると固体のように振る舞い、
    そうでないと液体のような振る舞いをするというものです。

    実際に、水と片栗粉をスプーンでかき混ぜて、
    そのスプーンでその白い液体を叩くと、
    固体のような手応えを受けます。
    一方で、ゆっくりスプーンをあてると、
    液体のように飲み込まれていきます。

    何とも不思議なやつなんです~

    今度こそお終いです。
    ではでは。

      はてなブックマーク - PHPMatsuriはFusicのプラスになったのか?(4/4)
      このエントリーをはてなブックマークに追加

      どうやら最終区担当の小山です。

      FusicのPHPMatsuri2011 レポートも最後です。何やらハードルが上がっているように見えますが、そこはスルー力を発揮します。

      PHPMatsuriリレーブログで「FusicがPHPMatsuriに参加すべき意義」というエントリーを書きましたが、「実際はどうだったのか?」について考えてみたいと思います。

      PHPMatsuri前

      前のエントリーはどちらかというと自分個人の考えが強かったのですが、あるとき弊社社長からこんなメールが社内に送信されました。

      “今、気付いたけど、小山君がいいこと書いてました。

      blog.fusic.co.jp/archives/1869

      PHP Matsuri に参加する方々、ぜひ何かを感じて
      帰って来て下さい。”

      会社としても4人を送り込むわけですから、期待しないわけにはいかないです。
      ただ、この時点では4人ともそこまで意気込んではいなかったのではないでしょうか。

      はたしてPHPMatsuriで何を感じたのか

      「PHPMatsuriで何かを感じることができたのか」

      それは今までの3回のエントリーを見ていただければ一目瞭然でしょう。

      傍から見ていても違いが分かるほどです。

      例えば、先日CakePHP2.0のリリースがありましたが(おめでたい!)、
      今まで以上に社内で話題になっているように感じました。
      CakePHP界隈の人の話題もでるようになりました。

      では、「具体的に何が変わったのか」、自分なりに分析してみたいと思います。

      会社の外をより意識するようになった

      PHPMatsuriをはじめとして勉強会やカンファレンスで、最も良い効果のひとつがこれだと思います。
      さらにPHPMatsuriはハカソンイベントです。

      会社の外の人と同じ環境で開発できる

      これができるイベントはなかなかありません。
      ネットを通じて一つのプログラムを開発するのもかなりエキサイティングな体験ですが、
      実際に同じ場所で、いつもと違った人と一緒に開発するのはさらに刺激的です。

      ちなみにこの体験はかなり中毒性があるらしく、PHPMatsuriにリピータが多いことからもそれが証明されているのではないでしょうか。

      ライブラリを「使う」意識から「作る」意識により傾いた

      何かのシステムを作るとき、目指す目標は「システムを完成させること」です。
      ただ、その目の前の目標だけを追っていたら毎回同じように苦労するでしょう。

      「システムを完成させること」と同時に
      「次のシステムでも使えるような機能に」「いつか別のシステムでも使えるような機能に」
      「どこかの誰かが使えるような機能に」
      という意識を持つことで、次のシステムを作るとき楽になるかもしれませんし、
      そういう意識を持つことが結果的にソースコードが綺麗になることにつながります。

      なかなか日々の業務に追われていたら変えたい意識もなかなか変わることはできませんが、
      PHPMatsuriではフレームワークの開発者やライブラリの開発者が一堂に会しています。
      その人たちの考えに少しでも触れることができます。
      むしろ触れずにはいられない環境です。

      さらに「次の日のLT大会」のための、業務でない「何かを」作ります。
      多分PHPMatsuriに行く前の、開発ネタを考えるときから何かを得られたのではないでしょうか。

      プログラムの世界を楽しめた

      何で括ればいいか良い言葉を思いつきませんでしたが、
      PHPMatsuriはPHPやJavaScriptをはじめとした「プログラムを通じて楽しむ環境」だったように思います。
      プログラムの世界を楽しむことができれば、
      35年定年説なんて関係ないでしょうし、日々の仕事も楽しくなることうけあいです。

      PHPMatsuriに行くことを決めた時点でいつも楽しめているんでしょうが、
      PHPMatsuriに参加したことで、いろんな人と交流ができて、さらに楽しむ術を覚えたように思います。
      この楽しみがもっと増えればいいなと思っています。

      結論

      当初のもくろみ以上にPHPMatsuriはFusicのプラスになった

      4人がそれぞれ精一杯過ごせたと思います。
      フレームワークのコアデベロッパに相談したり(貴重!)、
      ハッカー精神よろしくアグレッシブすぎるものを開発したり、
      会社の外の人とはじめて一緒に開発する環境を体験したり、
      さらには全員が最後に成果を発表できて、
      確実にプラスになっています。

      PHPMatsuri青年団の皆様、この場を借りて御礼をいいたいと思います。

      本当にありがとうございました!

      来年

      来年のことを言うと鬼が笑うので、あまり考えないようにしていますが、
      来年もPHPMatsuriが開催されて欲しいと思っています。
      ただ、PHPMatsuriを開催するのに多大な労力がかかっていることも知っています。

      もし来年PHPMatsuriが開催されるなら、
      そのための協力はできる限りしていきたいなと思っています。

      ちなみに

      自分は今年はこんなものを作成していました。
      ハッカー賞次点をいただきました!ありがとうございます!

      何が一番面倒かって仕様が複雑すぎで実装に先が見えないことです。

        はてなブックマーク - PHP Matsuri 2011に参加して得たこと(3/4)
        このエントリーをはてなブックマークに追加

        3区担当の杉本です。
        PHP Matsuri
        でのハッカソンは10/16に終わりましたが、弊社ではまだマラソンが続いています。

        「ブログを書くまでが”Matsuri”」

        ※リレーブログ形式になったのは初日の誰かさんのせいですね。

        PHP Matsuriについて

        今回、初めてPHP Matsuriに参加しました。また、ハッカソンというのも初めての経験でした。
        コアデベロッパーの方やお世話になっているライブラリの開発者の方にお会いできるのを楽しみにしていました。

        Matsuriでは過ごし方を手探りしながら、初日は講演とワークショップに参加して、日付が変わったところから開発を始めました。
        ただ、もう少しいろんな方とお話しすればよかったなと今は思っています。

        デモ大会での発表について

        ハッカソンでは「CakePHPのbakeで確認画面(添付画像付き)含めたソースを楽して一括生成する」というテーマで参加しました。

        弊社ではCMSや業務系システムなどの案件が多く、「確認画面(添付画像付き)」という要件も少なくありません。
        これが結構面倒な処理になるのですが、「TransitionComponent(hiromi2424さん)」と「FilebinderPlugin」を使うことでかなり簡単に実装ができるようになりました。ほんと感謝感謝ですm(_ _)m
        それぞれのライブラリの使い方については割愛させていただきますが、色々な方が詳しく解説されていますので是非調べてみてください。
        ※弊社ブログでも過去にTransitionComponentについての記事が書かれています。

        ただ、それでも案件毎に、モデル毎に同じ処理を書くのが面倒になってきました。

        「もっと楽に、簡単に、ミスがないように」

        実装するために、確認画面ありのCRUDをbakeを使ってソースを生成したいと思うようになりました。

        そこで、CakePHP1.3+から導入されたTemplatesを使って、コアのbakeをいじらず、実装することにしました。
        今回は即実践投入を考えて、まずはCakePHP1.3で開発。

        CakePHP Templatesについて

        Templatesはcakeディレクトリにあるtemplates/default一式をappにコピーして作っていきます。
        Controller/Modelについてはソースを見れば、修正は簡単でしたが、
        課題はCRUDの4ファイル以外のctpファイルをどう生成するか、でした。

        Matsuriに参加するまではコアのbake周りをいじらないといけないかと思っていましたが、cakephperさんに相談したところ、コアデベロッパーのグラハムさんに直接質問できる機会ができ、templatesを使って任意のctpファイルを生成するサンプルコードを教えてもらい、見事解決しました。

        ちょっと緊張しましたが、グラハムさんとお話ができたこの瞬間が一番楽しかったです。(でもやっぱり英語勉強しないといけませんね。。。)
        本当にMatsuriに参加してよかったです。

        CrudPlusPluginについて

        ブログを書きながら(思いつきで)名前を決めました。
        使い方はapp/pluginsディレクトリに置いてbakeするだけ。

        php cake/console/cake.php bake all

        該当するモデルを選ぶところはいつもと同じです。異なるのは最後にテンプレートを指定するところです。

        ---------------------------------------------------------------
        You have more than one set of templates installed.
        Please choose the template set you wish to use:
        ---------------------------------------------------------------
        1. confirm_with_file
        2. default
        Which bake theme would you like to use? (1/2)
        [1] > 1

        これでadd.ctp/edit.ctp/index.ctp/view.ctpに加えて、add_confirm.ctpも同時に生成されます。今回のハッカソンでは時間が足りず、edit_confirm.ctpまで作れませんでした。
        あと改善したいのはTransitionComponent/FilebinderPluginの存在チェックをして、なければ取得・設置できるような処理を入れたいと考えています。
        近いうちに仕上げて、GitHubで公開します。

        最後に

        今回、目標の一つにCakePHP2.0を学ぶというのを掲げていました。年内にはstableが出るだろうから年明けにはガンガン使い出すという雰囲気でしたので。
        ところが福岡に帰ってきてみると、いつの間にかリリースされているというお土産つき!
        CakePHPワークショップ中にバグを直すという(予期しない)”イベント”があったので、まるで自分が開発チームのような、一緒に2.0をリリースしたような気分に勝手になっていました。
        これはただの妄想ですが、いつも使っているフレームワークやライブラリを開発している方と直に話をすることで、さらにこのフレームワークやライブラリが好きになりました。
        これは今回得たものの中でも予想外のことでした。

        今回このような素晴らしい機会に恵まれたことに感謝しています。
        そして、PHP Matsuriのスタッフの方にはこの場を借りてお礼を言いたいと思います。本当にありがとうございました。

        さて明日は最終走者、弊社小山です。
        初日の安藤さんや吉岡さんのように、熱く”Matsuri”を語って、このリレーマラソンを締め括ってくれると思います。
        みなさん、期待しておいてください。

        それではまたどこかで。