2013年11月17日日曜日

MarkdownでBlogger記事を書いてみた

最近、Markdownがマイブームです。
githubのREADMEを書くのに使ったのが最初だったのですが、その後、masuidriveさんがMarkdown対応のオンラインメモサービスwri.peを開発されたりして、少しずつ気になってました。
で、MarkdownでBlogger記事を書く方法を調べた所、いくつか方法がある中で、StackEditというMarkdown対応のオンラインエディタを使う方法が、自分には一番よさそうでした。
2ペイン画面で、リアルタイムでHTMLのPreviewが表示されるので、確認しながらMarkdownで書いていきます。 記事をを書いた後は、左上のアイコンをクリックしmenuから[Publish on...]-[Blogger]を選択します。(詳細は上述のブログをご参照ください)
実際に、StackEditで書いたblogはこちらです。
他に、Markdown関連で調べた事をいくつか。

Markdown対応のBlog

Markdownに対応しているサイトは、Wikipediaの利用例に記載の通り、Stack OverflowやGitHubなどがあります。
Blog関連で有名な所では下記ぐらいでした。もし、BloggerでMarkdownが全く使えなかったら、これらのサービスへの移行も考えていました。

MarkDown対応のEditor

横着してリンクの紹介になりますが、意外にたくさんあります。この中では、Kobitoを使った事があります。 今回使用したStackEditは、「ブラウザエディタ」に該当しそうですが、含まれていませんね。

まとめ

  • BloggerをMarkdownで書く環境が整ったことで、これからはメモを含めて全てMarkdownで書けそうです。
  • Markdownはそのままでも読めるので、メモの記述方法として、覚えておくと便利そうです。
このエントリーをはてなブックマークに追加

2013年11月16日土曜日

VagrantとChefSoloでTremaEdge環境をつくる

最近、OpenFlow徹底入門を読んでいます。再びOpenFlowでいろいろやってみたいと感じています。
この本ではOpenFlowコントローラとしてFloodlightを使用しています。今までOpenFlowコントローラは、主にTremaを勉強してきましたが、いろいろなコントローラを触りながら、OpenFlowの本質を知るのもいいなかなと思っています。
ただ、そのための環境を作成するのは、(webに情報があるとは言え)やはり時間がかかります。また、local PCのリソース(主にdisk容量)を消費するので、どこかのタイミングで、ある環境を削除する判断をしなければなりません。(今までそのような経験をしてきたので、PC購入の際にはdisk容量を多めにするようにしています)
VagrantとChefSoloを使えば、サーバ環境をファイルで管理できる、個々の環境imageを保持する必要がなくなります。よって、diskの使用率を低減することができます。
今後、検証環境を作成する際には、VagrantとChefSoloで作成し、githubで保存していきたいと思います。

今回やること

今回は、trema-edgeの環境を作成してみたいと思います。 trema-edgeはtremaのOpenFlow1.3版で、OpenFlow1.0はサポートしていません。今のところ、tremaとtrema-edgeは別のものです。
また、tremaはRuby1.8環境で動作するのですが、Ruby1.8の開発は終了しています。それに対して、trema-edgeはRuby2.0環境で動作します。詳しくは下記。

設定ファイル

まず今回作成した設定ファイルをgithubに保存しましたので、ご参照ください。
github vagrant-trema-edge

設定のポイント

install手順はgithubのREDAMEに従っています。
手順は難しくありませんが、今回は、rubyのバージョン管理にrvmを使いましたので、rvmの設定のポイントを記載します。

Berksfileの設定

cookbookとしてrvmを登録します。rvm用のcookbookはいくつか存在しますが、今回使用したものが安定しているようでした。
$ vi Berksfile
site :opscode
cookbook 'apt'
cookbook 'rvm', github: 'fnichol/chef-rvm'
cookbook 'myapp', path: './site-cookbooks/myapp'

Vagrantfileの設定

chef.add_recipeとして下記の2行を追加し、chef.jsonでrubyのバージョン指定と、gemsの指定を行います。
$ vi Vagrantfile
-snip-
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = ["./cookbooks", "./site-cookbooks"]
chef.add_recipe "apt"
chef.add_recipe "rvm::system"
chef.add_recipe "rvm::vagrant"
chef.add_recipe "myapp"

chef.json = {
  "rvm" => {
    "default_ruby" => "ruby-2.0.0",
    "global_gems" => [
      {"name" => "bundler"},
      {"name" => "rake"}
    ]
  }
}
-snip-

Recipeの設定

今回、cookbookでrvmをinstallしているので、rvm_shellリソースが使えるようになっています。rvm_shellでrvmに依存する部分の記載を行います。
また、githubからtrema-edgeのrepositoryを取得するのはgitリソースを使用します。
$ vi site-cookbooks/myapp/recipes/default.rb
git "/home/vagrant/trema-edge" do
  repository "git://github.com/trema/trema-edge.git"
  reference "master"
  action :checkout
  user "vagrant"
  group "vagrant"
end

rvm_shell "install trema-edge" do
  ruby_string 'ruby-2.0.0'
  cwd "/home/vagrant/trema-edge"
  code <<-EOC
    bundle install
    rake
  EOC
end

bash ".bashrc" do
  not_if "which trema"
  code <<-EOC
    echo 'PATH="$HOME/trema-edge/bin:$PATH"' >> /home/vagrant/.bashrc
  EOC
end

まとめ

  • 今回、trema-edgeの環境設定をVagrantとChefSoloで行いました。
  • 設定のポイントとしては、今回はrvmを使用し、ruby2.0.0を指定しています。
  • trema-edge自体は、これから触ってみたいと思います。

このエントリーをはてなブックマークに追加

2013年9月19日木曜日

情報収集あれこれ

以前、勉強会についてまとめましたが、今回は情報収集について。
「キュレーション」をキーワードに、実際に使っているものを紹介します。

キュレーションツール 海外

キュレーションツール 日本

まとめ

  • 出勤の電車の中で、日経電子版を読んだ後に、上記のものをZIteから順にチェックしています。時間がない時はZiteのhomeと、Hacker Newsだけでもみるようにしています。
  • 最近は、Knoh,newsHUB,SmartNewsなどのnews系のアプリも増えており、試しているところです。
  • しかし、結局はFBで他の方が紹介している記事が、かなり参考になっています。専門的なもの、少し自分の専門とは違うが非常に参考になるもの、海外情報などです。
このエントリーをはてなブックマークに追加

2013年9月16日月曜日

vagrant synced folder設定変更中、動作がおかしくなった場合の対処方法

synced folder(nfs有効)の設定において、synced元のfolder(directory)を変更時に動作がおかしくなったので、備忘録として記載する。

環境

  • OS
    • OSX ver 10.8.4
  • vagrant環境
    • vagrant ver1.3.1
    • vagrant-berkshelf ver1.3.3
    • berkshelf ver2.0.10

事象

  • 当初、適当なdirectory(foo/bar)を、vagrantの仮想環境の/vagrant_dataにnfs mount実施していた。
  • 設定を見直し、Vagrantfileが存在するcurrent directoryを、synced folderのdefaultである/vagrantにnfs mountするよう設定変更した。
    • 変更前
      config.vm.synced_folder "foo/bar", "/vagrant_data", :nfs => true
      
    • 変更後
      config.vm.synced_folder ".", "/vagrant", :nfs => true
  • その後、vagrant upを実施すると、下記エラーが発生するようになった。vagrant sshも実施不可。
    $ vagrant up
    Bringing machine 'default' up with 'virtualbox' provider...
    [default] Setting the name of the VM...
    [default] Clearing any previously set forwarded ports...
    [Berkshelf] Updating Vagrant's berkshelf: '/Users/snumano/.berkshelf/default/vagrant/berkshelf-20130914-3068-18zoh8f-default'
    [Berkshelf] Using apt (1.9.0)
    [Berkshelf] Using imagemagick (0.2.2)
    [Berkshelf] Installing rvm (0.9.1) from git: 'git://github.com/fnichol/chef-rvm.git' with branch: 'master' at ref: '7038fb8c518d0d7785767de215b1ae463f237973'
    [Berkshelf] Using myapp (0.1.0) at './chef/site-cookbooks/myapp'
    [Berkshelf] Using java (1.13.0)
    [Berkshelf] Using windows (1.10.0)
    [Berkshelf] Using chef_handler (1.1.4)
    [Berkshelf] Using chef_gem (0.1.0)
    [default] Creating shared folders metadata...
    [default] Clearing any previously set network interfaces...
    [default] Preparing network interfaces based on configuration...
    [default] Forwarding ports...
    [default] -- 22 => 2222 (adapter 1)
    [default] Booting VM...
    [default] Waiting for VM to boot. This can take a few minutes.
    [default] VM booted and ready for use!
    [default] Configuring and enabling network interfaces...
    [default] Mounting shared folders...
    [default] -- /tmp/vagrant-chef-1/chef-solo-1/cookbooks
    [default] Exporting NFS shared folders...
    Preparing to edit /etc/exports. Administrator privileges will be required...
    Password:
    [default] Mounting NFS shared folders...
    The following SSH command responded with a non-zero exit status.
    Vagrant assumes that this means the command failed!
    
    mount -o vers=3 192.168.33.1:'/Users/snumano/Documents/hoge' /vagrant

対処方法

こちらを参考に、/etc/exportsを手動削除し、nfsdのdisable,enableを実施。
その後、正常にvagrant up起動およびnfs mountを確認できました。
$ sudo rm /etc/exports
$ sudo nfsd disable
$ sudo nfsd enable
$ sudo nfsd status
$ vagrant up

まとめ 

  • 今回事象の原因不明だが、synced folder変更中に、local pc側nfsdもしくはrouting tableがおかしくなったような印象。
  • もしかしたら、local PCに依存する問題かもしれない。
このエントリーをはてなブックマークに追加

2013年7月28日日曜日

Nginx+unicornでRailsを動かす


local PCのブラウザから「http://192.168.33.10:8080」を指定。すると、下記のように表示されます。 動作確認後、一旦「Ctl + c」でunicorn_railsを停止します。
このエントリーをはてなブックマークに追加

2013年7月25日木曜日

vagrant + chef solo + Berkshelf環境で、opscode-cookbookと自作cookを混在させたらハマった。その対応

前回のblogで、berks cookbookコマンドを用いたrepository作成の手順を紹介しました。
ただし、berks cookbookコマンドで作成したrepositoryはcookbookそのものでもあり、defaultの設定・環境だと、サードパーティのcookbook利用する場合、ファイル構成が分かりにくいものとなってしまいます。

そこで、前回ハマった「knife solo init」コマンドで作成したrepositoryにVagrantfileを用意し、サードパーティー(opscode-cookbooks)と自作cookbookを混在させる方法について再度見直しを行い、正常動作できるようにしたいと思います。

対応方法

先に結論を書くと、Berksfileに自作cookbookをpathで明示的に指定してあげました。こうすることで、opscodeのcookbookはネットからDL(git clone?)されるのに対して、自作cookbookはlocalの指定されたpathのdirを参照し、適切に動作するようになりました。

pochi-2:chef-repo snumano$ cat Berksfile
site :opscode

cookbook 'apt', '= 1.9.0'
cookbook 'mysql'
cookbook 'nginx'
cookbook 'database'
cookbook 'myapp', path: './site-cookbooks/myapp'    #追加行


コードはこちら

https://github.com/snumano/vagrant-knifesolo2


参考

http://berkshelf.com/
入門Chef Solo



まとめ

今回でやっと、Vagrant + Chef Solo + Berkshelfの対応手順が整理できました。
「こっちのやり方の方がいいよ」など情報ありましたら、お知らせいただけたら幸いです。
このエントリーをはてなブックマークに追加

2013年7月23日火曜日

vagrant + chef solo環境で、opscode-cookbookと自作cookを混在させたらハマった

表題の通りハマったので忘備録として残しておきます。

事象

  • knife solo initコマンドでrepositoryを作成後、opscode-cookbookからnginx,mysql,databaseなどのcookbookをberkshelfコマンドでinstall。
  • また、自作cookbookをknife cookbook createコマンドで作成。
  • 自作cookbookのrecipeを書いた後、vagrant upすると、自作cookbookが見つからない旨のerrorが発生。
  • error内容を確認すると、vagrant up時に、brrkshelfコマンドが実行され、Berksfileに記載されたcookbooksが~/.berkshelf/default/vagrant/berkshelf-***-default以下に作成され、chef soloコマンドにて仮想環境に転送されるよう。しかし、このberkshelf-***-default以下に、自作cookbookは作成されず、結果errorとなっている模様。
  • ちなみに、下記のopscode-cookbookのchef-repoをcloneした場合も、knife solo initの場合と同様に、errorになることを確認した。
  • git clone https://github.com/opscode/chef-repo.git
    

コード

原因

  • 不明

対応

  • Berkfsfileを_Berksfileにrename後、vagrant up実行すると正常に処理完了した。
    berkshelfコマンドの実行を抑制する事で、上述の事象は発生しなくなった。
    しかし、利用はよくわからない。
  • このままだと気持ち悪いので、Berkshelfコマンドを用いたrepository作成を試したところ、vagrant upの正常実行を確認できた。
    https://github.com/snumano/vagrant-berkshelf

まとめ

  • Berkshelfコマンドでrepository作成した場合、knife solo initした場合と比較して、ファイル構成とVagrantfileの設定内容が異なる事は確認できたが、どの部分が今回の動作の違いになっているのかは、今のところ不明。
  • 本事象の原因と根本対策について、どなたか教えていただけたら幸いです。
    (2013/7/23追記:Berksfileに自作cookbookをpath optionとともに追記することで、本事象を回避できることを確認しました。後日blogにまとめます)
  • berks cookbokコマンドは、cookbook = repositoryとして扱うようです。上述のサンプルコードでは、repository名であるchef-repoがそのままcookbook名になっているので、少しかっこ悪い。。。

最後に、入門Chef Soloは何回も読み返して参考にさせていただきました。






このエントリーをはてなブックマークに追加