In the past years it was our mission to manage development, testing and production environments for web projects with agile multi-team setups. Systems were often rather complex, with dozens of services involved. The infrastructure requirements changed frequently and as agile as the rest of project. And of course changes had to be tested and deployed continuously in a controlled and reproducible manner. A mission impossible without systematic configuration management and even with such a great tool like Puppet a continuous challenge.
In this talk I will present our collection of useful tools, learnings and design patterns for Puppet. We will potentially come across topics like Vagrant, VeeWee, EC2, Docker, ENC, facter.d, git magic, Hiera, monitoring, autoregistration, rspec testing, MCollective, Puppet roles and profiles. This talk will not reinvent the wheel, but present some techniques that made us much more productive in our daily work and will hopefully help you in the future.
Deploying an application can be tedious and error-prone. Using Phing’s rich set of tasks, easy extension points and simple XML build files to handle the packaging, deploying and testing of your application can help you save time and increase quality. After this talk you will know how to use Phing and how to tailor it to your specific situation. A number of demonstrations will help illustrate transformation, file synchronization, database migration and other real-world use cases.
The shift towards API driven design has echoed in new design patterns from traditional MVC. Middleware pipelines is geared to address the complexities and nuances that arise with APIs. We'll delve into Expressive, discuss strategies for adding layers, handling authentication and authorization, and implications for projects. Come learn all about middleware and discover how you can leverage pipelines in your development.
Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...Puppet
Building, managing and scaling a highly-available Puppet master in the cloud can be a painful and complex task. Masterless Puppet, together with PuppetDB and Bolt, can solve this pain in a horizontally-scaleable, cloud-native environment.
In the past years it was our mission to manage development, testing and production environments for web projects with agile multi-team setups. Systems were often rather complex, with dozens of services involved. The infrastructure requirements changed frequently and as agile as the rest of project. And of course changes had to be tested and deployed continuously in a controlled and reproducible manner. A mission impossible without systematic configuration management and even with such a great tool like Puppet a continuous challenge.
In this talk I will present our collection of useful tools, learnings and design patterns for Puppet. We will potentially come across topics like Vagrant, VeeWee, EC2, Docker, ENC, facter.d, git magic, Hiera, monitoring, autoregistration, rspec testing, MCollective, Puppet roles and profiles. This talk will not reinvent the wheel, but present some techniques that made us much more productive in our daily work and will hopefully help you in the future.
Deploying an application can be tedious and error-prone. Using Phing’s rich set of tasks, easy extension points and simple XML build files to handle the packaging, deploying and testing of your application can help you save time and increase quality. After this talk you will know how to use Phing and how to tailor it to your specific situation. A number of demonstrations will help illustrate transformation, file synchronization, database migration and other real-world use cases.
The shift towards API driven design has echoed in new design patterns from traditional MVC. Middleware pipelines is geared to address the complexities and nuances that arise with APIs. We'll delve into Expressive, discuss strategies for adding layers, handling authentication and authorization, and implications for projects. Come learn all about middleware and discover how you can leverage pipelines in your development.
Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...Puppet
Building, managing and scaling a highly-available Puppet master in the cloud can be a painful and complex task. Masterless Puppet, together with PuppetDB and Bolt, can solve this pain in a horizontally-scaleable, cloud-native environment.
Facebook is a company that operates at massive scale. In this talk we’ll talk about how we use Python at Facebook.
Be it building back-end services, fast prototyping, automation, scaling operations, or simply gluing together various pieces of our infrastructure, Python is at the heart of it and allows our engineers to quickly deliver working solutions.
We’ll talk about our review process, unit testing, deployment workflow and various open-source framework we use.
When pushes to production fail the "blame game" starts between developers and devops, then everyone scurries to figure out what happened...fast! Adam Culp will show how a PHP application can be deployed flawlessly using Jenkins. Then see how "Dev" and "Ops" are supported by a system if the application breaks and the nightmare happens.
Scaling Puppet Enterprise with Compile Masters requires you to provision new machines and manually configure them, as well as your Puppet Master server.
Learn how you can automatically provision and configure new Compile Master nodes for your AWS Opsworks for Puppet Enterprise server by leveraging AWS Systems Manager
Tamir Dresher - Demystifying the Core of .NET CoreTamir Dresher
.NET Core has revolutionized the way we build applications. Today, you can write .NET code once and run it anywhere using the tools, practices, and techniques that .NET community known and loved for years. In this session, you'll learn about architecture of .NET Core and .NET Standard which allows it to run on any platform like Linux, OSX and windows. And you will explore how to integrate the different utilities, libraries and concepts to maximize your .NET skills in the new world of cross-platform .NET.
Writing Custom Puppet Types and Providers to Manage Web-Based ApplicationsTim Cinel
Atlassian's Build Engineering team is responsible for the build infrastructure that hundreds of developers rely on to perform thousands of builds that upload hundreds of thousands build artifacts a day. The services behind this infrastructure, including Bamboo and Nexus, are provisioned and configured using Puppet.
To manage the configuration of Bamboo and Nexus more effectively and with less disruption, the Build Engineering team has created its own custom Puppet types and providers to manage these applications through their REST APIs. Since publishing, these modules have been downloaded tens of thousands of times and received contributions from the community. This presentation walks the audience through the design and development custom Puppet types and providers.
Resources from this presentation are available here:
https://bitbucket.org/TCinel/puppet-camp-example/
Learn how to use Continuous Delivery for Puppet Enterprise (CD4PE) in an interactive workshop with hands-on labs. What's CD4PE? CD4PE is the continuous delivery add-on to Puppet Enterprise, aimed at accelerating the speed at which you can get Puppet code changes deployed into production safely. CD4PE facilitates code collaboration across teams, and dramatically improves the release management process for teams that own & maintain individual Puppet modules. CD4PE integrates with both Puppet Enterprise as well as your version control system of choice.
After completing the workshop, you will be able to use CD4PE to perform common code management tasks on your Puppet control repo and modules.
PHP has come a long way since it’s inception. What started out as an ecosystem of functions passed around on the internet eventually turned into a land of frameworks. These first frameworks were saddled with the problem of size, where if you wanted to use part of Zend Framework 1, for example, in your app, you pulled in the entire thing. Those days are gone now and frameworks are increasingly decoupled, but none so much as the Aura project. We’ll dive into what Aura is and how we can use it as standalone libraries as well as for full stack development.
How to build your own OpenStack distro using Puppet OpenStackOpenStack
In a joint meetup with the Sydney Puppet User Group, Michael will demonstrate how to build an OpenStack distro from scratch using the community OpenStack Puppet modules. In an interactive session with the audience, we’re going to pick a Linux distro, use the roles + profiles pattern, use Hiera to populate data, and build up a complete OpenStack cluster inside VMs running the OpenStack Identity, Image, Compute and Networking services. Although there are vendor tools available that can assist with this process, such as Fuel, Cisco OpenStack Installer and Aptira's own Stacktira, understanding how the modules fit together will allow an operator to easily add their own customisations to the any of these systems.
Michael has been working in the cloud computing space, both in a research and enterprise context for several years, with OpenStack production experience stretching all the way back to the third release, 'Cactus'. He leads the Aptira software engineering team in developing deployment and operations tools for OpenStack. Michael is a maintainer of and a driving force behind the most widely used OpenStack deployment tool set, Puppet-OpenStack. He holds a Bachelor of Software Engineering with Honours from Australian National University and is regularly invited back to his alma mater to guest lecture.
A book for learning puppet by real example and by building code. Chapter 1 gives you basic introduction and sets you up with a server-agent using Vagrant so that you can do hands-on.
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)James Titcumb
You've heard of the new Zend framework, Expressive, and you've heard it's the new hotness. In this talk, I will introduce the concepts of Expressive, how to bootstrap a simple application with the framework using best practices, and how to integrate a third party tool like Doctrine ORM.
PuppetConf 2016 Moving from Exec to Types and ProvidesMartin Alfke
"We want to automate this application rollout and configuration by using Puppet DSL." The task is clear, the tool is clear. But how to proceed? Installation is delivered as tarball, configuration is done by running cli commands. This talk will give an overview on how we started using commands within exec resources, the difficulties and problems that rose up, and the process of moving to Types and Providers.
An introduction to Zend Framework 1.8 using Zend_Tool, Zend_Application, a simple DAO and a very simple model that uses that DAO.
In the end you have a fully working application
Although tools like Varnish can improve performance and scalability for static sites, when user-specific content is needed, a hit to the PHP/Ruby/Python/.Net backend is still required, causing scalability issues. We’ll look at a brand-new Nginx module which implements an ultra-fast and scalable solution to this problem, changing the way developers think about designing sites with user-specific content.
Facebook is a company that operates at massive scale. In this talk we’ll talk about how we use Python at Facebook.
Be it building back-end services, fast prototyping, automation, scaling operations, or simply gluing together various pieces of our infrastructure, Python is at the heart of it and allows our engineers to quickly deliver working solutions.
We’ll talk about our review process, unit testing, deployment workflow and various open-source framework we use.
When pushes to production fail the "blame game" starts between developers and devops, then everyone scurries to figure out what happened...fast! Adam Culp will show how a PHP application can be deployed flawlessly using Jenkins. Then see how "Dev" and "Ops" are supported by a system if the application breaks and the nightmare happens.
Scaling Puppet Enterprise with Compile Masters requires you to provision new machines and manually configure them, as well as your Puppet Master server.
Learn how you can automatically provision and configure new Compile Master nodes for your AWS Opsworks for Puppet Enterprise server by leveraging AWS Systems Manager
Tamir Dresher - Demystifying the Core of .NET CoreTamir Dresher
.NET Core has revolutionized the way we build applications. Today, you can write .NET code once and run it anywhere using the tools, practices, and techniques that .NET community known and loved for years. In this session, you'll learn about architecture of .NET Core and .NET Standard which allows it to run on any platform like Linux, OSX and windows. And you will explore how to integrate the different utilities, libraries and concepts to maximize your .NET skills in the new world of cross-platform .NET.
Writing Custom Puppet Types and Providers to Manage Web-Based ApplicationsTim Cinel
Atlassian's Build Engineering team is responsible for the build infrastructure that hundreds of developers rely on to perform thousands of builds that upload hundreds of thousands build artifacts a day. The services behind this infrastructure, including Bamboo and Nexus, are provisioned and configured using Puppet.
To manage the configuration of Bamboo and Nexus more effectively and with less disruption, the Build Engineering team has created its own custom Puppet types and providers to manage these applications through their REST APIs. Since publishing, these modules have been downloaded tens of thousands of times and received contributions from the community. This presentation walks the audience through the design and development custom Puppet types and providers.
Resources from this presentation are available here:
https://bitbucket.org/TCinel/puppet-camp-example/
Learn how to use Continuous Delivery for Puppet Enterprise (CD4PE) in an interactive workshop with hands-on labs. What's CD4PE? CD4PE is the continuous delivery add-on to Puppet Enterprise, aimed at accelerating the speed at which you can get Puppet code changes deployed into production safely. CD4PE facilitates code collaboration across teams, and dramatically improves the release management process for teams that own & maintain individual Puppet modules. CD4PE integrates with both Puppet Enterprise as well as your version control system of choice.
After completing the workshop, you will be able to use CD4PE to perform common code management tasks on your Puppet control repo and modules.
PHP has come a long way since it’s inception. What started out as an ecosystem of functions passed around on the internet eventually turned into a land of frameworks. These first frameworks were saddled with the problem of size, where if you wanted to use part of Zend Framework 1, for example, in your app, you pulled in the entire thing. Those days are gone now and frameworks are increasingly decoupled, but none so much as the Aura project. We’ll dive into what Aura is and how we can use it as standalone libraries as well as for full stack development.
How to build your own OpenStack distro using Puppet OpenStackOpenStack
In a joint meetup with the Sydney Puppet User Group, Michael will demonstrate how to build an OpenStack distro from scratch using the community OpenStack Puppet modules. In an interactive session with the audience, we’re going to pick a Linux distro, use the roles + profiles pattern, use Hiera to populate data, and build up a complete OpenStack cluster inside VMs running the OpenStack Identity, Image, Compute and Networking services. Although there are vendor tools available that can assist with this process, such as Fuel, Cisco OpenStack Installer and Aptira's own Stacktira, understanding how the modules fit together will allow an operator to easily add their own customisations to the any of these systems.
Michael has been working in the cloud computing space, both in a research and enterprise context for several years, with OpenStack production experience stretching all the way back to the third release, 'Cactus'. He leads the Aptira software engineering team in developing deployment and operations tools for OpenStack. Michael is a maintainer of and a driving force behind the most widely used OpenStack deployment tool set, Puppet-OpenStack. He holds a Bachelor of Software Engineering with Honours from Australian National University and is regularly invited back to his alma mater to guest lecture.
A book for learning puppet by real example and by building code. Chapter 1 gives you basic introduction and sets you up with a server-agent using Vagrant so that you can do hands-on.
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)James Titcumb
You've heard of the new Zend framework, Expressive, and you've heard it's the new hotness. In this talk, I will introduce the concepts of Expressive, how to bootstrap a simple application with the framework using best practices, and how to integrate a third party tool like Doctrine ORM.
PuppetConf 2016 Moving from Exec to Types and ProvidesMartin Alfke
"We want to automate this application rollout and configuration by using Puppet DSL." The task is clear, the tool is clear. But how to proceed? Installation is delivered as tarball, configuration is done by running cli commands. This talk will give an overview on how we started using commands within exec resources, the difficulties and problems that rose up, and the process of moving to Types and Providers.
An introduction to Zend Framework 1.8 using Zend_Tool, Zend_Application, a simple DAO and a very simple model that uses that DAO.
In the end you have a fully working application
Although tools like Varnish can improve performance and scalability for static sites, when user-specific content is needed, a hit to the PHP/Ruby/Python/.Net backend is still required, causing scalability issues. We’ll look at a brand-new Nginx module which implements an ultra-fast and scalable solution to this problem, changing the way developers think about designing sites with user-specific content.
ESOFT Metro Campus - Diploma in Software Engineering - (Module VII) Introduction to Project Management
(Template - Virtusa Corporate)
Contents:
What is a Project?
History of the Project Management
Attributes of a Project
What is Project Management?
Why Project Management Important?
The Triple Constraints of a Project
Project Stakeholders
Performing Organizational Structures
Project Management Life Cycle
Project Management Processes
Nine Knowledge Areas
Integration Management
Scope Management
Time Management
Cost Management
Quality Management
Human Resource Management
Communication Management
Risk Management
Procurement Management
Lecture "Introduction to Software Engineering" in Object Oriented Software Engineering course at Beaconhouse National University Lahore for Spring 2017 Semester by Hafiz Ammar Siddiqui
Software Requirement Elicitation by Aime - Pankamol Srikaew
- What is Requirement Elicitation?
- Why? - Importance of Requirement Elicitation
- Challenges of Requirement Elicitation
- Types of Requirement
- 5 Steps to Extract Requirement
- Applying with Agile
- Requirement Management and Tools
This presentation is related to Object Oriented Software Engineering book by David C. Kung
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...op205
3F6 Software Engineering and Design, January 2012, lecture slides 2, Object Oriented Programming, Design and Analysis, Dr Elena Punskaya, Cambridge University Engineering Department
In this talk, Carlos de la Guardia shows how a Pyramid application can be deployed using a front end web server, like Apache or Nginx. He also covers how to automate deployment using buildout and a PyPI clone, and post-deployment creation of a variety of maintenance scripts and cron jobs that perform application specific tasks through Pyramid.
A link to audio of the presentation is here: http://2011ploneconference.sched.org/event/29a2f357905e4ab0fe3048c53bc1c94c
Tech introduction to Yaetos, an open source tool for data engineers, scientists, and analysts to easily create data pipelines in python and SQL and put them in production in the cloud.
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Runwesley chun
Many people ask, "Which one is better for me: App Engine, Cloud Functions, or Cloud Run?" To help you learn more about them, understand their differences, appropriate use cases, etc., why not deploy the same app to all 3? With this "test drive," you only need to make minor config changes between platforms. You'll also learn one of Google Cloud's AI/ML "building block" APIs as a bonus as the sample app is a simple "mini" Google Translate "MVP". This is a 45- 60-minute talk that reviews the Google Cloud serverless compute platforms then walks through the same app and its deployments. The code is maintained at https://github.com/googlecodelabs/cloud-nebulous-serverless-python
SpringBoot and Spring Cloud Service for MSAOracle Korea
Cloud 환경에서 MSA를 하기 위해서 Service Discovery, Circuit Breaker 등을 사용하여 Application을 개발하는 방법과 SpringBoot 와 Spring Cloud Service 를 사용하는데, Cloud에서 Kubernetes를 위시한 Container 생태계가 어떻게 MSA에 영향을 미치는지 알아봅니다.
Cypress is a testing tool that allows front-end developers and test engineers to automate their tests following the flow in which a user might use the application.
Providing the interface of the browser along with dev console and network requests, it makes the life of a tester much simpler.
Abstract: At DataRobot we deal with automation challenges every day. This talk will give insight into how we use Python tools built around Ansible, Terraform, and Docker to solve real-world problems in infrastructure and automation.
Choreo Community Call 1: How to Create a Service in Choreo!
Agenda:
1. Introduction to Choreo
2. Introduction to Service Components
- What are Service components and its use cases
- Capabilities
3. Demo
- Deploy a Todo list web application
Watch the video at : https://youtube.com/live/FX06RgpNUB4
5/13/13 presentation to Austin DevOps Meetup Group, describing our system for deploying 15 websites and supporting services in multiple languages to bare redhat 6 VMs. All system-wide software is installed using RPMs, and all application software is installed using GIT or Tarball.
In the modern era, software is commonly delivered as a service: called web apps, or software-as-a-service. The twelve-factor app is a methodology for building software-as-a-service apps that:
Use declarative formats for setup automation, to minimize time and cost for new developers joining the project;Have a clean contract with the underlying operating system, offering maximum portability between execution environments;Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration;Minimize divergence between development and production, enabling continuous deployment for maximum agility;And can scale up without significant changes to tooling, architecture, or development practices.
The twelve-factor methodology can be applied to apps written in any programming language, and which use any combination of backing services (database, queue, memory cache, etc).
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...SkillCertProExams
• For a full set of 760+ questions. Go to
https://skillcertpro.com/product/databricks-certified-data-engineer-associate-exam-questions/
• SkillCertPro offers detailed explanations to each question which helps to understand the concepts better.
• It is recommended to score above 85% in SkillCertPro exams before attempting a real exam.
• SkillCertPro updates exam questions every 2 weeks.
• You will get life time access and life time free updates
• SkillCertPro assures 100% pass guarantee in first attempt.
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie WellsRosie Wells
Insight: In a landscape where traditional narrative structures are giving way to fragmented and non-linear forms of storytelling, there lies immense potential for creativity and exploration.
'Collapsing Narratives: Exploring Non-Linearity' is a micro report from Rosie Wells.
Rosie Wells is an Arts & Cultural Strategist uniquely positioned at the intersection of grassroots and mainstream storytelling.
Their work is focused on developing meaningful and lasting connections that can drive social change.
Please download this presentation to enjoy the hyperlinks!
This presentation, created by Syed Faiz ul Hassan, explores the profound influence of media on public perception and behavior. It delves into the evolution of media from oral traditions to modern digital and social media platforms. Key topics include the role of media in information propagation, socialization, crisis awareness, globalization, and education. The presentation also examines media influence through agenda setting, propaganda, and manipulative techniques used by advertisers and marketers. Furthermore, it highlights the impact of surveillance enabled by media technologies on personal behavior and preferences. Through this comprehensive overview, the presentation aims to shed light on how media shapes collective consciousness and public opinion.
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
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”)
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
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
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
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
● …