Home | 문태준 | 시스템어드민 메일링 | Sys Admin 세미나
Skip to end of metadata
Go to start of metadata

서버 설정을 테스팅할 수 있는 프로그램. 

http://serverspec.org/

But the true aim of Serverspec is to help refactoring infrastructure code.

사용법은 serverspec 사이트에서 보면 되며 지원하는 리소스 타입

설치

Ubuntu에서 설치 : 일반사용자로 설치를 할 경우에는 퍼미션 관련한 에러가 났다. 일반유저로 설치하는 방법이 있겠지만 그냥 root로 프로그램을 설치를 해 주었다.

설정

설정하기 : serverspec-init 을 실행하고 원하는 hostname 을 입력하면 샘플 spec file로 spec/www.example.jp/sample_spec.rb 가 생성이 된다.

SSH를 이용하여 원격에 있는 서버를 대상으로 실행을 할 때에는 사전에 ssh 설정이 적절하게 되어 있어야 한다.

위와 같이 실행을 한 경우 serverspec에서 다음과 같은 텟플릿을 구성을 한다. 각 호스트당 테스트를 구성할 수 있다.

 

실행하기

테스팅 실행하기

위 명령 실행시 http://serverspec.org/ 페이지에는 "/usr/bin/ruby -S rspec spec/www.example.jp/sample_spec.rb" 이라고 되어 있는데 이런 식으로 실행을 할 경우에는 serverspec 을 설치한 서버에 처음 로그인을 한 user로 로그인을 시도한다. 

spec/spec_helper.rb 에서 변경을 하면 된다고 하는데 ruby 를 잘 몰라서 어떻게 해결을 할 수 있는지는 모르겠다.

그렇지만 rake spec으로 실행을 할 때는 현재 로그인되어 있는 user로 실행을 하기 때문에 문제가 없었다.


테스팅

10.210.200.187 host에 대해서 테스팅 케이스를 생성을 함.

위와 같이 작성을 한 후 rake spec 명령을 실행함.

How to use Serverspec tests as shared behaviors

http://serverspec.org/advanced_tips.html 에서 How to use Serverspec tests as shared behaviors 를 이용하면 각종 테스트 케이스를 만들어서 여러 호스트에서 이용을 할 수 있다.

그렇지만 위 문서에는 설명이 나와있는데 이 경우 serverspec 관련한 몇가지 소스를 수정을 할 필요가 있다.  Rakefile, spec/spec_helper.rb 두가지를 수정을 해주면 된다.

 

serverspec-init 을 실행하여 10.210.200.77 서버에 대해서 설정을 한 초기 설정

함께 사용을 할 test를 spec/shared 디렉토리에 구성을 한다.

Rakefile은 https://github.com/rubyisbeautiful/serverspec_examples/blob/master/Rakefile 을 그대로 이용을 한다.

Rakefile은 테스팅을 할 대상 서버, test spec 파일을 어떻게 가져올지를 지정을 하는 부분이다.  task가 기본 샘플파일 설정인 spec이 아닌 serverspec 이므로 이 부분을 조심해야 한다.

이 파일을 이용할 경우 rake targets 를 이용하면 어떤 서버를 대상으로 하는지 보여주여서 편리하다.

이제 기본으로 생성이 된 spec_helper.rb 파일을 변경을 해주어야 한다.

https://github.com/rubyisbeautiful/serverspec_examples/blob/master/spec/spec_helper.rb 파일을 참고하면 된다.

우리가 필요한 것은 spec/shared/base/init.rb 를 불어오는 부분인데 shared/ 밑에서 rb 파일을 불러오는 부분만 수정을 해서 사용을 하면 된다.

 

실행하기 :  rake serverspec 으로 실행

How to share Serverspec tests among hosts

http://serverspec.org/advanced_tips.html : 여러 개의 호스트에서 serverspec 테스트 공유하는 방법. 여러 개의 role을 구성하여 테스트를 구성할 수 있다.

관련자료

http://serverspec.org/advanced_tips.html : 여러 개의 호스트에서 serverspec 테스트 공유하는 방법, 특정 호스트별 변수 설정, 병렬 실행, sudo 제어하기 등 내용이 있음.

https://github.com/rubyisbeautiful/serverspec_examples : 예제

 

Labels
  • No labels
  1. packer 로 AMI를 빌드하면서 serverspec을 직접 마지막에 실행하여 문제 있으면 AMI 생성을 취소함.

    http://annaken.github.io/testing-packer-builds-with-serverspec