Switching from Puppet to Ansible

13

Click here to load reader

description

A small talk I gave at the Austin Ansible meetup.

Transcript of Switching from Puppet to Ansible

Page 1: Switching from Puppet to Ansible

Switching from Puppet to Ansible

Dennis “the awesome” Rowe WP Engine

Page 2: Switching from Puppet to Ansible

Little about me

• Done some Chef

• Done some Puppet (last gig)

• Now doing some Ansible

Page 3: Switching from Puppet to Ansible

Love one another

• Emacs vs. Vi

• Linux vs. Windows

• Puppet vs. Chef

• Not this talk

Page 4: Switching from Puppet to Ansible

Puppet

• Founded in 2005 by Luke Kanies

• Client-server or standalone client

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

Page 5: Switching from Puppet to Ansible

Ansible

• Founded in 2012 by Michael DeHaan

• Orchestration engine (manage nodes via SSH)

• Written in Python with configuration done using yaml

Page 6: Switching from Puppet to Ansible

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?

Page 7: Switching from Puppet to Ansible

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.

Page 8: Switching from Puppet to Ansible

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

Page 9: Switching from Puppet to Ansible

Language - Ansible• YAML

• YAML

• Human readable

• Machine readable

• Not what most people think of as a programming language

• Easier to understand initially

Page 10: Switching from Puppet to Ansible

Language - The Bad

• The underlying language implementation leaks via the templating system.

• Both Python and Ruby suck at threading.

• Rant rant rant

Page 11: Switching from Puppet to Ansible

Puppet

• Barrier to entry is higher

• Large ecosystem

• PuppetDB, MCollective, Hiera

• Larger pool of people with experience

Page 12: Switching from Puppet to Ansible

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.

Page 13: Switching from Puppet to Ansible

General Thoughts

• Bad code can be written in any language

• Configuration management is more of an art