Knife-ZeroでVagrant仮想マシンのプロビジョニングをしてみた話
はじめに
以前からChefを使いたい欲は高かったのですが、 Chefってなかなか最初の導入までのハードルが高いと思うのは私だけでしょうか。
本来はChef ServerとChef Clientを用意してあげなきゃいけない、とか、
Chef-soloとかもあるけど今後は使わないでねって公式ブログ
で言われてたりとか、
chef-clientが流行ってるみたいだけど、リモートノードの管理ができなかったりとか。
そこで便利なものがあります。Knife-Zeroです。
続きを読むVagrantの共有フォルダ機能が死ぬ条件を調べてみたメモ
0. はじめに
まだ原因は突き止められていません。 一つ一つやったことを書き留め、何がきっかけで共有フォルダ機能が死ぬのかを確かめたいと思います。
死ななかったら…その時はその時です。
0.1 そもそもどんなエラーか
Vagrant立ち上げ時、以下のようなエラーが出ます。
Failed to mount folders in Linux guest. This is usually because the "vboxsf" file system is not available. Please verify that the guest additions are properly installed in the guest and can work properly. The command attempted was: mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` workspace /workspace mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` workspace /workspace The error output from the last command was: /sbin/mount.vboxsf: mounting failed with the error: Protocol error
解決策は色々ネットに転がってたりするのですが、 そのどれもが通用しなったので泣いております。
仕方がないので新たなVMを作って、環境再構築がてらトリガーを探そう、という魂胆です。
1. 手順
1.0 vagrantfile
の編集
Vagrantfileを編集して、
などを行った。 前回共有フォルダが死んだ直前にした、覚えている操作はメモリの増強でした。
しかし、特にこのあたりの設定をいじっても変わりませんでした。
1.1 yum update
カーネルから何から、up直後の状態にyum update
をかけました。
これによってCentOSのバージョンが7.1から7.2に上がります。
最初はこれが原因だ!!!と思ってやったのですが、 不幸にも(?)これは原因ではなく、共有フォルダ機能はそのまま使えてしまいました。
1.2 yum install vim
, yum install zsh
(この時点で既にいくつかの手順をメモし損ねていろいろすっ飛ばした感があってアレですが) お次はvimとzshを入れてみました。多分関係ないけど。
これも問題なく通りました。
1.3 zshへのシェル切り替え
$ chsh -l $ chsh /bin/zsh
切り替えたら再起動。 これまた特に問題なく共有できてしまった。もうなんなんだこれ。
1.4 oh-my-zshのインストール
1.5 rbenvのインストール
1.6 ruby-buildのインストール(ダウンロード?)
1.7 ruby(2.3.1)のインストール
1.7までやっても特に問題は発現しませんでした。 問題がないことはいいことなはずなのに納得いきません。
gitの取り消し系コマンドを調べてみた
Gitのようなバージョン管理の最大のメリットは、「何かやらかしたときにやり直せる」ことだと思います。
が、実際Gitを使うと、よく叩くコマンドはgit add
、git commit
、git push
、git pull
ぐらいなもので、
なかなか元に戻したり、取り消したりといったコマンドを使うことがないです。
使わないにこしたことはないんでしょうけど。
ですが、開発をしていると、「ちょっと今までの変更をなかったことにしたい…」なんてことは割とあります。
そこで、普段めっちゃ使うわけでもないけどたまに欲しくなる取り消し系コマンドを調べてみました。
間違ってaddしちゃったものを取り消したい
よくある取り消したい事例その1。
これの対処法はgit status
したときに出てきてたりします。
以下のようなコマンドで戻せます。
$ git reset HEAD <FILE>
<FILE>
にはaddを取り消したいファイル名が入ります。
間違えてgit add -A
とかgit add .
とかやっちゃって、とりあえず全部取り消したい!って時は
$ git reset HEAD .
で全て取り消せます。安心してaddをやり直しましょう。
割と使うのに忘れやすいコマンドなので再確認。
Railsでpryを割り込ませてデバッグするメモ
Railsアプリを開発中に、ブレークポイントを仕掛けておいて処理を中断させ、 その時までの変数の状態なんかを調べたりしたいことが割とある。
それを実現する方法の1つとして、pryを使った方法がある。
使い方は簡単、ブレークポイントにしたい位置に、
binding.pry
と書くだけ。これで該当箇所まで実行されたらpryが立ち上がる。 書ける場所は結構柔軟で、RailsだとViewにも埋め込めたりする。
また、
binding.pry if hogehoge
のように書けば実行条件も指定できるので、より便利である。
更に、pry-byebug
なるものを使うとステップ実行までできるようになるらしい。
だいぶ興味深いが、byebug
とかMRI
とか謎ワードが出てきたので後日調べる。
Ruby学習記 その1 Ruby入門
Rubyは前から何度か触ったことがあるのですが、
勉強してもあまり使わず身についていないので、今一度勉強しなおし。
気になったところ、多言語と大きく違うところなどを中心にまとめます。
画面への出力
どんなプログラミング言語でも最初に行うのは画面への出力。
Rubyでは基本的な出力用メソッドが3つあるようです。
- puts
- p
printは名前の通り、画面に出力対象のオブジェクトを出力する。
ただし改行などはせず、入力したものがそのまま出力される。
putsはprintと違い、改行を行うタイプの出力。
pは上記2つとは少し異なり、主にデバッグ用に使われる出力。
表示対象のオブジェクトによって出力形式が変わるとのこと。
文字列の扱い
Rubyにおける文字列の扱いですが、基本的には""、もしくは''で囲むと文字列として扱われるのは他の言語と同じ。
""で囲んだ場合はエスケープシーケンスが処理される(\nとか\tとか)。
''で囲んだ場合は、囲まれた中の文字列がそのまま出力される。
ただしバックスラッシュそのものとシングルクォーテーションは\\,\'のようにしないといけない。
いろいろな文字列の出力のしかた
print "output test."
のような書き方が基本ですが、
print "output ", "test."
のような書き方もできる。
変数を出力する際の方法は大きく分けて二通り。
print "str1 is ", str1, "."
のように","で繋げる方法。わかりやすい。
もう一つの方法として、
print "str1 is #{str1}."
のような書き方もある。なれたらこっちの方が直感的かもしれない。
条件分岐
if ~ then, else
基本形は以下。
if int1 == 1 then 任意の処理 else 任意の処理2 end
thenは省略可能らしく、
if int1 == 1 任意の処理 else 任意の処理2 end
とも書ける。then無しのほうが多言語のif文に近い…?
while
基本形は以下。
while i < 10 do 任意の反復処理 end
doは省略可能。このdoは無い方がわかりやすい気もするが好みか。
times
あまり馴染みのない反復処理の書き方だが、簡易forみたいなものだろうか。
基本系は以下。
10.times do 任意の反復処理 end
繰り返し回数が決まっている場合はこれ。
もちろん繰り返し回数の指定部分は変数にもできる。
なお、doは省略不可。
コメント
コメントの書き方は重要なので絶対に押さえておく。
# test comment i = 10 =begin area comment test. =end puts i
#を使うと、その行の#以降がコメントとして扱われる。
また、範囲コメントは=beginと=endで囲む。
なお、範囲コメントの=beginと=endは両方とも行頭になくてはならず、
行中の一部だけをコメントアウトするようなことはできないらしい。