vagrantでaws ec2インスタンスを立ち上げる

Vagrant 1.1 で EC2 を vagrant up - naoyaのはてなダイアリー
こちらの記事を参考にvagrantでec2を立ち上げるのを試して見ました.

ですが色々引っかかったりして大変だったので,備忘録的に残します.

まずはVagrantのインストールですがこれは他のところでもいっぱいあるのでそちらに任せるとします.ぶっちゃけvirtualBoxVagrant公式に行って最新版落としてくればいいんですけど.

Vagrantはgemでも入れようとすれば入りますが古い上にもう公式がgemはやめろって言ってるらしいので公式からパッケージを落としてくればいいと思います.


まず上記URLを参考にpluginをインストールし,awsのためのdummy boxを設定します.

$ vagrant plugin install vagrant-aws
$ vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box

その後作業用ディレクトリに入ってinitします.

$ vagrant init

設定ファイルのVagrantfileをいじります.

$ emacs Vagrantfile

そしてこんな感じに編集しました.

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "dummy"

  config.vm.provider :aws do |aws, override|
    aws.access_key_id     = #EC2の権限を持ったAccessKey
    aws.secret_access_key = #EC2の権限を持ったSecretAccessKey
    aws.keypair_name = "mot-ec2"
    aws.instance_type = "t1.micro"
    aws.region = "ap-northeast-1"
    aws.ami = "ami-39b23d38"
    aws.security_groups = [ 'vagrant' ]

    override.ssh.username = "ec2-user"
    override.ssh.private_key_path = "~/.ssh/mot-ec2.pem"
  end
end

参考URLの時からVagrantがアップデートしたりしています.そのおかげで少しオプションが変わっています.

aws.amiには使用するAMIを設定します.ここではAmazonLinux(64bit)のAMIを指定しています.
参考URLの時のAMIが現在存在しなかったのでそこで引っかかったりしてました.

aws.security_groupsで指定しているvagrantセキュリティグループはsshのみを許可したセキュリティグループです.sshを許可しないと色々残念になります.それ以外のポートなどは適宜セキュリティグループを修正してください.

ここまで設定すればだいたい終わりです.

$ vagrant up      # インスタンスが立ち上がる
$ vagrant ssh     # インスタンスにssh
$ vagrant destroy # インスタンスをterminate

僕自身まだAWSとかVagrantとか全然詳しくなくて勉強しながらやってますが,楽しいですね.
こうやってサーバをすぐ調達できるのは面白いなぁ.


これからはChef-soloとかも使ってサーバ構築して潰す生活をしたいと思います.
破壊なくして創造はなし

mozcのpropertyが出ない症状

最近ちょっと環境がおかしくなったのでDebianWheezyを入れなおしました.
その際のデスクトップ環境にはGnome3を採用しました.同時に日本語入力のためにuim-mozcかプリインストールされていました.
しかし個人的にibus-mozcが好きなのでaptからインストールしてibusに乗り換えました.

と,ここまで前フリ

僕は普段「。」→「.」「、」→「,」にして文章を打ちます.
そのためmozcのpropertyからキーボードの「。」を打ち込むと一発で「.」になるように設定する必要があります.
設定画面を出そうと

$ /usr/lib/mozc/mozc_tool -mode=config_dialog

としたのですが

libprotobuf ERROR google/protobuf/descriptor_database.cc:57] File already exists in database: config/config.proto
libprotobuf FATAL google/protobuf/descriptor.cc:862] CHECK failed: generated_database_->Add(encoded_file_descriptor, size): 
terminate called after throwing an instance of 'google::protobuf::FatalException'
  what():  CHECK failed: generated_database_->Add(encoded_file_descriptor, size): 
zsh: abort      /usr/lib/mozc/mozc_tool -mode=config_dialog

と怒られてしまいました.

いろいろ試した結果

$ sudo aptitude purge uim-mozc:amd64

とすればなおりました.

多分ibusuimが競合していたとかだと思います.
あといろいろ調べている過程でuimだと設定画面がでないとか言われていた気がするので[要出典]uim-mozcがおかしいんじゃないでしょうか.[要出典]

Let's note CF-S10でresumeが行えない問題を解決

僕はDebian GNU/Linux WheezyをLetsnote CF-S10で利用している.

これにはひとつ問題点がある.
それはsuspendとresumeができないことだ.正確に言えばsuspend,resumeを行った後にキーボードとマウスが使えなくなる超クリティカルな問題で,そうなってしまったら最後ssh等でPCに入るか強制終了である.

色々調べていると他の型番で何とかなったらしいのでそれを参考に行うとCF-S10でも利用できた.

以下に述べるのはその当時のバージョンなどなので適宜読み替えること

環境

$ sudo -i

# aptitude install build-essential kernel-package libncurses5-dev
# aptitude install linux-source-3.2

# cd /usr/src
# tar xvjf linux-source-3.2.tar.bz2
# cd linux-source-3.2

# cp /boot/config-3.2.0-4-amd64 .config
(デフォルトのconfigを使うので各環境に合わせて変わる)

# cd drivers/input/serio
# emacs i8042.c

.resume = i8042_pm_resume,
となっている行を
.resume = i8042_pm_restore,
に編集

# cd ../../..
# make oldconfig

# make menuconfig
(ここでカーネルコンフィグレーションができるのでしたい人はどうぞ)

# make-kpkg clean
# make-kpkg --initrd --revision=<任意の数字> kernel_image kernel_headers

# cd ..
# dpkg -i linux-image-3.2.46_<任意の数字>_amd64.deb

# reboot

再起動出来れば無事resume後にもキーボードとかが使えて幸せになる.

参考:Trouble shooting of suspend on Let's Note CF-B10

sshの便利感やばい

突然ですがsshは-Lオプションでポートフォワードができてすごい便利です.

internalでしか見れないwebページとかlocalhostに引っ張ってこれて便利です.

でも毎回接続時に設定するのすごい面倒で,別のポート通したくなった時とかに,
毎回認証通したりしてて凄く辛いなぁと思っておりました.

でもなんか色々みてたら繋ぎながら色々できるとのことなので備忘録的に書きました.

参考はこちらです.
SSH力をつけよう

なんかenter押したあとに~Cって入れるとコマンドが打てるようになるみたいです.
そこでhelpって打つと

Commands:
      -L[bind_address:]port:host:hostport    Request local forward
      -R[bind_address:]port:host:hostport    Request remote forward
      -D[bind_address:]port                  Request dynamic forward
      -KL[bind_address:]port                 Cancel local forward
      -KR[bind_address:]port                 Cancel remote forward
      -KD[bind_address:]port                 Cancel dynamic forward

とかhelp見れます.
一回コマンド打つとまた元のsshに戻るみたいなので,enter入力して~Cを入力してモードに入ります.

そこでおもむろに

-L 10000:localhost:80

とかすると自分のローカルマシンのlocalhost:10000に接続先の80ポートがバインドされました.
これで色々つなぎ替える時に便利になってすごい楽しいです.

解除はKつけてやればいいらしい.便利や.

init-loaderでスクリプトオンオフするzsh関数つくった

emacsのel管理にinit-loader.elっていうのがあります.

詳しい説明はググっていただくとして,今回はinit-loader.elによるスクリプト管理のオンオフをやってくれるzsh関数作りました.

ソースはこちらです.(指摘等大歓迎大感激です)

ディレクトリは.emacs.d/inits-availableと.emacs.d/inits-enableがあるとします.

追加したいelをinits-availableの方に放り込みまくります.
f:id:programmerMOT:20130324143311p:plain

あとは有効にしたいときはel-on.無効にしたいときはel-offのあとにスクリプト名を.el抜きで入れると有効無効が制御できます.

% el-on 00_load-path #これで00_load-path.elが有効に
% el-off 00_load-path #これで00_load-path.elが無効に

仕組みとしては単純でシンボリックリンクを貼ったり消したりしてるだけです.
しかしこれではスクリプト名を間違えてすごい辛いと思ったので,
ついでにスクリプト名補完もやって見ました.仕組みは参考ページを合わせて見ればわかると思います.

参考
zsh補完関数を自作すると便利

zsh関数のいい勉強になりました.

debian squeezeにgitlabインストールした

さくらのVPS登録した.
んでもってサークルとかにgitlabみたいなの導入してみたいなぁと思っていたので,
自分のサーバでテストしてみようということでインストールした.

環境 Debian squeeze-amd64
さくらのVPS 2G


正直ココらへん見たらわかる
https://github.com/gitlabhq/gitlabhq/blob/stable/doc/install/installation.md
https://gist.github.com/ryosms/4632650


んで詰まった点が一点あった.以下のコマンドをした時に

sudo -u gitlab -H bundle exec rake gitlab:setup RAILS_ENV=production

ERR unknown command 'exec'とか言われて,なんかエラー起きる.
調べると最初のadminの生成を行うとこで,これが落ちているとadminが生成されずログインできない感じなることがある.

ちょっとググったらちょっと前にissue上がってた.
Gitlab:setup fails unknown command 'exec' · Issue #2802 · gitlabhq/gitlabhq

squeezeのredis-serverとやらが古いからこっちのリポジトリから入れろとのこと.
でもまあ言うてる間にwheezyリリースされそうやしこの問題は解決されるかな.

SSDにDebianインストールした.

表題の通りDebianインストールをしました.

環境としてはCF-S10(Letsnote)です.

 

このLetsは少しばかり手を加えてあって

メモリ12GとCrucialのSSD256GB(CT256V4SSD2)にグレードアップされてます.

 

Windowsをほとんど利用しないことに気付きDebian wheezyをインストールすることを決めてインストールを始めましたが,何やらインストールが遅い.

 

これはおかしいと詳しい友人たちにも協力を仰ぎ検証した結果…

 

ファイルシステムext4だと遅くext2だと早いという結果になりました.

 

これには驚いた.普通新しいシステムの方が色々対応してて強いという固定観念に囚われていたが故のミスでした.

 

この記事を書いてる時に思い出したのですが,このSSD少し古い機種向けに作られた~~~的な記事とかあった気がします.(速度もSATA3Gbpsだったはず)

 

せっかくWindows飛ばしたのに辛い感じにならず助かった.