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は何回も読み返して参考にさせていただきました。






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

2013年7月18日木曜日

vagrant + knife soloでnginxをinstallしてみる

備忘録としてまとめます。

local環境


  • MacOSX 10.8.4
  • ruby 1.9.3p327

作成する仮想環境


  • Ubuntu 12.04
  • Nginx

手順

  1. chef-soloをinstall
  2. $ gem install chef
    $ knife -v
    Chef: 11.4.4
    
  3. knife-soloをinstall。最新のver0.3.0をinstallするため、githubからcloneします。
    $ git clone git@github.com:matschaffer/knife-solo.git
    $ cd knife-solo
    $ bundle
    $ bundle exec rake install
  4. Virual Boxをinstall
    こちらからDownLoad
  5. vagrantをinstall
  6. $ gem install vagrant
    
  7. vagrant環境を作成
    vagrantbox.esから使いたいboxを選ぶ
    $ vagrant box add ubuntu12_04 http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-vagrant-amd64-disk1.box
    $ vagrant box list
    $ mkdir Ubuntu
    $ cd Ubuntu
    $ vagrant init ubuntu12_04
    $ vagrant up
    
    下記で仮想環境にアクセスできる
    $ vagrant ssh
    
    knife soloでsshアクセスできるように下記を実施。host名はdev1とする。
    $ vagrant ssh-config --host dev1 >> ~/.ssh/config
    
  8. 仮想環境にknife soloをinstall
    $ knife solo prepare dev1
    
  9. cookbookレポジトリを作成。
    とりあえず、上述のVagrantのdirに一緒に作成しておきます。
    $ knife solo init chef-repo
    $ cd chef-repo
    $ git init
    $ git add .
    $ git commit -m 'init'
    
  10. 仮想環境にinstallするレシピを書く
    $knife cookbook create nginx -o site-cookbooks
    $vi site-cookbooks/nginx/recipes/default.rb
    package 'nginx' do
      action :install
    end
    
    service "nginx" do
      supports :status => true, :restart => true, :reload => true
      action [ :enable, :start ]
    end
    
    $ vi nodes/dev1.json
    {
      "run_list":[
        "nginx"
      ]
    }
    
  11. 仮想環境にレシピを適用
    $ knife solo cook dev1
    
  12. 仮想環境側で確認
    nginxのバージョンが最新にならない。。。srcからinstallしようかな。。。
    $ nginx -v
    nginx version: nginx/1.1.19
    
  13. 動作確認したら、recipeをcommit
    $ git add ./site-cookbooks/nginx/
    $ git commit -m 'add nginx recipe'
    

参考:
入門Chef Solo
http://docs.komagata.org/5098
このエントリーをはてなブックマークに追加

2013年7月15日月曜日

「プログラミング入門 - Rubyを使って -」をやってみた その1

Rubyの勉強に下記サイトの練習問題に挑戦します。1章はirbを使ってます。
プログラミング入門 - Rubyを使って -, by Chris Pine, 日本語ver. by S. Nishiyama

1.数(Numaber)

  • 1年は何時間でしょうか?
    うるう年ではないとします。
>> 24*365
=> 8760
  • 10年間は何分でしょうか?
    うるう年が2回ありますので、計算に含めます。
>> 60*24*(365*10+10/4)
=> 5258880
  • あなたが生まれてから今日まで何秒たっているでしょうか?
>> (Time.now - Time.local(1973,12,3,0,0,0)).to_i
=> 1250124789
  • あなたは一生のうちいくつのチョコレートを食べたいですか?
    1週間に1つのチョコを食べるとします。
>> (80*365)/7
=> 4171
  • 私が生まれてから10億3400万秒 たっているとしたら、私は今何歳でしょう
>> 1034000000/(60*60*24*365)
=> 32

4.数と文字列の変換

  • 最初に姓、次に名前を聞いて、最後にフルネームに対してあいさつを するようなプログラムを書いてみましょう。
pochi-2:Test snumano$ cat 4-1.rb
#!/usr/bin/ruby

puts 'こんにちは。あなたの姓を入力してください'
last = gets.chomp

puts '次は、あなたの名を入力してください'
first = gets.chomp

puts 'あなたの名前は' + first + ' ' + last + 'ですね。'

pochi-2:Test snumano$ ./4-1.rb
こんにちは。あなたの姓を入力してください
Numano
次は、あなたの名を入力してください
Shugo
あなたの名前はShugo Numanoですね。
  • 好きな数を入力してもらい、それに1を加えて、その結果を ベターな 数字として薦めるプログラムを書きましょう。
  •  
pochi-2:Test snumano$ cat 4-1.rb
#!/usr/bin/ruby

puts 'こんにちは。あなたの姓を入力してください'
last = gets.chomp

puts '次は、あなたの名を入力してください'
first = gets.chomp

puts 'あなたの名前は' + first + ' ' + last + 'ですね。'

pochi-2:Test snumano$ ./4-1.rb
こんにちは。あなたの姓を入力してください
Numano
次は、あなたの名を入力してください
Shugo
あなたの名前はShugo Numanoですね。

5.メソッド(method)

  • 「怒ったボス」のプログラム
pochi-2:Test snumano$ cat 5-1.rb
#!/usr/bin/ruby

$KCODE = 'UTF-8'

puts '望みは何だ?'
hope = gets.chomp

if hope =~ /給料上げてください/ then
  puts 'なにぃ? "給料上げてください" だとー!! おまえは首だ!! '
else
  puts 'なにぃ?' + hope + 'だとー!!お前は首だ!!'
end
pochi-2:Test snumano$ ./5-1.rb
望みは何だ?
休みたい
なにぃ?休みたいだとー!!お前は首だ!!
pochi-2:Test snumano$ ./5-1.rb
望みは何だ?
給料上げてください
なにぃ? "給料上げてください" だとー!! おまえは首だ!! 
  • 「目次」を表示する プログラム
pochi-2:Test snumano$ cat 5-2.rb
#!/usr/bin/ruby

$KCODE = 'UTF-8'

lineWidth = 20
lineWidth2 = 10

index = '目次'
chap1 = '1章:  数'
chap1Page = 'p. 1'
chap2 = '2章:  文字'
chap2Page = 'p. 72'
chap3 = '3章:  変数'
chap3Page = 'p. 118'

puts index.center(lineWidth)
puts chap1.ljust(lineWidth) + chap1Page.center(lineWidth2) 
puts chap2.ljust(lineWidth) + chap2Page.center(lineWidth2) 
puts chap3.ljust(lineWidth) + chap3Page.center(lineWidth2) 
pochi-2:Test snumano$ ./5-2.rb
       目次       
1章:  数             p. 1   
2章:  文字         p. 72   
3章:  変数         p. 118  
今回はここまで。6章以降は後日。。。
このエントリーをはてなブックマークに追加