The document discusses how buildout is used to create repeatable Python application deployments. Buildout uses a configuration file and recipes to automate the installation of applications and their dependencies. It describes how buildout is used to deploy complex Plone and Django applications across multiple servers. Buildout solves the problems of repeatable and easy application deployment through its use of recipes, parts, and versions control of dependencies.
This document provides a 3 sentence summary of the PIP and Virtualenv wrapper document:
PIP is a tool for installing and managing Python packages and works well with Virtualenv, which creates isolated Python environments to avoid conflicts between packages. Virtualenvwrapper is a set of extensions that organize all virtual environments in one place and provide commands to easily switch between environments. The document discusses installing, configuring, and using PIP, Virtualenv, and Virtualenvwrapper on Linux and Windows systems to manage Python packages across different projects.
This document discusses techniques for managing different buildout configurations for multiple environments. It describes using environment variables and variant configuration files to determine the correct buildout configuration. It also covers isolating the buildout from system site packages using virtualenv. Finally, it shows how to bootstrap virtualenv and buildout in one step.
Virtualenv allows creating isolated Python environments for projects with different dependencies by installing Python packages in project-specific directories rather than globally. It avoids issues that can arise from having multiple versions of packages system-wide. Virtualenv Wrapper provides helpful shell scripts to easily create, delete, and switch between virtual environments.
This document provides an overview of zc.buildout, a tool for assembling applications from multiple parts. It discusses the need for an automated and repeatable process to build software stacks. It describes how buildout uses a configuration file and recipes to specify dependencies and install packages. It provides examples of basic buildout configuration and use of common recipes. It recommends keeping buildouts simple by combining a few basic recipes rather than creating many specialized recipes.
Buildout provides an easy way to manage Python dependencies and environments through a single configuration file. It can install packages from various sources like PyPI or SVN checkouts. The djangorecipe recipe simplifies creating Django projects and their dependencies with Buildout. It generates a manage.py wrapper and WSGI script with all dependencies included. Migrating existing projects to use Buildout and djangorecipe for dependency and environment management is straightforward.
This document discusses virtual environments in Python. It provides an overview of how virtual environments allow users to manage dependencies for a project and ensure consistency. Benefits of virtual environments include making development and deployment easier by decoupling projects and their dependencies, as well as simplifying testing. The document then outlines steps to set up a virtual environment for a Python project.
This document discusses using multiple Git repositories and Git submodules. It begins with background on Git and its distributed nature. It then covers how to initialize and add Git submodules to a superproject repository. Commands are provided for cloning, pulling, and pushing changes within submodules and the superproject. The document also notes pros and cons of submodules, and briefly introduces gitslave/gits as an alternative to Git submodules.
The document discusses Andres Almiray, a Java developer since the beginning and Groovy committer since 2007. It provides an overview of the Groovy ecosystem, including frameworks like Grails and Griffon, libraries, tools, and publishing tools. Key frameworks and libraries mentioned include Grails, Griffon, Spock, GContracts. Tools include Gant, GMavenPlus, Geb, GroovyServ, LazyBones, and Crash. Publishing tools include JBake, Grain, and Gaiden.
This document provides a 3 sentence summary of the PIP and Virtualenv wrapper document:
PIP is a tool for installing and managing Python packages and works well with Virtualenv, which creates isolated Python environments to avoid conflicts between packages. Virtualenvwrapper is a set of extensions that organize all virtual environments in one place and provide commands to easily switch between environments. The document discusses installing, configuring, and using PIP, Virtualenv, and Virtualenvwrapper on Linux and Windows systems to manage Python packages across different projects.
This document discusses techniques for managing different buildout configurations for multiple environments. It describes using environment variables and variant configuration files to determine the correct buildout configuration. It also covers isolating the buildout from system site packages using virtualenv. Finally, it shows how to bootstrap virtualenv and buildout in one step.
Virtualenv allows creating isolated Python environments for projects with different dependencies by installing Python packages in project-specific directories rather than globally. It avoids issues that can arise from having multiple versions of packages system-wide. Virtualenv Wrapper provides helpful shell scripts to easily create, delete, and switch between virtual environments.
This document provides an overview of zc.buildout, a tool for assembling applications from multiple parts. It discusses the need for an automated and repeatable process to build software stacks. It describes how buildout uses a configuration file and recipes to specify dependencies and install packages. It provides examples of basic buildout configuration and use of common recipes. It recommends keeping buildouts simple by combining a few basic recipes rather than creating many specialized recipes.
Buildout provides an easy way to manage Python dependencies and environments through a single configuration file. It can install packages from various sources like PyPI or SVN checkouts. The djangorecipe recipe simplifies creating Django projects and their dependencies with Buildout. It generates a manage.py wrapper and WSGI script with all dependencies included. Migrating existing projects to use Buildout and djangorecipe for dependency and environment management is straightforward.
This document discusses virtual environments in Python. It provides an overview of how virtual environments allow users to manage dependencies for a project and ensure consistency. Benefits of virtual environments include making development and deployment easier by decoupling projects and their dependencies, as well as simplifying testing. The document then outlines steps to set up a virtual environment for a Python project.
This document discusses using multiple Git repositories and Git submodules. It begins with background on Git and its distributed nature. It then covers how to initialize and add Git submodules to a superproject repository. Commands are provided for cloning, pulling, and pushing changes within submodules and the superproject. The document also notes pros and cons of submodules, and briefly introduces gitslave/gits as an alternative to Git submodules.
The document discusses Andres Almiray, a Java developer since the beginning and Groovy committer since 2007. It provides an overview of the Groovy ecosystem, including frameworks like Grails and Griffon, libraries, tools, and publishing tools. Key frameworks and libraries mentioned include Grails, Griffon, Spock, GContracts. Tools include Gant, GMavenPlus, Geb, GroovyServ, LazyBones, and Crash. Publishing tools include JBake, Grain, and Gaiden.
This document discusses using Docker to run Groonga, Rroonga, and Honyomi. It provides Dockerfile code to build Docker images for Groonga/Rroonga and Honyomi. It also mentions using Kitematic as a Docker GUI and links to relevant Docker Hub images.
This document discusses deploying a Node.js application using Docker. It provides steps for setting up a development environment on a local machine, provisioning a Ubuntu server using Vagrant, installing Docker on the server, building a Docker image from the application code, and automatically rebuilding and deploying the Docker container on code pushes to a git repository hosted on the server. The automated deployment is achieved through a post-receive git hook that checks out the new code, builds a new Docker image tagged with the git commit hash, stops and removes any existing containers, and runs the new container exposing port 80.
The document describes the evolution of a workflow for managing thousands of Puppet modules using R10K and related tools. It started with all modules and code in a single monolithic repository, which led to long test cycles and all-or-nothing deployments. Introducing R10K and the Puppetfile allowed each module to be in its own repository and specify dependencies, enabling faster targeted testing and deployments. Additional tools like Reaktor were created to automate releases and notifications. The optimized workflow provides dynamic environments, simplified development, and easy production deployments.
Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !Florent BENOIT
Développer dans le cloud en Java ? Yes we can !
Grace à Eclipse Che et Codenvy vous pouvez facilement compiler, executer ou développer votre projet Java. L'environnement d'execution utilise Docker
The program uses a for loop to iterate from 1 to 100. Inside the loop, it uses if/else conditions to check if the number is divisible by 3, 5, or both and prints the corresponding string. If none of the conditions are met, it prints the number.
Django district pip, virtualenv, virtualenv wrapper & moreJacqueline Kazil
Pip, Virtualenv, VirtualenvWrapper and other tools help isolate Python environments and dependencies to make project management and collaboration easier. Virtualenv creates isolated Python environments and VirtualenvWrapper provides additional tools to manage these environments. These tools help avoid issues with system packages conflicting with project packages, allow installing packages without sudo, and keep different projects and developers on the same page.
Git is a distributed version control system that allows developers to work independently and asynchronously on features or bug fixes through branches. Branches allow developers to commit changes frequently without disrupting the main codebase. If a branch is ready, a developer can merge the branch back into the main branch. Git also uses a commit and diff system to track changes at a file level, making it easy to revert changes or roll back to previous versions if needed. The distributed nature of Git provides advantages over centralized systems like SVN by allowing independent repositories and easy conflict resolution during merges.
uWSGI - Swiss army knife for your Python web appsTomislav Raseta
uWSGI is a full-stack tool for building hosting services that acts as an application server for Python web apps using the WSGI specification. It provides a pluggable architecture, versatility, high performance, low resource usage, and reliability. Configuration options are extensive and allow for processes, threads, reloading, monitoring and more. Proper configuration and testing is required to optimize performance for production deployments.
Pip is a tool for installing and managing Python packages. Virtualenv allows creating isolated Python environments and avoids system-wide installations of packages. It is recommended to create a separate virtualenv for each project to isolate packages and versions. Key commands include mkvirtualenv to create, workon to activate, pip to install/uninstall packages, and deactivate to exit a virtualenv. Virtualenvwrapper makes working with virtualenv easier. Environment variables can be set on virtualenv activation to configure database credentials for each isolated project environment.
This document provides instructions for installing Python 2.7.9 and Anaconda on Windows, OSX, and Linux systems. It describes downloading the Python 2.7.9 installer from the Python website and running it to complete the installation on Windows. It notes that Python comes pre-installed on OSX and Linux systems. It also gives directions for downloading and installing the Anaconda installer from the Continuum Analytics website and running it with default settings on Windows, OSX, and Linux.
This document provides an introduction and overview of using Python on the Raspberry Pi. It discusses that Python is a general purpose language created in the late 1980s that is supported on many operating systems and hardware, including the Raspberry Pi. It then provides tips and recommendations for learning Python, using popular Python libraries, virtual environments, best coding practices, and web development frameworks. Specific libraries and tools mentioned include IPython, Requests, Pandas, Matplotlib, Scikit-Learn, Bottle, Flask, and Django. Source code examples are also included.
This document provides an introduction and overview of Git version control system. It covers:
- Git was created by Linus Torvalds to be fast and capable of handling large projects like the Linux kernel.
- Common Git commands like init, add, commit, status, diff, log are demonstrated along with basic workflows.
- Advanced topics covered include branching, merging, tagging, collaboration using remote repositories and pushing/pulling.
- The goal is to help the reader understand the basics of Git and get started using it effectively.
Welcome to the Cheese Shop: setuptools, virtualenv and PyPUGdwvisser
This document introduces setuptools, virtualenv, and PyPI (Python Package Index), the standard tools for packaging and distributing Python packages. It discusses source distributions (sdists) and built distributions like eggs and wheels. It demonstrates pip and virtualenv and provides online resources for learning more about Python packaging.
Tutorial on the usage of Sumatra (http://neuralensemble.org/sumatra/) with git. Presented at the Bernstein Center for Computational Neuroscience in May 2015.
Embedded Recipes 2018 - Yoctoception: Containers in the embedded world - Jéré...Anne Nicolas
Containerisation is a new player in the embedded world. Provisionning and rapid deployment doesn’t really make sense for embedded devices, but the extra security that container partitionning brings to the table is quickly becoming a “must have” for every embedded device.
However, the embedded world has its own constraints. Generic distributions like debian or Fedora are rarely used and tools like dockers can’t build software with custom build-chains the way Yocto or buildroot does it.
This talk will quickly review what are linux containers, why they are usefull in the embedde world, and then will study ways to generate container images using the yocto infrastructure and integrate them in another yocto image without breaking the package-based update system that Yocto provides.
The following is my Agenda
* Why I don’t choose Jenkins or GitLab CI?
* What is Drone CI?
* Drone Infrastructure
* How to install Drone in five minutes?
* Integrate your project
* Create your Drone plugin
* Try drone CLI without drone server
more detail information you can find that in Udemy: https://www.udemy.com/devops-oneday/?couponCode=DRONE-DEVOPS
This document introduces version control systems and Git. It discusses the history and features of Git, how it differs from centralized and local version control systems in using a distributed and non-linear model. The document then provides a tutorial on basic Git commands and workflows for initializing and cloning repositories, tracking and committing changes, viewing history and undoing changes, working with remote repositories, tagging, and using branches.
This document provides instructions for setting up Node and npm on different operating systems like Mac OS X, Ubuntu, CentOS, and Windows. It discusses installing Node using tools like Homebrew, package managers, Chocolatey, and nodist. It also covers checking Node versions, using Node Version Managers like nvm and nodist, installing native modules and node-gyp on Windows, using the Node Package Manager (npm), and running Node on system startup with forever.
GeoServer is an amazing project, and an amazing project to work on!
Please attend this workshop to:
* Get Started with the GeoServer codebase
* Orientation with a Tour of the GeoServer architecture
* Introduction the service dispatch framework, includin creating your own service
* Built chain and test facilities
* Create a custom function for use with map styling
* Create a custom process for use with style transformations and web processing service
* Anatomy of a successful pull request
Attendees will build their own GeoServer, learn a bit about how our community operates, and enjoy extending the base application.
If you are a developer looking to support GeoServer, or join us for a sprint or bug-stomp, this workshop is great introduction.
This course features hands-on development. We encourage and expect you to bring your favourite Java development environment.
For a good time with open source join GeoServer today!
Marek Kuziel - Deploying Django with Buildoutmarekkuziel
This document discusses using Buildout to automate deployment of Django projects. It recommends using Buildout to create standalone Python environments for development, testing, and production to improve security and maintainability. The document provides steps to set up a basic Django project with Buildout, including downloading Bootstrap, creating a buildout.cfg file, and running buildout to install Django and other dependencies. It also describes separating development and production configurations by creating a development.cfg file to customize settings for local development.
This document discusses using Docker to run Groonga, Rroonga, and Honyomi. It provides Dockerfile code to build Docker images for Groonga/Rroonga and Honyomi. It also mentions using Kitematic as a Docker GUI and links to relevant Docker Hub images.
This document discusses deploying a Node.js application using Docker. It provides steps for setting up a development environment on a local machine, provisioning a Ubuntu server using Vagrant, installing Docker on the server, building a Docker image from the application code, and automatically rebuilding and deploying the Docker container on code pushes to a git repository hosted on the server. The automated deployment is achieved through a post-receive git hook that checks out the new code, builds a new Docker image tagged with the git commit hash, stops and removes any existing containers, and runs the new container exposing port 80.
The document describes the evolution of a workflow for managing thousands of Puppet modules using R10K and related tools. It started with all modules and code in a single monolithic repository, which led to long test cycles and all-or-nothing deployments. Introducing R10K and the Puppetfile allowed each module to be in its own repository and specify dependencies, enabling faster targeted testing and deployments. Additional tools like Reaktor were created to automate releases and notifications. The optimized workflow provides dynamic environments, simplified development, and easy production deployments.
Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !Florent BENOIT
Développer dans le cloud en Java ? Yes we can !
Grace à Eclipse Che et Codenvy vous pouvez facilement compiler, executer ou développer votre projet Java. L'environnement d'execution utilise Docker
The program uses a for loop to iterate from 1 to 100. Inside the loop, it uses if/else conditions to check if the number is divisible by 3, 5, or both and prints the corresponding string. If none of the conditions are met, it prints the number.
Django district pip, virtualenv, virtualenv wrapper & moreJacqueline Kazil
Pip, Virtualenv, VirtualenvWrapper and other tools help isolate Python environments and dependencies to make project management and collaboration easier. Virtualenv creates isolated Python environments and VirtualenvWrapper provides additional tools to manage these environments. These tools help avoid issues with system packages conflicting with project packages, allow installing packages without sudo, and keep different projects and developers on the same page.
Git is a distributed version control system that allows developers to work independently and asynchronously on features or bug fixes through branches. Branches allow developers to commit changes frequently without disrupting the main codebase. If a branch is ready, a developer can merge the branch back into the main branch. Git also uses a commit and diff system to track changes at a file level, making it easy to revert changes or roll back to previous versions if needed. The distributed nature of Git provides advantages over centralized systems like SVN by allowing independent repositories and easy conflict resolution during merges.
uWSGI - Swiss army knife for your Python web appsTomislav Raseta
uWSGI is a full-stack tool for building hosting services that acts as an application server for Python web apps using the WSGI specification. It provides a pluggable architecture, versatility, high performance, low resource usage, and reliability. Configuration options are extensive and allow for processes, threads, reloading, monitoring and more. Proper configuration and testing is required to optimize performance for production deployments.
Pip is a tool for installing and managing Python packages. Virtualenv allows creating isolated Python environments and avoids system-wide installations of packages. It is recommended to create a separate virtualenv for each project to isolate packages and versions. Key commands include mkvirtualenv to create, workon to activate, pip to install/uninstall packages, and deactivate to exit a virtualenv. Virtualenvwrapper makes working with virtualenv easier. Environment variables can be set on virtualenv activation to configure database credentials for each isolated project environment.
This document provides instructions for installing Python 2.7.9 and Anaconda on Windows, OSX, and Linux systems. It describes downloading the Python 2.7.9 installer from the Python website and running it to complete the installation on Windows. It notes that Python comes pre-installed on OSX and Linux systems. It also gives directions for downloading and installing the Anaconda installer from the Continuum Analytics website and running it with default settings on Windows, OSX, and Linux.
This document provides an introduction and overview of using Python on the Raspberry Pi. It discusses that Python is a general purpose language created in the late 1980s that is supported on many operating systems and hardware, including the Raspberry Pi. It then provides tips and recommendations for learning Python, using popular Python libraries, virtual environments, best coding practices, and web development frameworks. Specific libraries and tools mentioned include IPython, Requests, Pandas, Matplotlib, Scikit-Learn, Bottle, Flask, and Django. Source code examples are also included.
This document provides an introduction and overview of Git version control system. It covers:
- Git was created by Linus Torvalds to be fast and capable of handling large projects like the Linux kernel.
- Common Git commands like init, add, commit, status, diff, log are demonstrated along with basic workflows.
- Advanced topics covered include branching, merging, tagging, collaboration using remote repositories and pushing/pulling.
- The goal is to help the reader understand the basics of Git and get started using it effectively.
Welcome to the Cheese Shop: setuptools, virtualenv and PyPUGdwvisser
This document introduces setuptools, virtualenv, and PyPI (Python Package Index), the standard tools for packaging and distributing Python packages. It discusses source distributions (sdists) and built distributions like eggs and wheels. It demonstrates pip and virtualenv and provides online resources for learning more about Python packaging.
Tutorial on the usage of Sumatra (http://neuralensemble.org/sumatra/) with git. Presented at the Bernstein Center for Computational Neuroscience in May 2015.
Embedded Recipes 2018 - Yoctoception: Containers in the embedded world - Jéré...Anne Nicolas
Containerisation is a new player in the embedded world. Provisionning and rapid deployment doesn’t really make sense for embedded devices, but the extra security that container partitionning brings to the table is quickly becoming a “must have” for every embedded device.
However, the embedded world has its own constraints. Generic distributions like debian or Fedora are rarely used and tools like dockers can’t build software with custom build-chains the way Yocto or buildroot does it.
This talk will quickly review what are linux containers, why they are usefull in the embedde world, and then will study ways to generate container images using the yocto infrastructure and integrate them in another yocto image without breaking the package-based update system that Yocto provides.
The following is my Agenda
* Why I don’t choose Jenkins or GitLab CI?
* What is Drone CI?
* Drone Infrastructure
* How to install Drone in five minutes?
* Integrate your project
* Create your Drone plugin
* Try drone CLI without drone server
more detail information you can find that in Udemy: https://www.udemy.com/devops-oneday/?couponCode=DRONE-DEVOPS
This document introduces version control systems and Git. It discusses the history and features of Git, how it differs from centralized and local version control systems in using a distributed and non-linear model. The document then provides a tutorial on basic Git commands and workflows for initializing and cloning repositories, tracking and committing changes, viewing history and undoing changes, working with remote repositories, tagging, and using branches.
This document provides instructions for setting up Node and npm on different operating systems like Mac OS X, Ubuntu, CentOS, and Windows. It discusses installing Node using tools like Homebrew, package managers, Chocolatey, and nodist. It also covers checking Node versions, using Node Version Managers like nvm and nodist, installing native modules and node-gyp on Windows, using the Node Package Manager (npm), and running Node on system startup with forever.
GeoServer is an amazing project, and an amazing project to work on!
Please attend this workshop to:
* Get Started with the GeoServer codebase
* Orientation with a Tour of the GeoServer architecture
* Introduction the service dispatch framework, includin creating your own service
* Built chain and test facilities
* Create a custom function for use with map styling
* Create a custom process for use with style transformations and web processing service
* Anatomy of a successful pull request
Attendees will build their own GeoServer, learn a bit about how our community operates, and enjoy extending the base application.
If you are a developer looking to support GeoServer, or join us for a sprint or bug-stomp, this workshop is great introduction.
This course features hands-on development. We encourage and expect you to bring your favourite Java development environment.
For a good time with open source join GeoServer today!
Marek Kuziel - Deploying Django with Buildoutmarekkuziel
This document discusses using Buildout to automate deployment of Django projects. It recommends using Buildout to create standalone Python environments for development, testing, and production to improve security and maintainability. The document provides steps to set up a basic Django project with Buildout, including downloading Bootstrap, creating a buildout.cfg file, and running buildout to install Django and other dependencies. It also describes separating development and production configurations by creating a development.cfg file to customize settings for local development.
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
This workshop will walk through the process of creating a video player application that will have a mobile device as a remote control and a pc somewhere as the server. The talk will show some of the easy to implement features and best practices.
This document discusses how automation with tools like Fabric and Python can make developers, QAs, and admins more efficient. It introduces Fabric, a Python library for automating system administration tasks and deployment over SSH. Fabric allows tasks like server setup, project creation, and deployment to be automated. An example shows using Fabric to add a new user. The document demonstrates how Fabric scripts can be used to automate starting a new Django project on a server, setting it up, deploying the code, and running the application. Links are provided to Fabric documentation and example scripts.
Suse Studio: "How to create a live openSUSE image with OpenFOAM® and CFD tools"Baltasar Ortega
Una descripción de Suse Studio, además de una magnífica explicación de su utilización de la mano de Alberto Passalacqua.
"How to create a live
openSUSE image with OpenFOAM® and CFD tools"
Open Source Development
Building your own Custom Firefox (or LibreOffice/OpenOffice)
from the Nightly or Developer Source Code
GIT / Mercurial (code sharing / version control)
What's new in HTML5 and JavaScript 2015
ECMAScript 2015 (ES6)
const, class, let, for of, function*, import
Setting up Notifications, Alerts & Webhooks with Flux v2 by Alison DowdneyWeaveworks
Watch the recording here: https://youtu.be/cakxixc-yQk
❗️ Notifications & Alerts ⚠️
When operating a cluster, different teams may wish to receive notifications about the status of their GitOps pipelines. For example, the on-call team would receive alerts about reconciliation failures in the cluster, while the dev team may wish to be alerted when a new version of an app was deployed and if the deployment is healthy.
Webhook Receivers
The GitOps toolkit controllers are by design pull-based. In order to notify the controllers about changes in Git or Helm repositories, you can setup webhooks and trigger a cluster reconciliation every time a source changes. Using webhook receivers, you can build push-based GitOps pipelines that react to external events.
Alison Dowdney, Developer Experience Engineer at Weaveworks and CNCF Ambassador, walks through how to define a provider, an alert, git commit status, exposing the webhook receiver and defining a git repository and receiver.
Resources
Flux2 Documentation: https://fluxcd.io/docs/
Flux Guide: Setup Notifications: https://fluxcd.io/docs/guides/notifications/
Flux Guide: Setup Webhook receivers: https://fluxcd.io/docs/guides/webhook-receivers/
Flux Roadmap: https://fluxcd.io/docs/roadmap/
Alison's Demo Repo: https://github.com/alisondy/flux-demos
Creating new Tizen profiles using the Yocto ProjectLeon Anavi
Presentation for Tizen Developer Conference 2015 Shenzhen.
Tizen is an open source Linux based software platform for Internet of Things, mobile, wearable and embedded devices. Tizen:Common provides a generic development environment for Tizen 3 which key features include Wayland, Weston, EFL, and the Crosswalk web runtime. The Yocto Project offers easy to use tools to create meta layers for new Tizen 3 profiles that inherit and expand the features of Tizen:Common. This talk will focus the Tizen architecture and it will provide guidelines for creating and building new Tizen profiles, based on Tizen:Common, using the Yocto Project for devices with Intel or ARM processors. It will also provide information about hidden gems in Tizen on Yocto and practical examples for packaging and deploying HTML5 applications through Yocto recipes for the open source hardware development boards MinnowBoard Max (Intel) and Humming Board (Freescale I.MX6 ARM SoC).
eXoer on the grill: eXo Add-ons factory using Docker and CodenvyeXo Platform
Few months ago, Codenvy released a great tutorial about “Creating an eXo Factory Using Codenvy and Docker” http://blog.codenvy.com/creating-codenvy-factory-exo-extensions-development which gave great details about how eXo, Codenvy and Docker can work together to give developers an easy way to code eXo add-ons.
In this presentation we will bring insights about how we used Codenvy’s Factories (with Docker recipes) to give developers a one-click easy way to begin coding eXo Add-ons.
eXoers on the Grill aims to provide some incentive & fresh air for our staff in order to constantly re-think our methods, spread good practices, promote some technology or tools, generate ideas, etc... All the teams are invited to contribute by picking up some hot topics of their choice and spread to other teams.
This presentation was given at the Linux Open Administration Days in Antwerpen, Belgium. It covers how puppetmanaged.org, a set of common puppet modules can be implemented in any current existing puppet setup.
Logs/Metrics Gathering With OpenShift EFK StackJosef Karásek
This document summarizes a presentation about logs and metrics gathering with the OpenShift EFK stack. It introduces the OpenShift logging team and their objectives of collecting distributed logs in a common data model with security and scalability. It describes the main components of Fluendt for collection and normalization and Elasticsearch for storage. It provides examples of using the logging stack with OpenShift, OpenStack, and oVirt and advice for custom application logging.
A million ways to provision embedded linux devicesMender.io
Drew Moseley presented on the many ways to provision embedded Linux devices. There are over a million ways due to variations in boards, manufacturers, bootloaders, storage, and more. He discussed common provisioning models including SD cards, eMMC, SPI flash, raw NAND, and Android fastboot. Tools like Yocto, U-Boot, and Mender can help manage the process, while considerations like manufacturing, development workflows, and product development also impact provisioning.
This document provides an overview of Kubernetes 101. It begins with asking why Kubernetes is needed and provides a brief history of the project. It describes containers and container orchestration tools. It then covers the main components of Kubernetes architecture including pods, replica sets, deployments, services, and ingress. It provides examples of common Kubernetes manifest files and discusses basic Kubernetes primitives. It concludes with discussing DevOps practices after adopting Kubernetes and potential next steps to learn more advanced Kubernetes topics.
This document compares and contrasts two tools for deploying Python web applications to remote servers: Hostout and Silverlining.
Hostout uses Fabric and buildout to replicate a local development environment across multiple servers. It provides a modular approach that allows customization through additional recipes and fabric files. Silverlining takes a more "batteries included" approach by creating a standard application layout and managing dependencies, code installation, and deployment through simple commands.
While both tools aim to simplify deployment, Hostout offers more flexibility through its buildout-based approach but with increased complexity, while Silverlining provides a more standardized workflow out of the box at the cost of customizability. The document discusses the tradeoffs between the two in
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...Nicolas Brousse
TubeMogul grew from few servers to over two thousands servers and handling over one trillion http requests a month, processed in less than 50ms each. To keep up with the fast growth, the SRE team had to implement an efficient Continuous Delivery infrastructure that allowed to do over 10,000 puppet deployment and 8,500 application deployment in 2014. In this presentation, we will cover the nuts and bolts of the TubeMogul operations engineering team and how they over come challenges.
This document discusses Opscode Chef, a systems integration framework that allows users to manage infrastructure as code. It provides concise summaries of key points about Chef:
1) Chef allows users to manage server configuration and infrastructure as code using resources, recipes, roles and other concepts defined in the Chef framework.
2) Infrastructure is defined as code that can be versioned, tested, and deployed to automatically configure servers.
3) The document discusses Chef concepts like nodes, environments, attributes and provides an example of using a cron resource to configure a scheduled task.
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 Tikal Knowledge
This document discusses using Jenkins for continuous integration (CI) and continuous delivery (CD) of .NET open source projects. It covers how to achieve CI using Jenkins by automating builds, testing on each commit, and more. It also discusses using NuGet for dependency management and Sonar for code quality analysis. Finally, it provides examples of using Jenkins to deploy builds to platforms like AWS Elastic Beanstalk for CD after builds pass testing.
This document provides instructions for installing and configuring Odoo V8 on an Ubuntu server. It discusses downloading required packages and dependencies, setting up the PostgreSQL database, configuring Odoo directories and files, installing Odoo from GitHub, and setting up the init script to allow automatic startup of Odoo. Tips are provided on maintenance, security, and performance best practices like using SSL, taking regular backups, and running Odoo in multi-worker mode. The goal is to help users install Odoo V8 in a secure and optimized way following standard directory structure and configuration.
Similaire à Buildout: creating and deploying repeatable applications in python (20)
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC
Ellisha Heppner, Grant Management Lead, presented an update on APNIC Foundation to the PNG DNS Forum held from 6 to 10 May, 2024 in Port Moresby, Papua New Guinea.
Italy Agriculture Equipment Market Outlook to 2027harveenkaur52
Agriculture and Animal Care
Ken Research has an expertise in Agriculture and Animal Care sector and offer vast collection of information related to all major aspects such as Agriculture equipment, Crop Protection, Seed, Agriculture Chemical, Fertilizers, Protected Cultivators, Palm Oil, Hybrid Seed, Animal Feed additives and many more.
Our continuous study and findings in agriculture sector provide better insights to companies dealing with related product and services, government and agriculture associations, researchers and students to well understand the present and expected scenario.
Our Animal care category provides solutions on Animal Healthcare and related products and services, including, animal feed additives, vaccination
Instagram has become one of the most popular social media platforms, allowing people to share photos, videos, and stories with their followers. Sometimes, though, you might want to view someone's story without them knowing.
Ready to Unlock the Power of Blockchain!Toptal Tech
Imagine a world where data flows freely, yet remains secure. A world where trust is built into the fabric of every transaction. This is the promise of blockchain, a revolutionary technology poised to reshape our digital landscape.
Toptal Tech is at the forefront of this innovation, connecting you with the brightest minds in blockchain development. Together, we can unlock the potential of this transformative technology, building a future of transparency, security, and endless possibilities.
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfFlorence Consulting
Quattordicesimo Meetup di Milano, tenutosi a Milano il 23 Maggio 2024 dalle ore 17:00 alle ore 18:30 in presenza e da remoto.
Abbiamo parlato di come Axpo Italia S.p.A. ha ridotto il technical debt migrando le proprie APIs da Mule 3.9 a Mule 4.4 passando anche da on-premises a CloudHub 1.0.
7. Zope
● Official definition: Free, open-source,
object-oriented web application server
written in Python.
● A way to publish python objects in a web
environment.
● Originally developed to replace/improve
CGI-based development
8. Zope
● Introduced object oriented databases
(ZODB) in 2001
● Through-the-web development (don't tell
anyone)
● Restricted python (stripped-down python
for security reasons)
● DTML or ZPT as template language
9. But we also do Django
● Official definition: high-level python web
framework that encourages rapid
development and clean, pragmatic
design.
● A framework to develop sites easily and
fastly usually with SQL based data-schema
and storage
10. Zope until .../2.5/2.6
● Monolithic tarball
● Even included python (2.1) in earlier
versions
● Add-ons developed as “Products”: folders
with __init__.py and some initialisation
code
● Drop add-ons on a folder and restart
11. Zope 2.7/2.8/2.9
● From monolithic -> installable thing
● ./configure && make && make install
● System python or custom compiled
● Zope instance: install once, create N
instances
● ZEO for database decoupling
13. Plone is a CMS
● Simple and powerful
● Adaptable workflow
● Security (users, groups, roles,
permissions)
● Extensibility
● Usability
14. But the installation....
● Plone 1.x, 2.0, 2.1, 2.5, 3.0, 3.1:
● Tarball Zope 2.6, 2.7, → 2.8, 2.9 and 2.10
● Plone 3 (2007) and 3.1 (2008):
● Zope → Zope 3: small reusable components
● Plone 3.2 (2009):
● Tarball → eggs
● Everyone started developing “python eggs” for
Plone
15. Buildout to the rescue
● Jim Fulton (creator of Zope), created
zc.buildout
● To solve 2 problems:
● Application-centric assembly and deployment
● Repeatable assembly of programs from
python eggs
17. Complex installation
● With python eggs, the installation is not
to tar xzf Plone-3.2.0.tgz
● But, python setup.py install a lot of eggs:
● Plone 3.x: +150
● Plone 4.x: +250
● Complex setups possible
19. Plone Architecture
Apache/Nginx
:80
Zope (w Plone)
:8082
ZEO (w ZODB)
:8084
Zope (w Plone)
:8081
Zope (w Plone)
:8083
SERVER 1 SERVER 2 SERVER 3
20. Needs
● Easy deployment (2-3 commands)
● Repeatable:
● We need to run several times in development
(each time we add new eggs)
● We need to run it in several servers (own,
development, production, ...)
21. How solves it buildout?
● ini-format config file (buildout.cfg)
● Ordered execution of “parts”
● Each “part” runs a “recipe”:
● python egg that given an input, does
something
● Nothing else
22. Extending buildout
● Buildout parts can be extended from other
files and override options (OOP concept)
● Extension can happen over-the-net
(extends= http://myserver/buildout.cfg)
● Known Good Set of eggs for proper
installation
● Create your own recipe
23. Why repeatable?
● You can set exact versions of eggs
● You say which files you download from
where
● The generated filesystem layout is always
the same
● If all versions are set correctly you will
always get the same installation
24. How you develop new eggs?
● They have no exact version:
● We can switch from given versions to source
checkouts (svn, git, hg, …) easily using an
extension: mr.developer
● Extensions are similar to recipes
● Enable and deactivate develop-eggs
25. Buildout example (minimal)
[buildout]
parts =
installation
[installation]
recipe = zc.recipe.egg
eggs = feedparser
interpreter = custompy
Creates a python interpreter (custompy) with feedparser in the path
27. Q: You use this for django?
● A: Yes!
● Q: Why?
● A: because we came to django after
Plone, and we knew how it worked and
we were used to it. All our deployments
are done in the same way
28. Q: but...
● A: yes, we could install django with pip in
a virtualenv... but we were used to use a
more complex solution that allowed us to
create bigger things
30. What recipes do?
● Plone world:
● Create a Zope instance and put all eggs in
the path
● Configure port numbers, database location,
blob file location, object cache sizes, …
● Create a ZEO instance to decouple the
database (configure ports, paths, etc)
31. What recipes do?
● Django world:
● Create an interpreter with django installed
without polluting the system installation
● Run static file collector
● Create WSGI scripts
● Install gunicorn and configure to run with
nginx
32. What recipes do?
● Any world:
● Create supervisor/circusd scripts to run
services
● Download packages from svn/git/hg
● Download tarballs
● Create cronjobs
33. What recipes do?
● Any world:
● Install Apache/nginx
● Configure load balancers (pound/haproxy)
● Update po files and upload to Google Docs for
easy translation
● Create egg omelette to easily navigate on
installed eggs
● ...
34. Real life examples
● In all of our servers we have +120
buildouts
● Everyone knows (Plone or django
developer) how to run them:
● ./bin/buildout -vv
● It's predictable
35. Example architecture with
buildout: www.bertsozale.com
NGINX :80
(system package) VARNISH :8081 HAPROXY :8082
ZOPE :8083 ZOPE :8083 ZOPE :8083
ZEO :8084 All in one server
36. Example architecture: EEA
APACHE
:80
POUND
:8080
ZEO :8080
ZOPE
:8081
ZOPE
:8082
ZOPE
:8083
ZOPE
:8084
ZOPE
:8081
SERVER 2
ZOPE
:8082
ZOPE
:8083
ZOPE
:8084
ZOPE
:8081
SERVER 3
ZOPE
:8082
ZOPE
:8083
ZOPE
SERVER 1 :8084
SERVER 4
SERVER 5
37. Example architecture: EEA
● 4 servers, everything configured using
one buildout file.
● https://github.com/eea/esdrt.buildout
● EEA Sysadmins encourage buildout setup
● Repeatability
● No need of root user to install things
38. Buildout vs fabric?
● Use of buildout does not exclude use of
fabric.
● Fabric also used for automation and
repeatable environments
● All is about what is best for you:
● Simple fab file? → do it
● A lot of deploy code lines? → try buildout
39. Buildout & fabric
● Use of buildout doesn't exclude fabric (did
I say that?)
● Use fabric to run update and run
buildout:
● Update git checkout
● Run buildout
● Restart services
40. Buildout & fabric
● Some EEA projects use it
● We don't, we ssh & run buildout
● But there is literature about this:
● http://tinyurl.com/fab-buildout
● http://tinyurl.com/fab-buildout-so
● Fabric is a way to run commands on
remote servers
41. Buildout: Summary
● Assemble and deploy simple and complex
setups
● Repeatable → installed ecosystem is
always the same
● Specially suited for python based
applications (Plone, Zope, Django,
Pyramid), but also for non-python things:
Apache, Pound, HAProxy, Memcached, ...
42. Buildout (the bad part)
● If your deployments are not similar,
finding and searching recipes can be
hard.
● Error messages, sometimes are not
helpful.
● setuptools & distribute fight in the last 6
months
We are a team of 15 people working on internet since 2001
We are not all developers:
Management: 1
Content authoring, client support and management help: 4
Designers: 2
Developers: 9
In simple language: we do websites
But what kind of websites?
We build sites for our customers so that they can manage the site through the web, without HTML, FTP or any other prior knowledge.
They manage the sites using a WYSIWYG editor
We also do much R&D, and many of our projects come after much time invested on R&D: we now work with real-time-twitter-stream parsing and content curation for instance.
And we do everything in python, and we are proud of it.
We love python
Both for our internal scripts and also for all web development we do
OK, I admit we do some WordPress...
We come from Zope world
In 2001 one of the founders discovered Zope and Python
Zope has been recognized as a python killer app
People say that Zope has used several concepts that later have been widely used.
There are two quotes in one Zope book by Phillip J. Eby (creator of setuptools) that say:
“Where Zope leads, Python follows”
“Those who do not studay Zope, are condemned to reinvent it”
The story says that Zope was invented in a plane, by Jim Fulton who was going to teach CGI development, and thought that object publishing was a saner way to do web-development
Zope encouraged web-based-development to develop quick and powerful dynamic sites through the web
Yes python scripts and templates were written in a form in a management area
But, for security reasons, a stripped-down version of python was used: only some of the standard library packages could be used
They invented 2 templating languages:
DTML: something like PHP, mixing DTML tags and HTML tags
ZPT: using XML namespaces to create XML-valid documents
If you needed to do more powerful things, you could write normal python packages on the filesystem
But not everything is Zope in CodeSyntax.
Although we developed mysql based applications on top of Zope writing raw SQL queries, we finally adopted Django to do SQL-schema-driven applications
Django is also great!
First versions of Zope were monolithic tarballs, that you needed to extract and run using a custom script.
The filesystem products were just dropped in a given folder on the filesystem, and everything worked quite nicely.
With Zope 2.7, Zope brought the concept of “Zope instance”: you install Zope once, and then you can create several instances:
You just have to install Zope ones
You can even install products that can be used in all of your instances
But you can install custom products/packages only in your instance
Zope need to be compiled with a given python version and run cmmi
You can also create an independent ZEO instance, with that you can install the database in a separate instance on the same server or in another one.
But for large websites, we thought that we needed an integrated powerfull environment, and found Plone, which has many things already done (we can understand Zope as a set of tools, and Plone a product built on top of those tools that provides more features).
As a complex product, Plone installation was each time more comples:
On first versions, Plone was released as a tarball: download, untar it inside Zope and worked
But people started using and developing products for Plone (extending core functionality), and at the same time, Zope started to be rewritten into Zope 3, to provide small reusable components, providing a way to upgrade independent components of Zope, and encourage reusability outside Zope.
That's why with Plone 3.2 everyone started writing standard python eggs and something needed to be done with the installation, because doing python setup.py install to all products was a no-go
So, the creator of Zope, Jim Fulton, wrote zc.buildout to install Zope 3 applications, and Plone got benefit from that to install Plone.
This is a typical Plone setup, with a web server, the application server, in which Plone is installed, and the database server.
Everything can be installed on the same server or split across several servers
As you see, Plone's installation needed to install a lot of python eggs, and needed to create several scripts to run zope instances, configure database connection, ….
And the installation can be splitted across several servers, so the installation needs to be easy and repeatable.
You don't want to run the same application with different egg versions on the same server (all instances need to have the same version setup).
And if you split everything on 3 (or more) servers, you need to have everywhere the same versions
So, we (and Plone developers, and sysadmins), needed something that could be run easily and fastly (when in development several times a day)
It needed to be repeatable: we want the same layout, and same set of versions on development or production servers
And that's why buildout was created
Buildout gets that defining an ordered execution of “parts”.
Each part is run by a “recipe”
And a recipe is a “do something” script.
Each recipe knows what to do.
You can even create your own recipes, or extend one buildout file from another.
For instance:
In development servers, you need to start Zope in “debug mode”, on production not;
In development servers you install just one instance; on production 2;
In development servers the port numbers are ones; on production others
This is achieved creating your own file, saying there that you extend another one, and overriding the values. It's just and OOP thing.
Why we say this is repeatable?
Because the installation is done on all servers in the same way
You say in the buildout configuration file which files or which packages and which versions to download.
The generated filesystem layout is always the same
If all versions are set, the installation result will be always the same.
Is this just for deployment or also for development?
You need to say buildout the versions of product you install (feedparser = 5.1.2), but what if you are developing a new product?
We use an extension, called “mr.developer”, that easily plugs into buildout the so-called “develop eggs”, eggs without a fixed version that are being developed.
Moreover this extension eases the way to checkout and clone packages from git/svn/mercurial/etc.
Show plonebuildout.cfg
And yes, we use this for django too.
Perhaps django installation is easier without buildout (virtualenv & pip), but we came into django after learning buildout for Plone, and buildout worked so well that we adopted buildout also for
Yes, OK, … we could do it with pip and virtualenv, but this way, we use everywhere the same deploying mechanism and everyone know how to run things.
Show djangobuildout.cfg
What can buildout recipe do?
In plone environments the basic recipes:
Create zope instances from zope installation
Create ZOE instances to decouple data-base installation
Configure paths, environment vars, database locations, paths, por numbers, object cache sizes....
In django worlds:
Install django in an isolated environment
Run static file collectors
Create WSGI scripts
But you have many other recipes to do almost everything:
Create supervisor or circus scripts and configurations to run the services
Download packages
Create cron jobs
Install apache
Configure load balancers depending on the server instance setup
Upload PO files to a Google Doc to easily translate interface messages
Create egg omelette to navigate in eggs...
Search pypi for recipes...
But this is used in real-life?
All Plone installations since 2009 are installed using buildout.
Buildout is the responsible of the most web-traffic on pypi
In all of our servers we have more than 120 buildouts
This is an example architecture we installed with buildout in one server (it was quite big server) for a customer.
It installed varnish (caching server), haproxy (load balancer), several Zope instances and a database server.
We also tested to put a database slave in another machine, and the master database was replicated life there to have a live backup-copy
In another project for the European Environment Agency, we have this setup in 5 servers, everything installed using buildout
One server with Apache and Pound:
Three servers, each with 4 zope instances
Another server with the databse.
All this complex setup (remember, you need to deploy the exact same versions of everything on all servers), is handled by one or two buildout files, and everything is public.
You can check the configuration files on github.
The EEA sysadmins even encourage this buildout setup (they are not Plone experts), because all setups across their premises are handled in the same way, the users have the same permission-set and errors can be found easily.
And what about fabric? Cannot you use fabric?
Yes, the use of buildout doesn't exclude fabric (or any other tool).
Fabric is a tool for automation and running remote task.
Everything is about what is best for you.
We feel confortable with buildout, we also think that it's easier to reuse all those existing recipes than building tasks with fabric.
Anyway, we don't exclude the use of fabric, if that suits you, use it!
You can even use it with buildout.
There's literature about using fabric with buildout: not to handle the installation of all those packages, but to run buildout on the server and to update the svn/git checkouts.
So, as a summary:
Buildout helps you assembling and deploying both simple and complex applications.
Those setups are repeatable: everywhere you run them, you will get the same setup
It's specially suited for python applications (Zope, Plone, Django, pyramid), …. but you can also install Apache, Pound, HAProxy, Memcached, ...)