37
AUTOMATE ALL THE THINGS! Christopher Gervais - @ergonlogic

AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

AUTOMATE ALL THE THINGS!Christopher Gervais - @ergonlogic

Page 2: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

★ Veteran open source programmers and sysadmins★ Specializing in and★ Experts in end-to-end application lifecycle★ Focus on social enterprises, non-profits, and

public sector

Page 3: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Some of our Partnerships

Page 4: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Principles and Practices of infrastructure-as-codeWhy should we care?

A brief history of cloud computingHow did we get into this

mess?

How does Ansible support an infrastructure-as-code strategy?Components and modules and

providers; oh my!

What we’ll discuss

Putting it all togetherDemo time!

Page 5: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

XKCD

… because, somehow, a

webcomic provides the

most succinct descriptions

of the reality of automation.

Page 6: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

You can never have too much XKCD!

Page 7: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

A Brief history of Cloud ComputingAutomate All the Things!

Page 8: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

A brief history of cloud computing

● Time-sharing(government/academic)

Page 9: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

A brief history of cloud computing

● Time-sharing(government/academic)

● Mainframes(centralized/institutional)

Page 10: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

A brief history of cloud computing

● Time-sharing(government/academic)

● Mainframes(centralized/institutional)

● Server rooms(distributed/on-premise)

Page 11: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

A brief history of cloud computing

● Time-sharing(government/academic)

● Mainframes(centralized/institutional)

● Server rooms(distributed/on-premise)

● Datacenters(co-location/hosted)

Page 12: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

A brief history of cloud computing

● Time-sharing(government/academic)

● Mainframes(centralized/institutional)

● Server rooms(distributed/on-premise)

● Datacenters(co-location/hosted)

● Cloud(utility computing)

Page 13: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

The era of cloud computing

Benefits ChallengesScalability Controlling costs

Page 14: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

The era of cloud computing

Benefits ChallengesScalability Controlling costs

Flexibility Increased complexity

Page 15: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

The era of cloud computing

Benefits ChallengesScalability Controlling costs

Flexibility Increased complexity

Automation Scarce expertise

Page 16: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Principles and Practices of infrastructure-as-codeAutomate All the Things!

Page 17: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Infrastructure-as-code Practices

● Define resources in code(avoid snowflake servers)

Page 18: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Infrastructure-as-code Practices

● Define resources in code(avoid snowflake servers)

● Keep documentation inline(self-documented systems)

Page 19: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Infrastructure-as-code Practices

● Define resources in code(avoid snowflake servers)

● Keep documentation inline(self-documented systems)

● Version-control everything(audit trail and reproducible builds)

Page 20: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Infrastructure-as-code Practices

● Define resources in code(avoid snowflake servers)

● Keep documentation inline(self-documented systems)

● Version-control everything(audit trail and reproducible builds)

● Make small changes(easier rollbacks)

Page 21: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Infrastructure-as-code Practices

● Define resources in code(avoid snowflake servers)

● Keep documentation inline(self-documented systems)

● Version-control everything(audit trail and reproducible builds)

● Make small changes(easier rollbacks)

● Test continuously(fail early)

Page 22: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

How does Ansible support an infrastructure-as-code strategy?Automate All the Things!

Page 23: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

How does Ansible support an infrastructure-as-code strategy?

Ansible allows us to define

infrastructure components in a

simple YAML syntax.

These files can, in turn, be

committed into version control, and

thus handled as software.

Page 24: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Components

Custom infrastructure-

as-code configuration

depends on Ansible, roles

and modules, which in turn

depend on various Python

libraries.Ansible

Page 25: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Components

Custom infrastructure-

as-code configuration

depends on Ansible, roles

and modules, which in turn

depend on various Python

libraries.Ansible

Python

Page 26: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Components

Custom infrastructure-

as-code configuration

depends on Ansible, roles

and modules, which in turn

depend on various Python

libraries.Ansible

Python

Modules

Page 27: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Components

Custom infrastructure-

as-code configuration

depends on Ansible, roles

and modules, which in turn

depend on various Python

libraries.

Roles

Ansible

Python

Modules

Page 28: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Components

Custom infrastructure-

as-code configuration

depends on Ansible, roles

and modules, which in turn

depend on various Python

libraries.

Roles

Ansible

Python

Configuration

Modules

Page 29: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Providersvs.

Modules

Providers: A cloud provider is

(generally) a company that

offers components of cloud

computing (e.g. , IaaS).

Modules: These task plugins

interact with providers’ APIs to

create and manage various

resources.

What’s the difference?

Page 30: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

That’s how many different cloud modules Ansible supports

out-of-the-box. These range across 40+ cloud providers, from

Amazon to XenServer.

920+

Page 31: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Authentication and Authorization

Page 32: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Authentication and Authorization

Step 1User triggers

API call

Page 33: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Authentication and Authorization

Step 1User triggers

API call

Step 2API authenticates

user’s credentials

Page 34: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Authentication and Authorization

Step 1User triggers

API call

Step 2API authenticates

user’s credentials

Step 3API checks that user is

authorized for task(s)

Page 35: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Authentication and Authorization

Step 1User triggers

API call

Step 2API authenticates

user’s credentials

Step 3API checks that user is

authorized for task(s)

Step 4API executes task(s) in

cloud infrastructure

Page 36: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

Putting It All TogetherAutomate All the Things!

Page 37: AUTOMATE ALL THE THINGS! · Scalability Controlling costs Flexibility Increased complexity. The era of cloud computing ... depend on various Python libraries. Ansible. Components

QUESTIONS?Christopher Gervais - @ergonlogic