PIE - The Programmable Infrastructure Environment

16
PIE: The Programmable Infrastructure Environment Ernest Mueller Peco Karayanev National Instruments theagileadmin.com

description

The Programmable Infrastructure Environment (PIE) is an in-house developed system which uses model driven automation to provision, control, deploy, and monitor our cloud systems. It was written to maximally enable DevOps within our team and to handle our cross-platform (Windows, Linux) requirements.

Transcript of PIE - The Programmable Infrastructure Environment

Page 1: PIE - The Programmable Infrastructure Environment

PIE: The Programmable

Infrastructure Environment

Ernest Mueller Peco KarayanevNational Instruments theagileadmin.com

Page 2: PIE - The Programmable Infrastructure Environment

What is PIE?

a framework to define, provision, monitor, and control cloud-based systems

written in Java, uses SSH as transport, currently supports Amazon AWS (Linux

and Windows)

takes an XML-based model from source control and creates a full running

system

Page 3: PIE - The Programmable Infrastructure Environment

Why is PIE tasty?

model driven automation

infrastructure as code

DevOps

dynamic scaling

agility

Page 4: PIE - The Programmable Infrastructure Environment
Page 5: PIE - The Programmable Infrastructure Environment

Model

XML descriptions of the system as ‘specs’

system (top level) environment (instance of a system) role (“tier” within a system) image (specific base box config) service (specific software or application) commands (for various levels) templates (files to be parsed)

Page 6: PIE - The Programmable Infrastructure Environment
Page 7: PIE - The Programmable Infrastructure Environment
Page 8: PIE - The Programmable Infrastructure Environment

Registry

uses Apache Zookeeper (part of Hadoop project)

the registry contains information about the running system

specific addressing scheme:/fcc/test1/external-services/2/tomcat

[/<system>/<environment>/<role>/<instance>/<service>]

pie registry.register /fcc/test1/external-services/2pie registry.bind /fcc/test1pie registry.list /fcc/test1

Page 9: PIE - The Programmable Infrastructure Environment
Page 10: PIE - The Programmable Infrastructure Environment

Control

create, terminate, start, stop instances using the AWS API

enforce scaling policy

execute remote commandspie control.create /fcc/test1/external-services/2pie control.stop /fcc/test1/external-services/2pie control.enforce /fcc/test1pie control.remote.service.restart /fcc/test1/external-services/2/external-tomcatpie control.remote.execute /fcc/test1/external-services/2 –i exe[0]=“ls –l /etc/init.d”

Page 11: PIE - The Programmable Infrastructure Environment

Provisioning

deploy services and apps

two-phase for fast deploys

update config files and parse templates

pie provision.deploy.stage /fcc/test1/external-services/2 –i pack[0]=lvdotcom-authpie provision.deploy.run /fcc/test1/external-services/2 –i pack[0]=lvdotcom-authpie provision.remote.updateConfig /fcc/test1

Page 12: PIE - The Programmable Infrastructure Environment

Monitoring

integrated with third party SaaS monitoring provider Cloudkick

systems register with Cloudkick as they come online and immediately have appropriate monitors applied based on tags set from the model

Page 13: PIE - The Programmable Infrastructure Environment
Page 14: PIE - The Programmable Infrastructure Environment

Results

repeatable – no manual errors

reviewable – model in source control

rapid – bring up, install, configure, and test dozens of systems in a morning

resilient – automated reconfiguration to swap servers (throw away

infrastructure)

Page 15: PIE - The Programmable Infrastructure Environment

What’s next

Azure support

Faster performance

Robust runtime (parallel, transactional, event-driven)

Scripting( search, map, regex, orchestration semantics)

Data in the Model

Page 16: PIE - The Programmable Infrastructure Environment

theagileadmin.com