SlideShare a Scribd company logo
Applying software engineering
to configuration management
Bart Vanbrabant, PhD
iMinds-Distrinet / Impera
● Research started with PoDIM by Thomas Delaet
● LISA 07: Best paper award with PoDIM
● Master thesis 2008: apply PoDIM concepts to Puppet
● Security in cfg mgmt side step
● LISA 10: A survey of system configuration tools
● Summer 2010: First prototype of Impera tool
● June 2014: My PhD “A framework for integrated configuration
management of distributed systems”
● Late 2014: Open Source release on Github and University
spin-off: https://github.com/impera-io
About
Why configuration management?
● Automate configuration (deployment,
configuration and re-configuration) of software
● Keep all configuration parameters consistent
to avoid errors
● Cloud computing has increased scale and
dynamics
● Continuous deployment increases dynamics
even more
● Application in cloud are distributed systems
(SOA)
Managed applications
● Applications are business driver of why the
operations are there in the first place
● Application architecture:
o components
o services that interact
o logical architecture
o abstract deployment architecture
Configuration management
● Current tools focus on managing individual
components on machines
o files
o packages
o services
● Abstraction level mismatch between
o how the application is architected and developed
o how it is operated
● Both configuration management and monitoring
are in function of system resources
Abstraction blend
● Operations already a blend of abstraction
levels
● Mixing very high level with very low level
o e.g. large website on Amazon
o own web servers (managed in function of low-level
resources)
o combined with ELB (services, managed through
API)
● Blend will only increase
o mash up of as-a-service
o missing components self-hosted on virtual machines
One tool (model) to rule them all
● Inconsistencies in configuration cause errors
and downtime
● Many interdependencies between services
and components
● One integrated configuration model
● Highest and lowest abstraction level in a
single model (and everything in between)
Software engineering (SE)
● SE has been raising the level of abstraction
● Our approach: apply concepts used in SE to
cfg mgmt:
o object-oriented programming
o encapsulation
o interfaces
o component-based software development
o refinement
o …
Impera tool
● Declarative configuration model
● Object-oriented modelling
● Relations as first class citizen
● Separation of type (interface) and implementation
(refinement) to build up abstractions
● Re-usable modules
● Plug-in mechanism:
o transformation in configuration model
o export to 3rd party
o resource handlers
● Transparent orchestration
Entities and relations
entity Server:
number listen_port
end
Entities and relations
entity Server:
number listen_port
end
entity WebServer extends ip::services::Server,
web::Container
string document_root
end
Entities and relations
entity Server:
number listen_port
end
entity WebServer extends ip::services::Server,
web::Container
string document_root
end
std::Host host [1] -- [0:] Server servers
Client clients [0:] -- [1:] Server server
Entities and relations
entity Server:
number listen_port
end
entity WebServer extends ip::services::Server,
web::Container
string document_root
end
std::Host host [1] -- [0:] Server servers
Client clients [0:] -- [1:] Server server
index WebServer(host, listen_port)
Entities and relations
...
entity WebServer extends ip::services::Server,
web::Container
string document_root
end
std::Host host [1] -- [0:] Server servers
Client clients [0:] -- [1:] Server server
index WebServer(host, listen_port)
typedef HttpWebServer as WebServer(listen_port=80)
Instantiating a model
srv1 = std::Host(name=”server-1”, os=fedora::fedora21)
webserver = WebServer(host=serv1, document_root=”/var/www”)
Refinement
implementation apacheFedoraWebServer for WebServer:
p_apache = std::Package(host=host, name=”httpd”, state=”installed”)
f_cfg = std::ConfigFile(host=host, path=”/etc/httpd/conf/httpd.conf”,
content=std::template(“apache/httpd.conf”),
reload=true,
requires=p_apache)
f_svc = std::Service(host=host, name=”httpd”, state=”running”,
onboot=true, requires=[f_cfg, p_apache])
end
implementation apacheFedoraWebServer for WebServer:
p_apache = std::Package(host=host, name=”httpd”, state=”installed”)
f_cfg = std::ConfigFile(host=host, path=”/etc/httpd/conf/httpd.conf”,
content=std::template(“apache/httpd.conf”),
reload=true,
requires=p_apache)
f_svc = std::Service(host=host, name=”httpd”, state=”running”,
onboot=true, requires=[f_cfg, p_apache])
end
implement WebServer using apacheFedoraWebServer
when std::familyof(host.os, "fedora")
Refinement
Refinement
implementation apacheFedoraWebServer for WebServer:
p_apache = std::Package(host=host, name=”httpd”, state=”installed”)
f_cfg = std::ConfigFile(host=host, path=”/etc/httpd/conf/httpd.conf”,
content=std::template(“apache/httpd.conf”),
reload=true,
requires=p_apache)
f_svc = std::Service(host=host, name=”httpd”, state=”running”,
onboot=true, requires=[f_cfg, p_apache])
end
implement WebServer using apacheFedoraWebServer
when std::familyof(host.os, "fedora")
Instantiating a model
srv1 = std::Host(name=”server-1”, os=fedora::fedora21)
webserver = WebServer(host=serv1, document_root=”/var/www”)
Result:
● ensure that the httpd package is installed
● ensure that the httpd.conf file has the content
generated using a template
● ensure that the httpd server is running and starts at
boot
Building a model
● Configuration modules with:
o model:
 types: entities, relations, …
 refinement
o templates
o files
o plugins: model, resource handlers, dependency
managers, …
● Initial model instantiates types
● Refine model until ready
Refinement
Refinement
Derive configuration
● Implicit configuration
● Derive configuration from integrated
configuration model
o firewall rules based on network topology, network
connection and security policy
o monitoring configuration
o backup
o …
● Get this configuration for “free”
Derive configuration
● Use types from generic modules to model
required information
o e.g. logging::LogFile(host=host,
path=”/var/log/httpd/access_log”,
type=”apache”)
o Can be used to configure:
 logstash
 syslog
 awstats
 backup
 logrotate
 ...
Plug-ins
● Declarative configuration model
● Integration of imperative code with plug-ins
● Python 3 plug-ins:
o typed parameters:
 accept parameters from configuration model
 navigate configuration model
 read-only view
o typed return value: results from imperative code
● Impera schedules plug-in invocation and
supports backtracking
Plug-ins
● Model type system is meta-programmed into
Python
● Each instance is represented by a Python
object
● Access to configuration model by native
code is mediated with proxy wrappers
● Template is a special type of plug-in with
implicit arguments
Plug-in example
demo/plugins/__init__.py:
@plugin
def get_ipaddress(host: “ip::Host”) -> “ip::address”:
# lookup IP in a database
return db.lookup_ip(host.name)
Plug-in example
demo/plugins/__init__.py:
@plugin
def get_ipaddress(host: “ip::Host”) -> “ip::address”:
# lookup IP in a database
return db.lookup_ip(host.name)
main.cf
implementation lookupIP for ip::Host:
self.ipaddres = demo::get_ipaddress(self))
end
implement ip::Host using lookupIP
server1 = ip::Host(name=”server-1”, os=fedora::fedora21)
Orchestration
● Incremental roll-out of configuration changes
● Prune incomplete parts of the model
● Plug-ins can indicate that a parameter is
unknown
● Orchestration is derived automatically based
on availability of configuration parameters
Plug-in example
demo/plugins/__init__.py:
@plugin
def get_ipaddress(host: “ip::Host”) -> “ip::address”:
# lookup IP in a database
ip = db.lookup_ip(host.name)
if ip is None:
return Unknown(source=host)
return ip
Orchestration examples
● Cloud
o IP address of VM only available when VM is
provisioned at cloud provider
o Deploy service updates only when VM is available
● OpenStack deployment
o Complex service dependencies
o e.g. network service requires uuid allocated by
identity service in its configuration files
Deployment architecture
Deploying changes
● two modes available
● client, server, agent
o push and pull
o fact renewal
o enforcing dependencies over machine boundaries
● deploy
o deploy directly, machine per machine
o local or using ssh
o runs embedded agent and server
Demo
● Deploy a Drupal website on Amazon
● Use varnish as loadbalancer for 2 web
servers
● Add a web server
● Switch to ELB
Demo
Configuration demo project:
https://github.com/bartv/cfgmgmt15-demo
Demo
lb-1
db-1
webhost-1 webhost-2
Demo
ELB @ AWS
db-1
webhost-1 webhost-2
Demo
ELB @ AWS
db-1
webhost-1 webhost-2 webhost-3
Status
● Started in 2010
● 5 master students
● Large hybrid cloud demonstrator
(OpenStack and Amazon)
● Manage our own OpenStack:
o deployment
o accounts, tenants, networks, routers, …
● Open source on Github
● Basic documentation + tutorial
Roadmap
● Integrate monitoring (management)
● State management and migration
● Increase compilation speed
● Improve documentation
● Automated testing for core and modules
● …
Contact
Bart Vanbrabant bart@impera.io
@bartvanbrabant
https://distrinet.cs.kuleuven.be
Impera tool:
● https://github.com/impera-io/impera
● modules https://github.com/impera-io/*
● http://impera.readthedocs.org/en/latest/
● https://impera.io | @impera_io

More Related Content

What's hot

Python at Facebook
Python at FacebookPython at Facebook
Python at Facebook
Angelo Failla
 
Always up to date, testable and maintainable documentation with OpenAPI
Always up to date, testable and maintainable documentation with OpenAPIAlways up to date, testable and maintainable documentation with OpenAPI
Always up to date, testable and maintainable documentation with OpenAPI
GOG.com dev team
 
Practical PHP Deployment with Jenkins
Practical PHP Deployment with JenkinsPractical PHP Deployment with Jenkins
Practical PHP Deployment with Jenkins
Adam Culp
 
Puppet Camp Dallas 2014: How Puppet Ops Rolls
Puppet Camp Dallas 2014: How Puppet Ops RollsPuppet Camp Dallas 2014: How Puppet Ops Rolls
Puppet Camp Dallas 2014: How Puppet Ops Rolls
Puppet
 
Porting legacy apps to Griffon
Porting legacy apps to GriffonPorting legacy apps to Griffon
Porting legacy apps to Griffon
James Williams
 
Puppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabPuppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLab
Alessandro Franceschi
 
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWSConfiguring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Puppet
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher
 
Writing Custom Puppet Types and Providers to Manage Web-Based Applications
Writing Custom Puppet Types and Providers to Manage Web-Based ApplicationsWriting Custom Puppet Types and Providers to Manage Web-Based Applications
Writing Custom Puppet Types and Providers to Manage Web-Based Applications
Tim Cinel
 
Virtual CD4PE Workshop
Virtual CD4PE WorkshopVirtual CD4PE Workshop
Virtual CD4PE Workshop
Puppet
 
Getting Started With Aura
Getting Started With AuraGetting Started With Aura
Getting Started With Aura
Chris Tankersley
 
How to build your own OpenStack distro using Puppet OpenStack
How to build your own OpenStack distro using Puppet OpenStackHow to build your own OpenStack distro using Puppet OpenStack
How to build your own OpenStack distro using Puppet OpenStack
OpenStack
 
Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2
Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2
Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2
Sylvain Zimmer
 
Learning Puppet Chapter 1
Learning Puppet Chapter 1Learning Puppet Chapter 1
Learning Puppet Chapter 1
Vishal Biyani
 
Modern Web Development with Perl
Modern Web Development with PerlModern Web Development with Perl
Modern Web Development with Perl
Dave Cross
 
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
James Titcumb
 
PuppetConf 2016 Moving from Exec to Types and Provides
PuppetConf 2016 Moving from Exec to Types and ProvidesPuppetConf 2016 Moving from Exec to Types and Provides
PuppetConf 2016 Moving from Exec to Types and Provides
Martin Alfke
 
Scalable Django Architecture
Scalable Django ArchitectureScalable Django Architecture
Scalable Django Architecture
Rami Sayar
 
Zend Framework 1.8 workshop
Zend Framework 1.8 workshopZend Framework 1.8 workshop
Zend Framework 1.8 workshop
Nick Belhomme
 
When dynamic becomes static
When dynamic becomes staticWhen dynamic becomes static
When dynamic becomes static
Wim Godden
 

What's hot (20)

Python at Facebook
Python at FacebookPython at Facebook
Python at Facebook
 
Always up to date, testable and maintainable documentation with OpenAPI
Always up to date, testable and maintainable documentation with OpenAPIAlways up to date, testable and maintainable documentation with OpenAPI
Always up to date, testable and maintainable documentation with OpenAPI
 
Practical PHP Deployment with Jenkins
Practical PHP Deployment with JenkinsPractical PHP Deployment with Jenkins
Practical PHP Deployment with Jenkins
 
Puppet Camp Dallas 2014: How Puppet Ops Rolls
Puppet Camp Dallas 2014: How Puppet Ops RollsPuppet Camp Dallas 2014: How Puppet Ops Rolls
Puppet Camp Dallas 2014: How Puppet Ops Rolls
 
Porting legacy apps to Griffon
Porting legacy apps to GriffonPorting legacy apps to Griffon
Porting legacy apps to Griffon
 
Puppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabPuppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLab
 
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWSConfiguring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWS
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET Core
 
Writing Custom Puppet Types and Providers to Manage Web-Based Applications
Writing Custom Puppet Types and Providers to Manage Web-Based ApplicationsWriting Custom Puppet Types and Providers to Manage Web-Based Applications
Writing Custom Puppet Types and Providers to Manage Web-Based Applications
 
Virtual CD4PE Workshop
Virtual CD4PE WorkshopVirtual CD4PE Workshop
Virtual CD4PE Workshop
 
Getting Started With Aura
Getting Started With AuraGetting Started With Aura
Getting Started With Aura
 
How to build your own OpenStack distro using Puppet OpenStack
How to build your own OpenStack distro using Puppet OpenStackHow to build your own OpenStack distro using Puppet OpenStack
How to build your own OpenStack distro using Puppet OpenStack
 
Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2
Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2
Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2
 
Learning Puppet Chapter 1
Learning Puppet Chapter 1Learning Puppet Chapter 1
Learning Puppet Chapter 1
 
Modern Web Development with Perl
Modern Web Development with PerlModern Web Development with Perl
Modern Web Development with Perl
 
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
 
PuppetConf 2016 Moving from Exec to Types and Provides
PuppetConf 2016 Moving from Exec to Types and ProvidesPuppetConf 2016 Moving from Exec to Types and Provides
PuppetConf 2016 Moving from Exec to Types and Provides
 
Scalable Django Architecture
Scalable Django ArchitectureScalable Django Architecture
Scalable Django Architecture
 
Zend Framework 1.8 workshop
Zend Framework 1.8 workshopZend Framework 1.8 workshop
Zend Framework 1.8 workshop
 
When dynamic becomes static
When dynamic becomes staticWhen dynamic becomes static
When dynamic becomes static
 

Viewers also liked

Software Engineering Practice - Configuration management
Software Engineering Practice - Configuration managementSoftware Engineering Practice - Configuration management
Software Engineering Practice - Configuration managementRadu_Negulescu
 
Intro to Software Engineering - Software Design
Intro to Software Engineering - Software DesignIntro to Software Engineering - Software Design
Intro to Software Engineering - Software DesignRadu_Negulescu
 
Measurement and metrics in model driven software development
Measurement and metrics in model driven software developmentMeasurement and metrics in model driven software development
Measurement and metrics in model driven software developmentSelman Bozkır
 
Quality metrices
Quality metricesQuality metrices
Quality metrices
rasika walunj
 
Presentation - "A comparison of component-based software engineering and mode...
Presentation - "A comparison of component-based software engineering and mode...Presentation - "A comparison of component-based software engineering and mode...
Presentation - "A comparison of component-based software engineering and mode...
Nikolay Grozev
 
Software Configuration Management
Software Configuration ManagementSoftware Configuration Management
Software Configuration Management
Bill Thayer
 
Software Engineering for Web Applications
Software Engineering for Web ApplicationsSoftware Engineering for Web Applications
Software Engineering for Web Applications
Moh'd Shakeb Baig
 
DISE - Introduction to Project Management
DISE - Introduction to Project ManagementDISE - Introduction to Project Management
DISE - Introduction to Project Management
Rasan Samarasinghe
 
Se 381 - lec 27 - 12 jun05 - ooa and ood and class diagrams
Se 381 -  lec 27 - 12 jun05 - ooa and ood and class diagramsSe 381 -  lec 27 - 12 jun05 - ooa and ood and class diagrams
Se 381 - lec 27 - 12 jun05 - ooa and ood and class diagrams
babak danyal
 
Software Requirements Elicitation Methods
Software Requirements Elicitation MethodsSoftware Requirements Elicitation Methods
Software Requirements Elicitation Methods
mnaeem22
 
Metrics
MetricsMetrics
Metrics
geethawilliam
 
Configuration Management in Software Engineering - SE29
Configuration Management in Software Engineering - SE29Configuration Management in Software Engineering - SE29
Configuration Management in Software Engineering - SE29koolkampus
 
Software testing & Quality Assurance
Software testing & Quality Assurance Software testing & Quality Assurance
Software testing & Quality Assurance
Webtech Learning
 
Ch17-Software Engineering 9
Ch17-Software Engineering 9Ch17-Software Engineering 9
Ch17-Software Engineering 9Ian Sommerville
 
1-Introduction to Software Engineering (Object Oriented Software Engineering ...
1-Introduction to Software Engineering (Object Oriented Software Engineering ...1-Introduction to Software Engineering (Object Oriented Software Engineering ...
1-Introduction to Software Engineering (Object Oriented Software Engineering ...
Hafiz Ammar Siddiqui
 
Software requirement elicitation
Software requirement elicitationSoftware requirement elicitation
Software requirement elicitation
Pankamol Srikaew
 
DISE - Software Testing and Quality Management
DISE - Software Testing and Quality ManagementDISE - Software Testing and Quality Management
DISE - Software Testing and Quality Management
Rasan Samarasinghe
 
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
op205
 
Maintenance Metrics
Maintenance MetricsMaintenance Metrics
Maintenance Metrics
kaskerrigan
 
Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12koolkampus
 

Viewers also liked (20)

Software Engineering Practice - Configuration management
Software Engineering Practice - Configuration managementSoftware Engineering Practice - Configuration management
Software Engineering Practice - Configuration management
 
Intro to Software Engineering - Software Design
Intro to Software Engineering - Software DesignIntro to Software Engineering - Software Design
Intro to Software Engineering - Software Design
 
Measurement and metrics in model driven software development
Measurement and metrics in model driven software developmentMeasurement and metrics in model driven software development
Measurement and metrics in model driven software development
 
Quality metrices
Quality metricesQuality metrices
Quality metrices
 
Presentation - "A comparison of component-based software engineering and mode...
Presentation - "A comparison of component-based software engineering and mode...Presentation - "A comparison of component-based software engineering and mode...
Presentation - "A comparison of component-based software engineering and mode...
 
Software Configuration Management
Software Configuration ManagementSoftware Configuration Management
Software Configuration Management
 
Software Engineering for Web Applications
Software Engineering for Web ApplicationsSoftware Engineering for Web Applications
Software Engineering for Web Applications
 
DISE - Introduction to Project Management
DISE - Introduction to Project ManagementDISE - Introduction to Project Management
DISE - Introduction to Project Management
 
Se 381 - lec 27 - 12 jun05 - ooa and ood and class diagrams
Se 381 -  lec 27 - 12 jun05 - ooa and ood and class diagramsSe 381 -  lec 27 - 12 jun05 - ooa and ood and class diagrams
Se 381 - lec 27 - 12 jun05 - ooa and ood and class diagrams
 
Software Requirements Elicitation Methods
Software Requirements Elicitation MethodsSoftware Requirements Elicitation Methods
Software Requirements Elicitation Methods
 
Metrics
MetricsMetrics
Metrics
 
Configuration Management in Software Engineering - SE29
Configuration Management in Software Engineering - SE29Configuration Management in Software Engineering - SE29
Configuration Management in Software Engineering - SE29
 
Software testing & Quality Assurance
Software testing & Quality Assurance Software testing & Quality Assurance
Software testing & Quality Assurance
 
Ch17-Software Engineering 9
Ch17-Software Engineering 9Ch17-Software Engineering 9
Ch17-Software Engineering 9
 
1-Introduction to Software Engineering (Object Oriented Software Engineering ...
1-Introduction to Software Engineering (Object Oriented Software Engineering ...1-Introduction to Software Engineering (Object Oriented Software Engineering ...
1-Introduction to Software Engineering (Object Oriented Software Engineering ...
 
Software requirement elicitation
Software requirement elicitationSoftware requirement elicitation
Software requirement elicitation
 
DISE - Software Testing and Quality Management
DISE - Software Testing and Quality ManagementDISE - Software Testing and Quality Management
DISE - Software Testing and Quality Management
 
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
 
Maintenance Metrics
Maintenance MetricsMaintenance Metrics
Maintenance Metrics
 
Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12
 

Similar to Applying software engineering to configuration management

Pyramid Deployment and Maintenance
Pyramid Deployment and MaintenancePyramid Deployment and Maintenance
Pyramid Deployment and Maintenance
Jazkarta, Inc.
 
Bangpypers april-meetup-2012
Bangpypers april-meetup-2012Bangpypers april-meetup-2012
Bangpypers april-meetup-2012
Deepak Garg
 
Introduction to node.js By Ahmed Assaf
Introduction to node.js  By Ahmed AssafIntroduction to node.js  By Ahmed Assaf
Introduction to node.js By Ahmed Assaf
Ahmed Assaf
 
Yaetos Tech Overview
Yaetos Tech OverviewYaetos Tech Overview
Yaetos Tech Overview
prevota
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
wesley chun
 
Sprint 17
Sprint 17Sprint 17
Sprint 17
ManageIQ
 
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopOSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshop
leffen
 
Angular4 getting started
Angular4 getting startedAngular4 getting started
Angular4 getting started
TejinderMakkar
 
.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp
VMware Tanzu
 
V mware
V mwareV mware
V mwaredvmug1
 
Puppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMwarePuppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMware
subtitle
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
Oracle Korea
 
Cypress Testing.pptx
Cypress Testing.pptxCypress Testing.pptx
Cypress Testing.pptx
JasmeenShrestha
 
Declarative Infrastructure Tools
Declarative Infrastructure Tools Declarative Infrastructure Tools
Declarative Infrastructure Tools
Yulia Shcherbachova
 
Taking Your FDM Application to the Next Level with Advanced Scripting
Taking Your FDM Application to the Next Level with Advanced ScriptingTaking Your FDM Application to the Next Level with Advanced Scripting
Taking Your FDM Application to the Next Level with Advanced Scripting
Alithya
 
How to Create a Service in Choreo
How to Create a Service in ChoreoHow to Create a Service in Choreo
How to Create a Service in Choreo
WSO2
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
adrian_nye
 
Cloud Native Development
Cloud Native DevelopmentCloud Native Development
Cloud Native Development
Manuel Garcia
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316
Jupil Hwang
 
NodeJS
NodeJSNodeJS
NodeJS
LinkMe Srl
 

Similar to Applying software engineering to configuration management (20)

Pyramid Deployment and Maintenance
Pyramid Deployment and MaintenancePyramid Deployment and Maintenance
Pyramid Deployment and Maintenance
 
Bangpypers april-meetup-2012
Bangpypers april-meetup-2012Bangpypers april-meetup-2012
Bangpypers april-meetup-2012
 
Introduction to node.js By Ahmed Assaf
Introduction to node.js  By Ahmed AssafIntroduction to node.js  By Ahmed Assaf
Introduction to node.js By Ahmed Assaf
 
Yaetos Tech Overview
Yaetos Tech OverviewYaetos Tech Overview
Yaetos Tech Overview
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
 
Sprint 17
Sprint 17Sprint 17
Sprint 17
 
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopOSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshop
 
Angular4 getting started
Angular4 getting startedAngular4 getting started
Angular4 getting started
 
.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp
 
V mware
V mwareV mware
V mware
 
Puppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMwarePuppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMware
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
 
Cypress Testing.pptx
Cypress Testing.pptxCypress Testing.pptx
Cypress Testing.pptx
 
Declarative Infrastructure Tools
Declarative Infrastructure Tools Declarative Infrastructure Tools
Declarative Infrastructure Tools
 
Taking Your FDM Application to the Next Level with Advanced Scripting
Taking Your FDM Application to the Next Level with Advanced ScriptingTaking Your FDM Application to the Next Level with Advanced Scripting
Taking Your FDM Application to the Next Level with Advanced Scripting
 
How to Create a Service in Choreo
How to Create a Service in ChoreoHow to Create a Service in Choreo
How to Create a Service in Choreo
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
 
Cloud Native Development
Cloud Native DevelopmentCloud Native Development
Cloud Native Development
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316
 
NodeJS
NodeJSNodeJS
NodeJS
 

Recently uploaded

Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
SkillCertProExams
 
Burning Issue Presentation By Kenmaryon.pdf
Burning Issue Presentation By Kenmaryon.pdfBurning Issue Presentation By Kenmaryon.pdf
Burning Issue Presentation By Kenmaryon.pdf
kkirkland2
 
2024-05-30_meetup_devops_aix-marseille.pdf
2024-05-30_meetup_devops_aix-marseille.pdf2024-05-30_meetup_devops_aix-marseille.pdf
2024-05-30_meetup_devops_aix-marseille.pdf
Frederic Leger
 
Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...
Sebastiano Panichella
 
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Sebastiano Panichella
 
María Carolina Martínez - eCommerce Day Colombia 2024
María Carolina Martínez - eCommerce Day Colombia 2024María Carolina Martínez - eCommerce Day Colombia 2024
María Carolina Martínez - eCommerce Day Colombia 2024
eCommerce Institute
 
Tom tresser burning issue.pptx My Burning issue
Tom tresser burning issue.pptx My Burning issueTom tresser burning issue.pptx My Burning issue
Tom tresser burning issue.pptx My Burning issue
amekonnen
 
AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...
AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...
AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...
AwangAniqkmals
 
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie WellsCollapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Rosie Wells
 
Media as a Mind Controlling Strategy In Old and Modern Era
Media as a Mind Controlling Strategy In Old and Modern EraMedia as a Mind Controlling Strategy In Old and Modern Era
Media as a Mind Controlling Strategy In Old and Modern Era
faizulhassanfaiz1670
 
somanykidsbutsofewfathers-140705000023-phpapp02.pptx
somanykidsbutsofewfathers-140705000023-phpapp02.pptxsomanykidsbutsofewfathers-140705000023-phpapp02.pptx
somanykidsbutsofewfathers-140705000023-phpapp02.pptx
Howard Spence
 
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdfBonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
khadija278284
 
Gregory Harris - Cycle 2 - Civics Presentation
Gregory Harris - Cycle 2 - Civics PresentationGregory Harris - Cycle 2 - Civics Presentation
Gregory Harris - Cycle 2 - Civics Presentation
gharris9
 
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Dutch Power
 
Obesity causes and management and associated medical conditions
Obesity causes and management and associated medical conditionsObesity causes and management and associated medical conditions
Obesity causes and management and associated medical conditions
Faculty of Medicine And Health Sciences
 
Gregory Harris' Civics Presentation.pptx
Gregory Harris' Civics Presentation.pptxGregory Harris' Civics Presentation.pptx
Gregory Harris' Civics Presentation.pptx
gharris9
 
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Dutch Power
 
International Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software TestingInternational Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software Testing
Sebastiano Panichella
 
Supercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdf
Supercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdfSupercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdf
Supercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdf
Access Innovations, Inc.
 

Recently uploaded (19)

Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
 
Burning Issue Presentation By Kenmaryon.pdf
Burning Issue Presentation By Kenmaryon.pdfBurning Issue Presentation By Kenmaryon.pdf
Burning Issue Presentation By Kenmaryon.pdf
 
2024-05-30_meetup_devops_aix-marseille.pdf
2024-05-30_meetup_devops_aix-marseille.pdf2024-05-30_meetup_devops_aix-marseille.pdf
2024-05-30_meetup_devops_aix-marseille.pdf
 
Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...
 
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
 
María Carolina Martínez - eCommerce Day Colombia 2024
María Carolina Martínez - eCommerce Day Colombia 2024María Carolina Martínez - eCommerce Day Colombia 2024
María Carolina Martínez - eCommerce Day Colombia 2024
 
Tom tresser burning issue.pptx My Burning issue
Tom tresser burning issue.pptx My Burning issueTom tresser burning issue.pptx My Burning issue
Tom tresser burning issue.pptx My Burning issue
 
AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...
AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...
AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...
 
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie WellsCollapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
 
Media as a Mind Controlling Strategy In Old and Modern Era
Media as a Mind Controlling Strategy In Old and Modern EraMedia as a Mind Controlling Strategy In Old and Modern Era
Media as a Mind Controlling Strategy In Old and Modern Era
 
somanykidsbutsofewfathers-140705000023-phpapp02.pptx
somanykidsbutsofewfathers-140705000023-phpapp02.pptxsomanykidsbutsofewfathers-140705000023-phpapp02.pptx
somanykidsbutsofewfathers-140705000023-phpapp02.pptx
 
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdfBonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
 
Gregory Harris - Cycle 2 - Civics Presentation
Gregory Harris - Cycle 2 - Civics PresentationGregory Harris - Cycle 2 - Civics Presentation
Gregory Harris - Cycle 2 - Civics Presentation
 
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
 
Obesity causes and management and associated medical conditions
Obesity causes and management and associated medical conditionsObesity causes and management and associated medical conditions
Obesity causes and management and associated medical conditions
 
Gregory Harris' Civics Presentation.pptx
Gregory Harris' Civics Presentation.pptxGregory Harris' Civics Presentation.pptx
Gregory Harris' Civics Presentation.pptx
 
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
 
International Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software TestingInternational Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software Testing
 
Supercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdf
Supercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdfSupercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdf
Supercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdf
 

Applying software engineering to configuration management

  • 1. Applying software engineering to configuration management Bart Vanbrabant, PhD iMinds-Distrinet / Impera
  • 2. ● Research started with PoDIM by Thomas Delaet ● LISA 07: Best paper award with PoDIM ● Master thesis 2008: apply PoDIM concepts to Puppet ● Security in cfg mgmt side step ● LISA 10: A survey of system configuration tools ● Summer 2010: First prototype of Impera tool ● June 2014: My PhD “A framework for integrated configuration management of distributed systems” ● Late 2014: Open Source release on Github and University spin-off: https://github.com/impera-io About
  • 3. Why configuration management? ● Automate configuration (deployment, configuration and re-configuration) of software ● Keep all configuration parameters consistent to avoid errors ● Cloud computing has increased scale and dynamics ● Continuous deployment increases dynamics even more ● Application in cloud are distributed systems (SOA)
  • 4. Managed applications ● Applications are business driver of why the operations are there in the first place ● Application architecture: o components o services that interact o logical architecture o abstract deployment architecture
  • 5. Configuration management ● Current tools focus on managing individual components on machines o files o packages o services ● Abstraction level mismatch between o how the application is architected and developed o how it is operated ● Both configuration management and monitoring are in function of system resources
  • 6. Abstraction blend ● Operations already a blend of abstraction levels ● Mixing very high level with very low level o e.g. large website on Amazon o own web servers (managed in function of low-level resources) o combined with ELB (services, managed through API) ● Blend will only increase o mash up of as-a-service o missing components self-hosted on virtual machines
  • 7. One tool (model) to rule them all ● Inconsistencies in configuration cause errors and downtime ● Many interdependencies between services and components ● One integrated configuration model ● Highest and lowest abstraction level in a single model (and everything in between)
  • 8. Software engineering (SE) ● SE has been raising the level of abstraction ● Our approach: apply concepts used in SE to cfg mgmt: o object-oriented programming o encapsulation o interfaces o component-based software development o refinement o …
  • 9. Impera tool ● Declarative configuration model ● Object-oriented modelling ● Relations as first class citizen ● Separation of type (interface) and implementation (refinement) to build up abstractions ● Re-usable modules ● Plug-in mechanism: o transformation in configuration model o export to 3rd party o resource handlers ● Transparent orchestration
  • 10. Entities and relations entity Server: number listen_port end
  • 11. Entities and relations entity Server: number listen_port end entity WebServer extends ip::services::Server, web::Container string document_root end
  • 12. Entities and relations entity Server: number listen_port end entity WebServer extends ip::services::Server, web::Container string document_root end std::Host host [1] -- [0:] Server servers Client clients [0:] -- [1:] Server server
  • 13. Entities and relations entity Server: number listen_port end entity WebServer extends ip::services::Server, web::Container string document_root end std::Host host [1] -- [0:] Server servers Client clients [0:] -- [1:] Server server index WebServer(host, listen_port)
  • 14. Entities and relations ... entity WebServer extends ip::services::Server, web::Container string document_root end std::Host host [1] -- [0:] Server servers Client clients [0:] -- [1:] Server server index WebServer(host, listen_port) typedef HttpWebServer as WebServer(listen_port=80)
  • 15. Instantiating a model srv1 = std::Host(name=”server-1”, os=fedora::fedora21) webserver = WebServer(host=serv1, document_root=”/var/www”)
  • 16. Refinement implementation apacheFedoraWebServer for WebServer: p_apache = std::Package(host=host, name=”httpd”, state=”installed”) f_cfg = std::ConfigFile(host=host, path=”/etc/httpd/conf/httpd.conf”, content=std::template(“apache/httpd.conf”), reload=true, requires=p_apache) f_svc = std::Service(host=host, name=”httpd”, state=”running”, onboot=true, requires=[f_cfg, p_apache]) end
  • 17. implementation apacheFedoraWebServer for WebServer: p_apache = std::Package(host=host, name=”httpd”, state=”installed”) f_cfg = std::ConfigFile(host=host, path=”/etc/httpd/conf/httpd.conf”, content=std::template(“apache/httpd.conf”), reload=true, requires=p_apache) f_svc = std::Service(host=host, name=”httpd”, state=”running”, onboot=true, requires=[f_cfg, p_apache]) end implement WebServer using apacheFedoraWebServer when std::familyof(host.os, "fedora") Refinement
  • 18. Refinement implementation apacheFedoraWebServer for WebServer: p_apache = std::Package(host=host, name=”httpd”, state=”installed”) f_cfg = std::ConfigFile(host=host, path=”/etc/httpd/conf/httpd.conf”, content=std::template(“apache/httpd.conf”), reload=true, requires=p_apache) f_svc = std::Service(host=host, name=”httpd”, state=”running”, onboot=true, requires=[f_cfg, p_apache]) end implement WebServer using apacheFedoraWebServer when std::familyof(host.os, "fedora")
  • 19. Instantiating a model srv1 = std::Host(name=”server-1”, os=fedora::fedora21) webserver = WebServer(host=serv1, document_root=”/var/www”) Result: ● ensure that the httpd package is installed ● ensure that the httpd.conf file has the content generated using a template ● ensure that the httpd server is running and starts at boot
  • 20. Building a model ● Configuration modules with: o model:  types: entities, relations, …  refinement o templates o files o plugins: model, resource handlers, dependency managers, … ● Initial model instantiates types ● Refine model until ready
  • 23. Derive configuration ● Implicit configuration ● Derive configuration from integrated configuration model o firewall rules based on network topology, network connection and security policy o monitoring configuration o backup o … ● Get this configuration for “free”
  • 24. Derive configuration ● Use types from generic modules to model required information o e.g. logging::LogFile(host=host, path=”/var/log/httpd/access_log”, type=”apache”) o Can be used to configure:  logstash  syslog  awstats  backup  logrotate  ...
  • 25. Plug-ins ● Declarative configuration model ● Integration of imperative code with plug-ins ● Python 3 plug-ins: o typed parameters:  accept parameters from configuration model  navigate configuration model  read-only view o typed return value: results from imperative code ● Impera schedules plug-in invocation and supports backtracking
  • 26. Plug-ins ● Model type system is meta-programmed into Python ● Each instance is represented by a Python object ● Access to configuration model by native code is mediated with proxy wrappers ● Template is a special type of plug-in with implicit arguments
  • 27. Plug-in example demo/plugins/__init__.py: @plugin def get_ipaddress(host: “ip::Host”) -> “ip::address”: # lookup IP in a database return db.lookup_ip(host.name)
  • 28. Plug-in example demo/plugins/__init__.py: @plugin def get_ipaddress(host: “ip::Host”) -> “ip::address”: # lookup IP in a database return db.lookup_ip(host.name) main.cf implementation lookupIP for ip::Host: self.ipaddres = demo::get_ipaddress(self)) end implement ip::Host using lookupIP server1 = ip::Host(name=”server-1”, os=fedora::fedora21)
  • 29. Orchestration ● Incremental roll-out of configuration changes ● Prune incomplete parts of the model ● Plug-ins can indicate that a parameter is unknown ● Orchestration is derived automatically based on availability of configuration parameters
  • 30. Plug-in example demo/plugins/__init__.py: @plugin def get_ipaddress(host: “ip::Host”) -> “ip::address”: # lookup IP in a database ip = db.lookup_ip(host.name) if ip is None: return Unknown(source=host) return ip
  • 31. Orchestration examples ● Cloud o IP address of VM only available when VM is provisioned at cloud provider o Deploy service updates only when VM is available ● OpenStack deployment o Complex service dependencies o e.g. network service requires uuid allocated by identity service in its configuration files
  • 33. Deploying changes ● two modes available ● client, server, agent o push and pull o fact renewal o enforcing dependencies over machine boundaries ● deploy o deploy directly, machine per machine o local or using ssh o runs embedded agent and server
  • 34. Demo ● Deploy a Drupal website on Amazon ● Use varnish as loadbalancer for 2 web servers ● Add a web server ● Switch to ELB
  • 38. Demo ELB @ AWS db-1 webhost-1 webhost-2 webhost-3
  • 39. Status ● Started in 2010 ● 5 master students ● Large hybrid cloud demonstrator (OpenStack and Amazon) ● Manage our own OpenStack: o deployment o accounts, tenants, networks, routers, … ● Open source on Github ● Basic documentation + tutorial
  • 40. Roadmap ● Integrate monitoring (management) ● State management and migration ● Increase compilation speed ● Improve documentation ● Automated testing for core and modules ● …
  • 41. Contact Bart Vanbrabant bart@impera.io @bartvanbrabant https://distrinet.cs.kuleuven.be Impera tool: ● https://github.com/impera-io/impera ● modules https://github.com/impera-io/* ● http://impera.readthedocs.org/en/latest/ ● https://impera.io | @impera_io