Slide 1

Slide 1 text

Floripa On Rails ServerSpec

Slide 2

Slide 2 text

@lucasandre : github.com/lucasandre
 @brodock : github.com/brodock Lucas Alencar
 Gabriel Mazetto


Slide 3

Slide 3 text

O Que é ServerSpec?

Slide 4

Slide 4 text

Rspec para DevOps:
 
 Você testa infra-estrutura manualmente? E quando alguma coisa muda?

Slide 5

Slide 5 text

Eu preciso testar meu servidor?

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Como faz?

Slide 9

Slide 9 text

Requisitos

Slide 10

Slide 10 text

$ gem install serverspec
 
 Fetching: specinfra-2.36.14.gem (100%)
 Fetching: rspec-its-1.2.0.gem (100%)
 Fetching: serverspec-2.19.0.gem (100%)
 ... $ serverspec-init
 
 Select OS type:
 1) UN*X
 2) Windows
 Select number: 1
 
 Select a backend type:
 1) SSH
 2) Exec (local)
 ...

Slide 11

Slide 11 text

Suporta Testar Diversos OS:
 ➔ Fedora/Red Hat/CentOS ➔ Debian ➔ Ubuntu ➔ Mac OS X ➔ FreeBSD / OpenBSD ➔ Solaris ➔ Suse / OpenSUSE ➔ Windows Deteção automática de OS, mas é possível especificar na mão.

Slide 12

Slide 12 text

require 'serverspec' 
 # RedHat 7 - 64bits:
 set :os, :family => 'redhat', :release => '7', :arch => 'x86_64'
 
 # Debian 7 - 32bits:
 set :os, :family => 'debian', :release => '7', :arch => 'i386'
 
 # Ubuntu 14.04 LTS - 64bits:
 set :os, :family => 'ubuntu', :release => '14.04', :arch => 'x86_64' ...

Slide 13

Slide 13 text

para Rubistas <3 Alguns exemplos

Slide 14

Slide 14 text

# describe command com matchers: its(:stdout), its(:stderr), its(:exit_status) 
 # Apache2 + Passenger:
 describe command('apachectl -M') do
 its(:stdout) { should contain('mod_passenger') }
 end # nginx + Passenger:
 describe command('nginx -V') do
 its(:stdout) { should contain('--with-passenger') }
 end

Slide 15

Slide 15 text

# Vamos transformar em um shared behaviour: # Apache2 + Passenger:
 shared_examples 'apache2::passenger' do
 describe command('apachectl -M') do
 its(:stdout) { should contain('mod_passenger') }
 end end # nginx + Passenger: shared_examples 'nginx::passenger' do
 describe command('nginx -V') do
 its(:stdout) { should contain('--with-passenger') }
 end
 describe package('passenger') do
 it { should be_installed }
 end end

Slide 16

Slide 16 text

# utilizando em hosts distintos: describe 'myserver.com' do
 include_examples 'apache2::passenger' describe package('apache2') do it { should be_installed }
 end end describe 'myotherserver.com' do include_examples 'nginx::passenger' describe package('nginx-extras') do it { should be_installed }
 end end

Slide 17

Slide 17 text

shipit.resultadosdigitais.com.br QUESTIONS?

Slide 18

Slide 18 text

Links Úteis ➔ ServerSpec (Documentação)
 (http://serverspec.org/resource_types.html)
 ➔ TDD Docker + ServerSpec
 (https://robots.thoughtbot.com/tdd-your-dockerfiles-with-rspec-and-serverspec)
 ➔ ChefSpec + Test Kichen + ServerSpec
 (https://micgo.net/serverspec-guard-and-test-kitchen-testing-servers-like-a- boss/)