© 2014 Cassini Consulting
Andreas Schmidt
Testing server infrastructure with
serverspec
Cassini Consulting
@cassinigmbh
• IT & Management Consulting
Andreas Schmidt
• From Dev to Ops
• Infrastructure & Deployment
Automation w/ ruby
• Purpose of infrastructure testing
• #serverspec
• Examples / Demo
• Use Cases & benefits
Provisioning &
Delivery
Application
being tested?
Servers
being tested?
How is
infrastructure
being specified?
„Startup“
• Recent cloud
technology
• Virtual Infrastructure
Provisioning
• „Phoenix Server“
„Classic“
IT Environments
• Both virtualized &
non-virtualized
• Mixed Provisioning
processes
• IT outsourcing
• IT System & Software
Architecture
Regulated
IT Environments
• i.e. banking,
insurance
companies, governmen
t
• + Compliance
• + Security
Low Cost
Short Cycle Time
Documentation
(Internal/External)
Audit Capabilities
Internal
Documentation
Acceptance Tests
Automated
Provisioning &
Configuration
Management
Lower-level configuration aspects
• VM infrastructure & kernel parameters
• Networking
• Logical volume management
Side effects
• RPM post-install scripts
Documentation
• Specification of infrastructure
• Human Readable
Testing on machine itself
what‘s missing?
Machine parse-able
Human read-able
Infrastructure
Specification
serverspec
• www.serverspec.org
• github.com/serverspec/serverspec
MIT License
Gosuke Miyashita @gokusenator
„With serverspec, you can write RSpec tests for
checking your servers are configured correctly.“
serverspec
Development box
CM
code
Development box
CM
code
CM
code
specs
Test locally
Development box
CM
code
Staging
Provision
CM
code
specs
box
„state“
Test locally
Development box
CM
code
Staging
Provision
Test locally
CM
code
specs
box
„state“
server
spec
„Spec“ box
Development box
CM
code
Staging
Provision
Test locally
CM
code
specs
box
„state“
Test on
server(s)
server
spec
„Spec“ box
Development box
CM
code
Staging
Local VM or Container
Provision
Test locally
CM
code
specs
box
„state“
Provision
Test on
server(s)
server
spec
„Spec“ box
Development box
CM
code
Staging
Local VM or Container
Provision
Test locally
CM
code
specs
box
„state“
Test
Provision
Test on
server(s)
server
spec
„Spec“ box
Development box
CM
code
Staging
Local VM or Container
Provision
Test locally
CM
code
specs
box
„state“
Test
Provision
Test on
server(s)
server
spec
„Spec“ box
$ gem install serverspec
diff-lcs, highline, rake
net-ssh
rspec, rspec-core, rspec-
expectations, rspec-mock
specinfra, serverspec
Basics
ssh to target
hosts
spec basics
„Backend“ for infrastructure
tests (local/remote, command
abstraction, helpers)
„Frontend“ w/
resource
types
 rspec
Demo
• Serverspec Basics
• Overview of resource types
• Using abstractions and facts
• Introduce roles
• Environment-independent specs
through properties
Demo
• github.com/aschmidt75/serverspecplayground
Monitoring vs. Spec
• Dynamic Aspects
(crashed servers, services
not reachable, disk full, ...)
• Mostly in „internal form“,
not human readable,
special checks buried
in scripts
• Static Aspects
(how system is built)
• Explicit form,
human readable
• Keep your system
up & running
• Build according to a
specification and prove
compliance with it
Additional tools
• Comparable:
rspec-system ( beaker-rspec), rspec-system-serverspec
• Integrate serverspec into vagrant as a provisioner:
github.com/jvoorhis/vagrant-serverspec
• Reporting
http://vincent.bernat.im/en/blog/2014-serverspec-test-
infrastructure.html
Infrastructure
QA
Infrastructure
regression
testing
Automated
acceptance
testing
Audit
Capabilities
Work
test driven –
Define, build,
compare your
environments.
github.com/aschmidt75/serverspecplayground
andreas.schmidt@cassini.de
xing.to/aschmidt
@aschmidt75
Cassini Consulting
Niederlassung Düsseldorf
Andreas Schmidt
Bennigsen-Platz 1
40474 Düsseldorf
Deutschland
andreas.schmidt@cassini.de
visit www.cassini.de
Alle Angaben basieren auf dem derzeitigen Kenntnisstand. Änderungen vorbehalten.
Dieses Dokument von Cassini Consulting ist ausschließlich für den Adressaten bzw.
Auftraggeber bestimmt. Es bleibt bis zur einer ausdrücklichen Übertragung von
Nutzungsrechten Eigentum von Cassini.
Jede Bearbeitung, Verwertung, Vervielfältigung und/oder gewerbsmäßige Verbreitung
des Werkes ist nur mit Einverständnis von Cassini zulässig.

OSDC2014: Testing Server Infrastructure with #serverspec