PIE - The Programmable Infrastructure Environment


Published on

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.

Published in: Technology

PIE - The Programmable Infrastructure Environment

  1. 1. Ernest Mueller Peco Karayanev National Instruments theagileadmin.com
  2. 2. 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
  3. 3. model driven automation infrastructure as code DevOps dynamic scaling agility
  4. 4. 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)
  5. 5. 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/2 pie registry.bind /fcc/test1 pie registry.list /fcc/test1
  6. 6. create, terminate, start, stop instances using the AWS API enforce scaling policy execute remote commands pie control.create /fcc/test1/external-services/2 pie control.stop /fcc/test1/external-services/2 pie control.enforce /fcc/test1 pie control.remote.service.restart /fcc/test1/external-services/2/external-tomcat pie control.remote.execute /fcc/test1/external- services/2 –i exe[0]=“ls –l /etc/init.d”
  7. 7. 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-auth pie provision.deploy.run /fcc/test1/external- services/2 –i pack[0]=lvdotcom-auth pie provision.remote.updateConfig /fcc/test1
  8. 8. 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
  9. 9. 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)
  10. 10. Azure support Faster performance Robust runtime (parallel, transactional, event-driven) Scripting ( search, map, regex, orchestration semantics) Data in the Model