2013年8月24日土曜日

RSpecを使ってDNSのテストを自動で実施する方法

DNSのテストを素早く回すことができるrspec-dnsというのがあるので紹介する。 これを使えば、DNSを変更するときにだいぶ安心できるはず。

使うもの

どのように書くのか?

次のように update_config でDNSを指定する。(config/dns.ymlというのを更新するので、なにもやらなければ、config/dns.ymlに記載されているまま) レコードごとにspecを記載していく。 複数のDNSをテストしたい場合は、 update_config でDNSを指定していく。

実行のやり方

  • git clone
    • % git clone -b example https://github.com/otahi/rspec-dns.git
  • move into example directory and run
    • % cd rspec-dns/example
    • % rvm use 1.9.3
    • % bundle install --path=vendor/bundle --binstubs=vendor/
    • % bundle exec rspec -c -f doc

どのような出力になるか?

% bundle exec rspec -c -f doc 

github.com
  should have the correct dns entries with {:type=>"A", :address=>"192.30.252.128"}
  should have the correct dns entries with {:type=>"A", :address=>"192.30.252.129"}
  should have the correct dns entries with {:type=>"A", :address=>"192.30.252.130"}
  should have the correct dns entries with {:type=>"A", :address=>"192.30.252.131"}
  should have the correct dns entries with {:type=>"A", :address=>"204.232.175.90"}
  should have the correct dns entries with {:type=>"A", :address=>"207.97.227.239"}
  should have the correct dns entries with {:type=>"MX", :exchange=>"ASPMX.L.GOOGLE.com", :preference=>10}
  should have the correct dns entries with {:type=>"MX", :exchange=>"ALT1.ASPMX.L.GOOGLE.com", :preference=>20}
  should have the correct dns entries with {:type=>"MX", :exchange=>"ALT2.ASPMX.L.GOOGLE.com", :preference=>20}
  should have the correct dns entries with {:type=>"MX", :exchange=>"ASPMX2.GOOGLEMAIL.com", :preference=>30}
  should have the correct dns entries with {:type=>"MX", :exchange=>"ASPMX3.GOOGLEMAIL.com", :preference=>30}
  should have the correct dns entries with {:type=>"NS", :name=>"ns1.p16.dynect.net"}
  should have the correct dns entries with {:type=>"NS", :name=>"ns2.p16.dynect.net"}
  should have the correct dns entries with {:type=>"NS", :name=>"ns3.p16.dynect.net"}
  should have the correct dns entries with {:type=>"NS", :name=>"ns4.p16.dynect.net"}
  should have the correct dns entries with {:type=>"TXT", :data=>"v=spf1 include:_spf.google.com include:_netblocks.zdsys.com include:sendgrid.net include:mailgun.org include:smtp.github.com ~all"}
  should have the correct dns entries with {:type=>"SOA", :mname=>"ns1.p16.dynect.net", :rname=>"hostmaster.github.com", :refresh=>3600, :retry=>600, :expire=>604800, :minimum=>60}

Finished in 2.4 seconds
17 examples, 0 failures
% 

Reference

2013年8月4日日曜日

Linux Container (lxc) on Cent OS 6.4 on Vagrant VM

Linux Container(lxc) on Cent OS 6.4 on Vagrant VM

vagrant で作ったCent OS 6.4 のVMの上に、Linux Containerを複数起動できる環境を作る方法をまとめる。 中身はgithubを参照のこと。

背景

  • MacやWindowsをホストとして利用するときに、Linux由来のツールをそのまま利用することが難しい場合がある。
    • たとえば、iptables, openvswitch など
  • lxcの情報はUbuntuの情報が多く、いつも使っているCent OSの情報が少なかったので、ちょっと試した。
  • ちょっとした複数マシン連携のテストなんかに使えるかな?と思う。
  • Tremaの環境を作って遊びたいときに使えるのではないか?とか。

構成

lxcのVM2つをvagrant で作ったCent OS のVMの上に作る。

layout.

事前条件

  • VirtualBox installed(upper 4.2.16)
  • vagrant installed(uppper 1.2.0)
  • vagrant box has been set as "centos64-base"
    • %vagrant box add centos64-base http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box
      • ここのURLはそのうちなくなるかもしれない

動かし方

  • git リポジトリをとってくる
    • %git clone https://github.com/otahi/vagrant-centos-lxc.git
  • vagrant up
    • %vagrant up
  • しばし待つ
  • vagrant VMにログイン
    • %vagrant ssh
  • lxc VMs にログイン
    • %sudo lxc-console -n vm1
    • %sudo lxc-console -n vm2
  • これで構成図のとおりのVMが動いているはず。