Switching from Puppet to Ansible

Post on 10-May-2015

1.220 views 3 download

description

A small talk I gave at the Austin Ansible meetup.

Transcript of Switching from Puppet to Ansible

Switching from Puppet to Ansible

Dennis “the awesome” Rowe WP Engine

Little about me

• Done some Chef

• Done some Puppet (last gig)

• Now doing some Ansible

Love one another

• Emacs vs. Vi

• Linux vs. Windows

• Puppet vs. Chef

• Not this talk

Puppet

• Founded in 2005 by Luke Kanies

• Client-server or standalone client

• Written in Ruby but has its own language (also called puppet)

Ansible

• Founded in 2012 by Michael DeHaan

• Orchestration engine (manage nodes via SSH)

• Written in Python with configuration done using yaml

Agentfull - Puppet• Puppet requires software to be installed on the

client (Ruby, at that).

• Puppet can be a pain to install in mixed environments. Think AIX, BSD, Solaris, and others.

• More packages to keep up to date. Now you have to update an agent on 1000 servers, and what if it doesn’t work?

Agentless - Ansible• Less boot strapping required

• Most systems come with SSHD installed

• Ansible does not require software to be installed on the client.

• If managing a standalone host, then benefits are less. You have to install about the same number of bits for Puppet standalone vs. ansible run locally.

Language - Puppet• In puppet, order of statements on disk does not

specify order of execution. This can be difficult for people to understand the first time around.

• Yet another domain specific language

• Extensible in Ruby

• A lot of promise that never materialized

Language - Ansible• YAML

• YAML

• Human readable

• Machine readable

• Not what most people think of as a programming language

• Easier to understand initially

Language - The Bad

• The underlying language implementation leaks via the templating system.

• Both Python and Ruby suck at threading.

• Rant rant rant

Puppet

• Barrier to entry is higher

• Large ecosystem

• PuppetDB, MCollective, Hiera

• Larger pool of people with experience

Ansible

• Use a standards based configuration language (feel a little dirty calling it a computer language)

• SSH (everybody uses it, known quantity)

• It is new. Ansible has a great opportunity to learn from the past mistakes of other CMs.

General Thoughts

• Bad code can be written in any language

• Configuration management is more of an art