Slide 1

Slide 1 text

SCM Software Configuration Management

Slide 2

Slide 2 text

Captain Obvious alert!

Slide 3

Slide 3 text

This is why... Let’s talk about the basics

Slide 4

Slide 4 text

what are Software Configurations ?

Slide 5

Slide 5 text

The system behavior Hardware configurations System configurations Applications settings Organization policies

Slide 6

Slide 6 text

Configurations ≈ Policies The port 80 must be open The user X must have access MySQL database must be running Ping must be blocked

Slide 7

Slide 7 text

what does Software Configurations look like?

Slide 8

Slide 8 text

Configurations

Slide 9

Slide 9 text

Configurations

Slide 10

Slide 10 text

Configurations

Slide 11

Slide 11 text

Configurations

Slide 12

Slide 12 text

Configurations

Slide 13

Slide 13 text

Configurations

Slide 14

Slide 14 text

Configurations

Slide 15

Slide 15 text

Configurations

Slide 16

Slide 16 text

what is a SCM system?

Slide 17

Slide 17 text

SCM Systems Provisioning Change management

Slide 18

Slide 18 text

SCM on Modern Systems

Slide 19

Slide 19 text

From 1 machine to many

Slide 20

Slide 20 text

Working on the wrong server

Slide 21

Slide 21 text

From 1 sysadmin to many

Slide 22

Slide 22 text

Who did what?

Slide 23

Slide 23 text

What do we need? All changes documented All changes must be repeatable All changes in one place Accesibles for anyone All changes must be traceable

Slide 24

Slide 24 text

What does traceable mean? What have been changed? When have been changed? Who made the change?

Slide 25

Slide 25 text

What do we do? Configuration by hand Wiki One or few scripts Better scripts + Wiki Better scripts + Git/Svn Custom SCM (script+git+ssh loop)

Slide 26

Slide 26 text

How is a modern SCM? Declarative Abstract Idempotent Convergent

Slide 27

Slide 27 text

How is a modern SCM? Declarative Abstract Idempotent Convergent What NOT How

Slide 28

Slide 28 text

How is a modern SCM? Declarative Abstract Idempotent Convergent How it should behave Rely on the tool for the implementation

Slide 29

Slide 29 text

How is a modern SCM? Declarative Abstract Idempotent Convergent Only take action if it’s needed

Slide 30

Slide 30 text

How is a modern SCM? Declarative Abstract Idempotent Convergent Each resource takes care of itself

Slide 31

Slide 31 text

Key concepts Modern SCM

Slide 32

Slide 32 text

Modern SCM’s concepts Resources Nodes/Minions Recipes/Manifests/Playbooks Inventory Roles/Profiles

Slide 33

Slide 33 text

Some extras do we have time?

Slide 34

Slide 34 text

Avoid manual processes They are error prone

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

But be careful ;-)

Slide 37

Slide 37 text

Make Apps SCM friendly Separate data from code Allow to use ENV variables Set default options But allow overwrite them with conffiles

Slide 38

Slide 38 text

Do NOT hardcode settings!!! Ever!

Slide 39

Slide 39 text

Make Apps SCM friendly Use the dependency managers Composer Bundler Pip npm Maven

Slide 40

Slide 40 text

Make Apps SCM friendly Use flags to activate features Use standard formats Think about settings per environment

Slide 41

Slide 41 text

Recomendations Start small Think in policies not in manual changes Use Vagrant for developing policies

Slide 42

Slide 42 text

Recomendations

Slide 43

Slide 43 text

Popular SCMs CFEngine Puppet Chef Ansible

Slide 44

Slide 44 text

SCM vs Deploy Tools Debate