Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?

Ops研修(11月13日)

Chapter 5: Serverspec の導入

1. 先日、gem install でserverspecを導入したので,initしてみる

https://gist.github.com/yutokyokutyo/f402de8fb90f28e58afe

  • 途中でssh接続なのか、localなのかを選択する場面があったが、今回はもうssh接続してVm上にいるので、localを選択

  • serverspec-initで作られたファイルを見る

    • Rakefile
    • spec/defalt/sample_spec.rb
    • spec/spec_helper.rb
  • bundle install --path vnderでvender以下に置いてしまった

    • 本来ならvender/bundle以下に行くべきだった

bundle exec rake spec をするとサーキュラーエラーが生じる

  • 恐らくRakeとvagrantの両方でdefaltになってしまっているから起きたものと思われる
  • task :defalt => :all => targets のようなサーキュレーションになっており、targetsでdefaltというvagrantのdefaltを見ようとするが、rakeファイルの中のdefaltをまたよんでしまい、task :defalt => :all => targets => defalt となってしまい、いつまでたってもvagrantのdefaltを見ようとしないっぽい。
  • Rakefileのtask :default => :allの部分をコメントアウトすることで解決
  • serverspecのバージョンを昔のものに固定するのもありかも。
rake aborted!
Circular dependency detected: TOP => spec => spec:all => spec:default => spec:all
Tasks: TOP => spec => spec:all => spec:default
(See full trace by running task with --trace)

複数のVMを使うには

  • 複数のVMを扱う場合は一つ一つに名前をつける必要がある。そういった場合はVagratfileに以下のように記述する。
  • ただし名前付けを行った場合、vagrant upvagrant ssh、,bundle exec rake specを扱う際にいちいち名前の指定をしなければいけない!めんどい!!
config.vm.define :好きな名前 do |c|
    c.vm.box      = ""
    c.vm.box_url  = ""
    c.vm.hostname = ""
    define_virtualbox c
    c.vm.provision :shell do |shell|
      shell.path = "vagrant/build-proftpd.sh"
    end
  end

2. 第3章4章でインストールをしたものをピックアプしてテストを書いてみる

  • まずはインストールされているかどうかのチェックから!
  • リソースタイプの指定が上手くいかない
  • by('gem')
  • with_version('4.0.8')
  • パッケージはテストを通るが、railsやrubygemsやrubyが通らない。

人によってはrubyがインストールされていることを確かめるために以下の手順で確かめていた!

1. /usr/local/rbenv/bin/rbenv に rbenv がインストールされていること
2. /etc/profile.d/rbenv.sh が正しく作成されていること
3. rbenv のプラグインとして ruby-build がインストールされていること
4. 目的のバージョンの Ruby が正しくインストールされていること
5. Ruby 2.1.2 が global として設定されていること

これぐらい確認しないとダメかな。。判断が難しい。

備考

  • unicorn, thin => rack ベースなのでアプリケーションサーバー
  • webrick => http サーバー
  • これらを雑にまとめるとwebサーバー
  • Tipsはおまけ
  • gem specification <gem名> :gemの仕様を確認できる。YAML形式でgemの依存関係などが出力される。
  • serverspecはhaコピペがしやすいので各種サービスを参考に作るとできちゃう。かも。.
  • 構築するアプリケーションがサードパーティのライブラリに依存している場合もある。このようなライブラリは、vendor/ ディレクトリへ配置するようにすると良い
  • bundler:依存するパッケージをインストールする際に,
  • 一部のバージョンを下げるなど、解決出来る組み合わせがあれば、うまく解決してくれる
  • 開発環境を指定できる
  • 何をインストールしたのかを管理できる
  • serverspecはvendor/bundleディレクトリ以下にいれるべき
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.