This document discusses standardizing the deployment process using Vagrant and Puppet. It describes Achieve Internet's experience developing Drupal websites over 7+ years and 60,000 development hours. It promotes using Vagrant and Puppet to create consistent development environments, enable rapid setup of virtual machines, and increase reliability. Examples are provided of using Vagrant and Puppet together to provision virtual machines.
1. The document discusses moving from a Dev to DevOps model by addressing issues like siloization between development and operations teams and embracing concepts like infrastructure as code.
2. It recommends several DevOps tools for infrastructure automation including Puppet, Vagrant, and VeeWee which allow developers to define infrastructure in code and provision environments.
3. The Puppet Domain Specific Language (DSL) is demonstrated for declaring resources like users, files, packages, and services with attributes and relationships between them in a declarative way.
Using Kubernetes for Continuous Integration and Continuous DeliveryCarlos Sanchez
This document summarizes how to use Kubernetes for continuous integration and continuous delivery. It discusses using the Jenkins Kubernetes plugin to run Jenkins agents as Kubernetes pods for infinite scalability. It provides examples of defining pods with multiple containers for multi-language pipelines. It also covers using persistent volumes, resource limits, and deploying applications to Kubernetes from Jenkins pipelines.
More info at http://blog.carlossanchez.eu/tag/devops
The DevOps movement aims to improve communication between developers and operations teams to solve critical issues such as fear of change and risky deployments. But the same way that Agile development would likely fail without continuous integration tools, the DevOps principles need tools to make them real, and provide the automation required to actually be implemented. Most of the so called DevOps tools focus on the operations side, and there should be more than that, the automation must cover the full process, Dev to QA to Ops and be as automated and agile as possible. Tools in each part of the workflow have evolved in their own silos, and with the support of their own target teams. But a true DevOps mentality requires a seamless process from the start of development to the end in production deployments and maintenance, and for a process to be successful there must be tools that take the burden out of humans.
Apache Maven has arguably been the most successful tool for development, project standardization and automation introduced in the last years. On the operations side we have open source tools like Puppet or Chef that are becoming increasingly popular to automate infrastructure maintenance and server provisioning.
In this presentation we will introduce an end-to-end development-to-production process that will take advantage of Maven and Puppet, each of them at their strong points, and open source tools to automate the handover between them, automating continuous build and deployment, continuous delivery, from source code to any number of application servers managed with Puppet, running either in physical hardware or the cloud, handling new continuous integration builds and releases automatically through several stages and environments such as development, QA, and production.
From Dev to DevOps - Apache Barcamp Spain 2011Carlos Sanchez
UPDATE: updated slides at http://www.slideshare.net/carlossg/from-dev-to-devops-conferencia-agile-spain-2011
The DevOps movement aims to improve communication between developers and operations teams to solve critical issues such as fear of change and risky deployments. But the same way that Agile development would likely fail without continuous integration tools, the DevOps principles need tools to make them real, and provide the automation required to actually be implemented. Most of the so called DevOps tools focus on the operations side, and there should be more than that, the automation must cover the full process, Dev to QA to Ops and be as automated and agile as possible. Tools in each part of the workflow have evolved in their own silos, and with the support of their own target teams. But a true DevOps mentality requires a seamless process from the start of development to the end in production deployments and maintenance, and for a process to be successful there must be tools that take the burden out of humans.
Apache Maven has arguably been the most successful tool for development, project standardization and automation introduced in the last years. On the operations side we have open source tools like Puppet or Chef that are becoming increasingly popular to automate infrastructure maintenance and server provisioning.
In this presentation we will introduce an end-to-end development-to-production process that will take advantage of Maven and Puppet, each of them at their strong points, and open source tools to automate the handover between them, automating continuous build and deployment, continuous delivery, from source code to any number of application servers managed with Puppet, running either in physical hardware or the cloud, handling new continuous integration builds and releases automatically through several stages and environments such as development, QA, and production.
More info at http://blog.carlossanchez.eu/2011/11/15/from-dev-to-devops-slides-from-apachecon-na-vancouver-2011/
The DevOps movement aims to improve communication between developers and operations teams to solve critical issues such as fear of change and risky deployments. But the same way that Agile development would likely fail without continuous integration tools, the DevOps principles need tools to make them real, and provide the automation required to actually be implemented. Most of the so called DevOps tools focus on the operations side, and there should be more than that, the automation must cover the full process, Dev to QA to Ops and be as automated and agile as possible. Tools in each part of the workflow have evolved in their own silos, and with the support of their own target teams. But a true DevOps mentality requires a seamless process from the start of development to the end in production deployments and maintenance, and for a process to be successful there must be tools that take the burden out of humans.
Apache Maven has arguably been the most successful tool for development, project standardization and automation introduced in the last years. On the operations side we have open source tools like Puppet or Chef that are becoming increasingly popular to automate infrastructure maintenance and server provisioning.
In this presentation we will introduce an end-to-end development-to-production process that will take advantage of Maven and Puppet, each of them at their strong points, and open source tools to automate the handover between them, automating continuous build and deployment, continuous delivery, from source code to any number of application servers managed with Puppet, running either in physical hardware or the cloud, handling new continuous integration builds and releases automatically through several stages and environments such as development, QA, and production.
Vagrant allows users to define and configure lightweight virtual development environments. It uses VirtualBox to run virtual machines from a Vagrantfile configuration. The document discusses how Vagrant abstracts hardware, allows multiple operating systems to run concurrently on virtual hardware, and is limited by physical resources. It also outlines how in 3 lines users can download a base box, initialize a new Vagrant project, and boot the virtual machine. Key benefits of Vagrant include quick setup for new team members, ability to version control server configurations, and easy switching between projects.
An on-going presentation for the Docker workshop on how to integrate docker into Vagrant as a provider. In order to remove the requirement of having a VM, and speedup development environments. It also features Puppet as the configuration management system.
The code can be found in: https://github.com/npoggi/vagrant-docker
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Carlos Sanchez
Continuous Integration, with Apache Continuum or Jenkins, can be extended to fully manage deployments and production environments, running in Tomcat for instance, in a full Continuous Delivery cycle using infrastructure-as-code tools like Puppet, allowing to manage multiple servers and their configurations.
Puppet is an infrastructure-as-code tool that allows easy and automated provisioning of servers, defining the packages, configuration, services,... in code. Enabling DevOps culture, tools like Puppet help drive Agile development all the way to operations and systems administration, and along with continuous integration tools like Apache Continuum or Jenkins, it is a key piece to accomplish repeatability and continuous delivery, automating the operations side during development, QA or production, and enabling testing of systems configuration.
Traditionally a field for system administrators, Puppet can empower developers, allowing both to collaborate coding the infrastructure needed for their developments, whether it runs in hardware, virtual machines or cloud. Developers and sysadmins can define what JDK version must be installed, application server, version, configuration files, war and jar files,... and easily make changes that propagate across all nodes.
Using Vagrant, a command line automation layer for VirtualBox, they can also spin off virtual machines in their local box, easily from scratch with the same configuration as production servers, do development or testing and tear them down afterwards.
We will show how to install and manage Puppet nodes with JDK, multiple Tomcat instances with installed web applications, database, configuration files and all the supporting services. Including getting up and running with Vagrant and VirtualBox for quickstart and Puppet experiments, as well as setting up automated testing of the Puppet code.
1. The document discusses moving from a Dev to DevOps model by addressing issues like siloization between development and operations teams and embracing concepts like infrastructure as code.
2. It recommends several DevOps tools for infrastructure automation including Puppet, Vagrant, and VeeWee which allow developers to define infrastructure in code and provision environments.
3. The Puppet Domain Specific Language (DSL) is demonstrated for declaring resources like users, files, packages, and services with attributes and relationships between them in a declarative way.
Using Kubernetes for Continuous Integration and Continuous DeliveryCarlos Sanchez
This document summarizes how to use Kubernetes for continuous integration and continuous delivery. It discusses using the Jenkins Kubernetes plugin to run Jenkins agents as Kubernetes pods for infinite scalability. It provides examples of defining pods with multiple containers for multi-language pipelines. It also covers using persistent volumes, resource limits, and deploying applications to Kubernetes from Jenkins pipelines.
More info at http://blog.carlossanchez.eu/tag/devops
The DevOps movement aims to improve communication between developers and operations teams to solve critical issues such as fear of change and risky deployments. But the same way that Agile development would likely fail without continuous integration tools, the DevOps principles need tools to make them real, and provide the automation required to actually be implemented. Most of the so called DevOps tools focus on the operations side, and there should be more than that, the automation must cover the full process, Dev to QA to Ops and be as automated and agile as possible. Tools in each part of the workflow have evolved in their own silos, and with the support of their own target teams. But a true DevOps mentality requires a seamless process from the start of development to the end in production deployments and maintenance, and for a process to be successful there must be tools that take the burden out of humans.
Apache Maven has arguably been the most successful tool for development, project standardization and automation introduced in the last years. On the operations side we have open source tools like Puppet or Chef that are becoming increasingly popular to automate infrastructure maintenance and server provisioning.
In this presentation we will introduce an end-to-end development-to-production process that will take advantage of Maven and Puppet, each of them at their strong points, and open source tools to automate the handover between them, automating continuous build and deployment, continuous delivery, from source code to any number of application servers managed with Puppet, running either in physical hardware or the cloud, handling new continuous integration builds and releases automatically through several stages and environments such as development, QA, and production.
From Dev to DevOps - Apache Barcamp Spain 2011Carlos Sanchez
UPDATE: updated slides at http://www.slideshare.net/carlossg/from-dev-to-devops-conferencia-agile-spain-2011
The DevOps movement aims to improve communication between developers and operations teams to solve critical issues such as fear of change and risky deployments. But the same way that Agile development would likely fail without continuous integration tools, the DevOps principles need tools to make them real, and provide the automation required to actually be implemented. Most of the so called DevOps tools focus on the operations side, and there should be more than that, the automation must cover the full process, Dev to QA to Ops and be as automated and agile as possible. Tools in each part of the workflow have evolved in their own silos, and with the support of their own target teams. But a true DevOps mentality requires a seamless process from the start of development to the end in production deployments and maintenance, and for a process to be successful there must be tools that take the burden out of humans.
Apache Maven has arguably been the most successful tool for development, project standardization and automation introduced in the last years. On the operations side we have open source tools like Puppet or Chef that are becoming increasingly popular to automate infrastructure maintenance and server provisioning.
In this presentation we will introduce an end-to-end development-to-production process that will take advantage of Maven and Puppet, each of them at their strong points, and open source tools to automate the handover between them, automating continuous build and deployment, continuous delivery, from source code to any number of application servers managed with Puppet, running either in physical hardware or the cloud, handling new continuous integration builds and releases automatically through several stages and environments such as development, QA, and production.
More info at http://blog.carlossanchez.eu/2011/11/15/from-dev-to-devops-slides-from-apachecon-na-vancouver-2011/
The DevOps movement aims to improve communication between developers and operations teams to solve critical issues such as fear of change and risky deployments. But the same way that Agile development would likely fail without continuous integration tools, the DevOps principles need tools to make them real, and provide the automation required to actually be implemented. Most of the so called DevOps tools focus on the operations side, and there should be more than that, the automation must cover the full process, Dev to QA to Ops and be as automated and agile as possible. Tools in each part of the workflow have evolved in their own silos, and with the support of their own target teams. But a true DevOps mentality requires a seamless process from the start of development to the end in production deployments and maintenance, and for a process to be successful there must be tools that take the burden out of humans.
Apache Maven has arguably been the most successful tool for development, project standardization and automation introduced in the last years. On the operations side we have open source tools like Puppet or Chef that are becoming increasingly popular to automate infrastructure maintenance and server provisioning.
In this presentation we will introduce an end-to-end development-to-production process that will take advantage of Maven and Puppet, each of them at their strong points, and open source tools to automate the handover between them, automating continuous build and deployment, continuous delivery, from source code to any number of application servers managed with Puppet, running either in physical hardware or the cloud, handling new continuous integration builds and releases automatically through several stages and environments such as development, QA, and production.
Vagrant allows users to define and configure lightweight virtual development environments. It uses VirtualBox to run virtual machines from a Vagrantfile configuration. The document discusses how Vagrant abstracts hardware, allows multiple operating systems to run concurrently on virtual hardware, and is limited by physical resources. It also outlines how in 3 lines users can download a base box, initialize a new Vagrant project, and boot the virtual machine. Key benefits of Vagrant include quick setup for new team members, ability to version control server configurations, and easy switching between projects.
An on-going presentation for the Docker workshop on how to integrate docker into Vagrant as a provider. In order to remove the requirement of having a VM, and speedup development environments. It also features Puppet as the configuration management system.
The code can be found in: https://github.com/npoggi/vagrant-docker
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Carlos Sanchez
Continuous Integration, with Apache Continuum or Jenkins, can be extended to fully manage deployments and production environments, running in Tomcat for instance, in a full Continuous Delivery cycle using infrastructure-as-code tools like Puppet, allowing to manage multiple servers and their configurations.
Puppet is an infrastructure-as-code tool that allows easy and automated provisioning of servers, defining the packages, configuration, services,... in code. Enabling DevOps culture, tools like Puppet help drive Agile development all the way to operations and systems administration, and along with continuous integration tools like Apache Continuum or Jenkins, it is a key piece to accomplish repeatability and continuous delivery, automating the operations side during development, QA or production, and enabling testing of systems configuration.
Traditionally a field for system administrators, Puppet can empower developers, allowing both to collaborate coding the infrastructure needed for their developments, whether it runs in hardware, virtual machines or cloud. Developers and sysadmins can define what JDK version must be installed, application server, version, configuration files, war and jar files,... and easily make changes that propagate across all nodes.
Using Vagrant, a command line automation layer for VirtualBox, they can also spin off virtual machines in their local box, easily from scratch with the same configuration as production servers, do development or testing and tear them down afterwards.
We will show how to install and manage Puppet nodes with JDK, multiple Tomcat instances with installed web applications, database, configuration files and all the supporting services. Including getting up and running with Vagrant and VirtualBox for quickstart and Puppet experiments, as well as setting up automated testing of the Puppet code.
The document discusses software-defined data centers (SDDC) and monitoring. It provides an overview of SDDC components like compute, network, and storage that can be managed as software. The document discusses how SDDC aims to provide flexibility through logical abstraction of hardware. It also discusses challenges in SDDC like the need for automation and orchestration using tools like Puppet, Chef, and Ansible. The document talks about how monitoring fits into the SDDC model and needs to be integrated based on application profiles and SLAs. It provides examples of configuring monitoring tools like Nagios and Icinga using Chef, Puppet, and Ansible.
Puppet for Java developers - JavaZone NO 2012Carlos Sanchez
Example code at https://github.com/carlossg/puppet-for-java-devs
More info at http://blog.carlossanchez.eu/tag/devops
Video at http://vimeo.com/49483627
Puppet is an infrastructure-as-code tool that allows easy and automated provisioning of servers, defining the packages, configuration, services,... in code. Enabling DevOps culture, tools like Puppet help drive Agile development all the way to operations and systems administration, and along with continuous integration tools like Jenkins, it is a key piece to accomplish repeatability and continuous delivery, automating the operations side during development, QA or production, and enabling testing of systems configuration.
Traditionally a field for system administrators, Puppet can empower developers, allowing both to collaborate coding the infrastructure needed for their developments, whether it runs in hardware, virtual machines or cloud. Developers and sysadmins can define what JDK version must be installed, application server, version, configuration files, war and jar files,... and easily make changes that propagate across all nodes.
Using Vagrant, a command line automation layer for VirtualBox, they can also spin off virtual machines in their local box, easily from scratch with the same configuration as production servers, do development or testing and tear them down afterwards.
We’ll show how to install and manage Puppet nodes with JDK, multiple application server instances with installed web applications, database, configuration files and all the supporting services. Including getting up and running with Vagrant and VirtualBox for quickstart and Puppet experiments, as well as setting up automated testing of the Puppet code.
Puppet is a configuration automation platform that simplifies system administration tasks. It uses a client/server model where agent nodes pull configuration profiles from the Puppet master. Modules on the master describe the desired system configuration. Puppet translates modules into code and configures agent servers as needed. Puppet can manage infrastructure across multiple servers.
1. Create a Dockerfile that defines the base image, installs Nginx and any modules, and exposes ports 80 and 443.
2. Build the image from the Dockerfile using "docker build ."
3. Run a container from the new image and publish the ports so Nginx is accessible.
Using Containers for Continuous Integration and Continuous DeliveryCarlos Sanchez
Building and testing is a great use case for containers, both due to the dynamic and isolation aspects, but it increases complexity when scaling to multiple nodes and clusters.
However, the Kubernetes project provides a container orchestration solution that greatly simplifies app deployments in large clusters, and allows to dynamically run any containerized workload. Jenkins is an example of an application that can take advantage of such technology to run Continuous Integration and Continuous Delivery workloads.
The Jenkins Kubernetes plugin can transparently use on demand containers to run build agents and jobs, and isolate job execution. It also supports CI/CD-as-code using Jenkins Pipelines.
The presentation will allow a better understanding of Kubernetes, and how to use Jenkins on Kubernetes for container based large scale, showing also the challenges of running distributed applications (particularly JVM apps).
Using Containers for Continuous Integration and Continuous Delivery. KubeCon ...Carlos Sanchez
This document discusses using containers for continuous integration and continuous delivery with Jenkins. It describes running Jenkins masters and agents in Kubernetes containers for scalability and isolation. Examples are provided for running builds, tests and deployments using container-based Jenkins agents with technologies like Maven, Golang and Selenium. Considerations for storage, networking and resource management are also covered.
This document provides instructions on various Docker commands and concepts. It begins with definitions of Docker and the differences between VMs and Docker containers. It then covers topics like installing Docker, finding Docker images and versions, building images with Dockerfiles, running containers with commands like docker run, and managing images and containers.
Code testing and Continuous Integration are just the first step in a source code to production process. Combined with infrastructure-as-code tools such as Puppet the whole process can be automated, and tested!
Preparation study for Docker Event
Mulodo Open Study Group (MOSG) @Ho chi minh, Vietnam
http://www.meetup.com/Open-Study-Group-Saigon/events/229781420/
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session I'd like to share our experience, including but not limited to:
- advanced vagrantfile configuration
- vm configuration tips for dev environment: performance, debug, tuning
- our wtf moments
- puphet/phansilbe: hot or not?
- tips for sharing a box
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session I'd like to share our experience, including but not limited to:
- advanced vagrantfile configuration
- vm configuration tips for dev environment: performance, debug, tuning
- our wtf moments
- puphet/phansilbe: hot or not?
- tips for sharing a box
Streamline your development environment with dockerGiacomo Bagnoli
These days applications are getting more and more complex. It's becoming quite
difficult to keep track of all the different components an application needs in order to
function (a database, a message queueing system, a web server, a document
store, a search engine, you name it.). How many times we heard 'it worked on my
machine'?. In this talk we are going to explore Docker, what it is, how it works
and how much it can benefit in keeping the development environment consistent.
We are going to talk about Dockerfiles, best practices, tools like fig and vagrant,
and finally show an example of how it applies to a ruby on rails
application.
Ship your Scala code often and easy with DockerMarcus Lönnberg
This document discusses how to build and ship Scala code using Docker containers. It introduces Docker and shows how to define Dockerfiles and build Docker images from sbt projects using the sbt-docker and sbt-assembly plugins. It also demonstrates how to manage Docker containers from Scala code and how Docker can be used to automate build and deployment pipelines.
This document provides an overview of containerization and Docker. It covers prerequisites, traditional application deployment challenges, container components like namespaces and cgroups, major Docker concepts like images and containers, common Docker commands, building Dockerfiles, and Docker workflows and best practices. Hands-on exercises are included to build and run containers.
How to Develop Puppet Modules: From Source to the Forge With Zero ClicksCarlos Sanchez
Puppet Modules are a great way to reuse code, share your development with other people and take advantage of the hundreds of modules already available in the community. But how to create, test and publish them as easily as possible? now that infrastructure is defined as code, we need to use development best practices to build, test, deploy and use Puppet modules themselves. Three steps for a fully automated process
* Continuous Integration of Puppet Modules
* Automatic release and upload to the Puppet Forge
* Deploy to Puppet master
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2daysCarlos Sanchez
Learn how to scale your Continuous Integration and Continuous Delivery environment using containers. The Kubernetes project provides a container orchestration solution that greatly simplifies app deployments in large clusters and you can use Jenkins and Kubernetes together to run jobs on-demand.
Building and testing is a great use case for containers, both due to the dynamic and isolation aspects, but it increases complexity when scaling to multiple nodes and clusters.
Jenkins is an example of an application that can take advantage of Kubernetes technology to run Continuous Integration and Continuous Delivery workloads. Jenkins and Kubernetes can be integrated to transparently use on demand containers to run build agents and jobs, and isolate job execution. It also supports CI/CD-as-code using Jenkins Pipelines and automated deployments to Kubernetes clusters. The presentation will allow a better understanding of how to use Jenkins on Kubernetes for container based, totally dynamic, large scale CI and CD.
Create your very own Development Environment with Vagrant and Packerfrastel
Vagrant, Packer, and Puppet can be used together to create a development environment. Packer is used to build custom base boxes that include only the operating system. Vagrant uses these base boxes to create isolated virtual machines. Puppet then provisions the virtual machines by installing additional software, configuring applications, and defining infrastructure as code. This allows for consistent, reproducible development environments that match production.
Through the magic of virtualization technology (Vagrant) and Puppet, a companion Enterprise grade provisioning technology, we explore how to make the complex configuration game a walk in the park. Bring new team members up to speed in minutes, eliminate variances in configurations, and make integration issues a thing of the past.
Welcome to the new age of team development!
Puppet is automation software that helps system administrators manage infrastructure by automating provisioning, configuration, and other repetitive tasks. It ensures consistency and stability. Puppet consists of a Puppet Master and Puppet Agents. Vagrant provides a way to easily create and configure virtual development environments using configuration files and automation (e.g. Puppet). It uses Oracle VirtualBox and allows specifying and provisioning resources. Benefits include consistent environments for development, testing, and teams.
Vagrant - Version control your dev environmentbocribbz
Vagrant facilitates the creation and configuration of lightweight, reproducible, and portable development environments.
It is currently in use at companies like Disqus, BBC, Mozilla, Nokia, and O'Reilly Media. More information about Vagrant is available at: http://www.vagrantup.com/
Links:
Boxes: https://github.com/opscode/bento
Cookbooks: http://community.opscode.com/
LAMP demo: https://github.com/bocribbz/cookbook-lampdemo
Devoxx UK 2013: Sandboxing with the Vagrant-Binding APIHendrik Ebbers
Vagrant-Binding is a Java wrapper for Vagrant that allows configuring and managing virtual machines from Java code. It provides fluent builder APIs to define VM configurations and manage their lifecycle. Vagrant-Binding integrates with Puppet for configuration management and provides JUnit support to start/stop VMs for tests. It can also access the Puppet Forge to install modules during tests. The goal is to manage test environments and software configurations programmatically.
The document discusses software-defined data centers (SDDC) and monitoring. It provides an overview of SDDC components like compute, network, and storage that can be managed as software. The document discusses how SDDC aims to provide flexibility through logical abstraction of hardware. It also discusses challenges in SDDC like the need for automation and orchestration using tools like Puppet, Chef, and Ansible. The document talks about how monitoring fits into the SDDC model and needs to be integrated based on application profiles and SLAs. It provides examples of configuring monitoring tools like Nagios and Icinga using Chef, Puppet, and Ansible.
Puppet for Java developers - JavaZone NO 2012Carlos Sanchez
Example code at https://github.com/carlossg/puppet-for-java-devs
More info at http://blog.carlossanchez.eu/tag/devops
Video at http://vimeo.com/49483627
Puppet is an infrastructure-as-code tool that allows easy and automated provisioning of servers, defining the packages, configuration, services,... in code. Enabling DevOps culture, tools like Puppet help drive Agile development all the way to operations and systems administration, and along with continuous integration tools like Jenkins, it is a key piece to accomplish repeatability and continuous delivery, automating the operations side during development, QA or production, and enabling testing of systems configuration.
Traditionally a field for system administrators, Puppet can empower developers, allowing both to collaborate coding the infrastructure needed for their developments, whether it runs in hardware, virtual machines or cloud. Developers and sysadmins can define what JDK version must be installed, application server, version, configuration files, war and jar files,... and easily make changes that propagate across all nodes.
Using Vagrant, a command line automation layer for VirtualBox, they can also spin off virtual machines in their local box, easily from scratch with the same configuration as production servers, do development or testing and tear them down afterwards.
We’ll show how to install and manage Puppet nodes with JDK, multiple application server instances with installed web applications, database, configuration files and all the supporting services. Including getting up and running with Vagrant and VirtualBox for quickstart and Puppet experiments, as well as setting up automated testing of the Puppet code.
Puppet is a configuration automation platform that simplifies system administration tasks. It uses a client/server model where agent nodes pull configuration profiles from the Puppet master. Modules on the master describe the desired system configuration. Puppet translates modules into code and configures agent servers as needed. Puppet can manage infrastructure across multiple servers.
1. Create a Dockerfile that defines the base image, installs Nginx and any modules, and exposes ports 80 and 443.
2. Build the image from the Dockerfile using "docker build ."
3. Run a container from the new image and publish the ports so Nginx is accessible.
Using Containers for Continuous Integration and Continuous DeliveryCarlos Sanchez
Building and testing is a great use case for containers, both due to the dynamic and isolation aspects, but it increases complexity when scaling to multiple nodes and clusters.
However, the Kubernetes project provides a container orchestration solution that greatly simplifies app deployments in large clusters, and allows to dynamically run any containerized workload. Jenkins is an example of an application that can take advantage of such technology to run Continuous Integration and Continuous Delivery workloads.
The Jenkins Kubernetes plugin can transparently use on demand containers to run build agents and jobs, and isolate job execution. It also supports CI/CD-as-code using Jenkins Pipelines.
The presentation will allow a better understanding of Kubernetes, and how to use Jenkins on Kubernetes for container based large scale, showing also the challenges of running distributed applications (particularly JVM apps).
Using Containers for Continuous Integration and Continuous Delivery. KubeCon ...Carlos Sanchez
This document discusses using containers for continuous integration and continuous delivery with Jenkins. It describes running Jenkins masters and agents in Kubernetes containers for scalability and isolation. Examples are provided for running builds, tests and deployments using container-based Jenkins agents with technologies like Maven, Golang and Selenium. Considerations for storage, networking and resource management are also covered.
This document provides instructions on various Docker commands and concepts. It begins with definitions of Docker and the differences between VMs and Docker containers. It then covers topics like installing Docker, finding Docker images and versions, building images with Dockerfiles, running containers with commands like docker run, and managing images and containers.
Code testing and Continuous Integration are just the first step in a source code to production process. Combined with infrastructure-as-code tools such as Puppet the whole process can be automated, and tested!
Preparation study for Docker Event
Mulodo Open Study Group (MOSG) @Ho chi minh, Vietnam
http://www.meetup.com/Open-Study-Group-Saigon/events/229781420/
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session I'd like to share our experience, including but not limited to:
- advanced vagrantfile configuration
- vm configuration tips for dev environment: performance, debug, tuning
- our wtf moments
- puphet/phansilbe: hot or not?
- tips for sharing a box
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session I'd like to share our experience, including but not limited to:
- advanced vagrantfile configuration
- vm configuration tips for dev environment: performance, debug, tuning
- our wtf moments
- puphet/phansilbe: hot or not?
- tips for sharing a box
Streamline your development environment with dockerGiacomo Bagnoli
These days applications are getting more and more complex. It's becoming quite
difficult to keep track of all the different components an application needs in order to
function (a database, a message queueing system, a web server, a document
store, a search engine, you name it.). How many times we heard 'it worked on my
machine'?. In this talk we are going to explore Docker, what it is, how it works
and how much it can benefit in keeping the development environment consistent.
We are going to talk about Dockerfiles, best practices, tools like fig and vagrant,
and finally show an example of how it applies to a ruby on rails
application.
Ship your Scala code often and easy with DockerMarcus Lönnberg
This document discusses how to build and ship Scala code using Docker containers. It introduces Docker and shows how to define Dockerfiles and build Docker images from sbt projects using the sbt-docker and sbt-assembly plugins. It also demonstrates how to manage Docker containers from Scala code and how Docker can be used to automate build and deployment pipelines.
This document provides an overview of containerization and Docker. It covers prerequisites, traditional application deployment challenges, container components like namespaces and cgroups, major Docker concepts like images and containers, common Docker commands, building Dockerfiles, and Docker workflows and best practices. Hands-on exercises are included to build and run containers.
How to Develop Puppet Modules: From Source to the Forge With Zero ClicksCarlos Sanchez
Puppet Modules are a great way to reuse code, share your development with other people and take advantage of the hundreds of modules already available in the community. But how to create, test and publish them as easily as possible? now that infrastructure is defined as code, we need to use development best practices to build, test, deploy and use Puppet modules themselves. Three steps for a fully automated process
* Continuous Integration of Puppet Modules
* Automatic release and upload to the Puppet Forge
* Deploy to Puppet master
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2daysCarlos Sanchez
Learn how to scale your Continuous Integration and Continuous Delivery environment using containers. The Kubernetes project provides a container orchestration solution that greatly simplifies app deployments in large clusters and you can use Jenkins and Kubernetes together to run jobs on-demand.
Building and testing is a great use case for containers, both due to the dynamic and isolation aspects, but it increases complexity when scaling to multiple nodes and clusters.
Jenkins is an example of an application that can take advantage of Kubernetes technology to run Continuous Integration and Continuous Delivery workloads. Jenkins and Kubernetes can be integrated to transparently use on demand containers to run build agents and jobs, and isolate job execution. It also supports CI/CD-as-code using Jenkins Pipelines and automated deployments to Kubernetes clusters. The presentation will allow a better understanding of how to use Jenkins on Kubernetes for container based, totally dynamic, large scale CI and CD.
Create your very own Development Environment with Vagrant and Packerfrastel
Vagrant, Packer, and Puppet can be used together to create a development environment. Packer is used to build custom base boxes that include only the operating system. Vagrant uses these base boxes to create isolated virtual machines. Puppet then provisions the virtual machines by installing additional software, configuring applications, and defining infrastructure as code. This allows for consistent, reproducible development environments that match production.
Through the magic of virtualization technology (Vagrant) and Puppet, a companion Enterprise grade provisioning technology, we explore how to make the complex configuration game a walk in the park. Bring new team members up to speed in minutes, eliminate variances in configurations, and make integration issues a thing of the past.
Welcome to the new age of team development!
Puppet is automation software that helps system administrators manage infrastructure by automating provisioning, configuration, and other repetitive tasks. It ensures consistency and stability. Puppet consists of a Puppet Master and Puppet Agents. Vagrant provides a way to easily create and configure virtual development environments using configuration files and automation (e.g. Puppet). It uses Oracle VirtualBox and allows specifying and provisioning resources. Benefits include consistent environments for development, testing, and teams.
Vagrant - Version control your dev environmentbocribbz
Vagrant facilitates the creation and configuration of lightweight, reproducible, and portable development environments.
It is currently in use at companies like Disqus, BBC, Mozilla, Nokia, and O'Reilly Media. More information about Vagrant is available at: http://www.vagrantup.com/
Links:
Boxes: https://github.com/opscode/bento
Cookbooks: http://community.opscode.com/
LAMP demo: https://github.com/bocribbz/cookbook-lampdemo
Devoxx UK 2013: Sandboxing with the Vagrant-Binding APIHendrik Ebbers
Vagrant-Binding is a Java wrapper for Vagrant that allows configuring and managing virtual machines from Java code. It provides fluent builder APIs to define VM configurations and manage their lifecycle. Vagrant-Binding integrates with Puppet for configuration management and provides JUnit support to start/stop VMs for tests. It can also access the Puppet Forge to install modules during tests. The goal is to manage test environments and software configurations programmatically.
The document discusses using Puppet and Vagrant together to create a test environment for infrastructure configuration. Vagrant allows setting up and provisioning virtual machines quickly, while Puppet configures the desired state of systems. The demo project uses Vagrant to launch a CentOS virtual machine and Puppet to configure it based on roles like webserver or database.
This document discusses using Vagrant and Puppet to create lightweight reproducible development environments using virtual machines. It introduces Vagrant for automating VM creation and management. Puppet is used to configure VMs through scripts. The Vagrant-Binding API allows managing and configuring VMs from Java code. It provides builder APIs, JUnit integration, and access to Puppet modules. The goal is to simplify VM lifecycle management for testing and development.
Entwicklungsteams stehen heutzutage unter enormen Zeitdruck, da gilt: "In the new world, it is not the big fish which eats the small fish, it’s the fast fish which eats the slow fish" (Klaus Schwab, Founder and Executive Chairman of the World Economic Forum). Weiterhin muss Software gegen Testsysteme entwickelt und getestet werden, die soweit wie möglich an Produktionssysteme angelehnt sind, um Aussagen wie "Runs on my machine" endgültig abzuwürgen. Aufgrund des Zeitdrucks müssen diese Testsysteme sehr schnell aufgesetzt und auch wieder zerstört werden können. Vagrant versucht diese Probleme zu lösen, indem es vorhandene Virtualisierungs- und Provisionierungs-Tools orchestriert und damit Entwicklern die Möglichkeit bietet Testsysteme lokal und in "self-service" zu verwalten. Dieser TechTalk soll Entwicklern eine Einführung in die Konzepte und Benutzung von Vagrant geben.
Vagrant is an excellent tool for quickly setup a development environment in a reproducible manner. However it is also a DecOps tool. In this talk the idea is to introduce audience how they can use Vagrant for DevOps
Virtualize and automate your development environment for fun and profitAndreas Heim
The document discusses using Vagrant to virtualize and automate development environments. Vagrant allows developers to create identical virtual environments that match production. This ensures environments are the same across operating systems and developers. Vagrant uses automation tools like Chef and Puppet to configure environments. It addresses challenges like different dependency versions and allows quick resets. It advocates treating environments as code to make them documented, versioned and easily shared.
V1. This document introduces Vagrant and Docker, tools for efficiently building and running virtual machines and containers. It discusses how Vagrant can be used to create standardized development environments and Docker allows building and sharing applications and their dependencies.
V2. The document then covers how to install, access, customize, and provision Vagrant virtual machines as well as how to build, run, network, and manage Docker containers and images.
V3. Advanced topics discussed include linking containers, using Docker Compose for orchestration, the Docker Hub registry, security considerations, and other Docker tools like Machine for provisioning remote hosts and Swarm for clustering.
Get started with Vagrant! This basic intro assumes no prior knowledge of the platform, and it is universally applicable regardless of the Provider (hypervisor\cloud platform) that you are using.
We also delve briefly into provisioners (ex: Shell, Puppet, Chef) to unlock the true power of Vagrant: quick & easy templates of production systems.
Vagrant allows users to easily create and configure virtual development environments. The document outlines a 5 step process to get started with Vagrant: 1) select a virtualization provider like VirtualBox, 2) install Vagrant, 3) download a virtual machine image or "box", 4) initialize and start the VM with Vagrant commands, and 5) log into the VM via SSH. It also discusses additional features like version controlling Vagrant files, customizing the VM, using multiple VMs, and provisioning VMs with tools like Puppet, Chef, or Ansible.
Vagrant is an open source tool that allows users to create and manage virtual machine environments. It works by using a file called a Vagrantfile to configure virtual machines from templates called boxes. Vagrant provides features like provisioning, synced folders, networking, and multiple providers to automate the setup of a development environment and make it portable.
Lightweight and reproducible environments with vagrant and PuppetHendrik Ebbers
The document discusses using Vagrant and Puppet to create lightweight reproducible development environments. Vagrant allows defining and managing virtual machine configurations through code. Puppet is used to automate configuration of software and services on VMs. The Java Vagrant-Binding API allows managing the lifecycle of Vagrant VMs from Java code, including provisioning VMs with Puppet. It provides builder APIs, JUnit support, and allows running tests against reproducible environments.
Create Development and Production Environments with VagrantBrian Hogan
Need a Linux box to test a Wordpress site or a Windows VM to test a web site on IE 10? Creating a virtual machine to test or deploy your software doesn’t have to be a manual process. Bring one up in seconds with Vagrant, software for creating and managing virtual machines. With Vagrant, you can bring up a new virtual machine with the software you need, share directories, copy files, and configure networking using a friendly DSL. You can even use shell scripts or more powerful provisioning tools to set up your software and install your apps. Whether you need a Windows machine for testing an app, or a full-blown production environment for your apps, Vagrant has you covered.
In this talk you’ll learn to script the creation of multiple local virtual machines. Then you’ll use the same strategy to provision production servers in the cloud.
I work with Vagrant, Terraform, Docker, and other provisioning systems daily and am excited to show others how to bring this into their own workflows.
DevOps: Using Vagrant to Enhance Your Day to Day DevelopmentRob Reynolds
Vagrant is a tool that allows developers to create reproducible development environments that can be shared and used across different machines. It provides virtual machines through providers like VirtualBox that can be easily configured, provisioned, and destroyed. The document discusses how Vagrant enhances development by isolating dependencies, allowing teams to have consistent environments, and enabling testing across platforms. It also notes how Vagrant benefits developers, QA teams, and operations through features like disposable environments and consistency.
Vagrant is a tool for building and distributing virtual development environments. It allows users to create virtual machines and configure their software stacks in an automated, reproducible way. Key features include automated provisioning, networking, SSH access, and treating infrastructure as code that can be version controlled. The demo shows how to install Vagrant, add base box images, initialize a Vagrantfile to define VMs, and run common commands to launch, SSH into, halt, and destroy VMs.
Similar to Harmonious Development: Standardizing The Deployment Process via Vagrant and Puppet (20)
Marketing automation is key to solving six common marketing challenges: 1) generating enough leads, 2) qualifying leads so sales time is spent effectively, 3) ensuring alignment between marketing and sales teams, 4) effectively nurturing leads over time, 5) measuring ROI and optimizing processes, and 6) managing complexity when marketing is distributed across teams. The presentation outlined frameworks for addressing each challenge through strategies like lead generation, lead scoring, sales-marketing integration, lead nurturing, automation analytics, and distributed marketing management using a DXP. It also provided examples of how to apply marketing automation to solve specific problems.
This document discusses how digital advertising is undergoing seismic shifts as third-party cookies are phased out. It provides context on cookies and how they are used for tracking and targeting ads. With Chrome announcing it will no longer allow third-party cookies by 2022, marketers are scrambling to adapt. The death of the cookie will change digital marketing tactics and require a focus on first-party data and building direct customer relationships through authenticated experiences. A cookieless future relies on having a unified single view of the customer, which can be achieved through implementing a customer data platform. The document discusses examples of how companies have used Acquia's customer data platform to gain insights from unified customer data and improve marketing performance.
Taking Your Multi-Site Management at Scale to the Next LevelAcquia
Creating digital experiences across a portfolio of sites can present a big challenge. It requires thinking about scale in multiple dimensions, from standardizing on a technology toolset and driving adoption of that platform across an organization, to establishing content governance and user experience standards to guide the design and build of many sites. In order to build a foundation for scale, all of these dimensions and more need to be addressed. With a strong foundation, next-level digital strategies such as multi-channel content management and personalization can be incorporated into your multi-site management.
Join digital leaders and experts from Princeton University, FFW, and Acquia, to learn from their experiences tackling multi-site management at scale. Hear about best practices drawn from the large portfolios of sites that higher-ed institutions manage, and discover Acquia’s holistic solution for multi-site management with Acquia Site Factory+, Acquia Site Studio, Widen DAM, and Acquia Personalization.
During this webinar we will explore:
A major Princeton University Web Development Services initiative to migrate 1,000 websites to Acquia
How organizing content in one system can simplify control, improve access and increase use
How coordinated distribution supports greater customer experiences and deeper engagement
How to scale and accelerate organization-wide adoption of a design system
How to improve content performance and experience through A/B testing to continually optimize users’ engagement
How to collect data on your customers to be able to define segments to offer personalized experiences
CDP for Retail Webinar with Appnovation - Q2 2022.pdfAcquia
The document discusses how retailers can harness customer data through a customer data platform (CDP) to personalize customer experiences. It outlines that CDPs can help overcome data silos, provide a unified 360-degree view of customers, and put customer data to work driving revenue through better understanding customers. Specific benefits mentioned include collecting first-party data directly, avoiding data silos, unifying cross-channel execution, and getting to know customers better. Use cases are provided showing how machine learning models in a CDP can improve customer engagement and spending.
This document provides an agenda and summary of an Acquia partner bootcamp event held on May 12th, 2022. The agenda includes welcome remarks, Q&A sessions on partner vision and product upsells, and a live Q&A period. Presenters will discuss Edge CDN/security, DAM/PIM upsells and integrations. Partners are encouraged to provide feedback through G2 surveys for a chance to receive gift cards. The bootcamp aims to educate partners on Acquia products and opportunities to work with Acquia on joint go-to-market efforts, with the goal of helping partners expand their business and earn commission fees.
At Acquia, we know we’re stronger when we work together. That’s why we always put our partners first. Our strong partner network, combined with a diverse portfolio of solutions and a clear focus on innovation, empowers us to lead the charge in delivering more open, creative, powerful digital experiences to customers everywhere.
How to Unify Brand Experience: A Hootsuite Story Acquia
Is your brand content difficult to manage, creating bottlenecks across global workflows? Are your teams struggling with quickly finding approved files so much that they start creating their own private collections of assets?
It can get out of hand in no time and the next thing you know, your brand is compromised.
Proper brand management is crucial to keeping your organization’s digital identity unified wherever people interact with it. And the path toward brand consistency begins with a single source to store everything brand-related: a digital asset management (DAM) system.
Join us for an upcoming webinar where we'll dive into more detail on how Hootsuite achieved a sense of control over the what, who, how, and when of their brand’s digital elements.
We'll cover:
- Why digital asset management is key to brand consistency and success
- How to accelerate time to market while staying brand-compliant
- How Hootsuite created a cohesive brand experience with Acquia DAM and enhanced collaboration between global teams
Using Personas to Guide DAM Results: How Life Time Pumped Up Their UX and CXAcquia
This document discusses how using personas can guide a digital asset management (DAM) system to improve customer experience. It recommends taking a persona-first approach when implementing a DAM system. This involves researching user needs through surveys, interviews and card sorting to develop user personas for roles like content creators, content builders and third parties. Examples are provided for how Life Time, a health club company, developed sales enablement portals tailored to different personas' needs. The document concludes with best practices such as aligning goals, researching users, implementing changes and collecting ongoing feedback.
Improve Code Quality and Time to Market: 100% Cloud-Based Development WorkflowAcquia
Modern web development should be seamless. Unfortunately, assembling, testing, and deploying production level code on time and with confidence is a challenge that many organizations face.
Developers and IT leaders, join this webinar to learn how Acquia’s end-to-end web platform will enable you to get your applications to market faster, improve code quality, and reduce security risk.
With Acquia’s 100% cloud-based development tools optimized specifically for Drupal, building, testing, and deploying will all take place on our platform and your feet never need to touch the ground.
We’ll cover:
- How to manage the entire developer lifecycle from our platform
- How to enable continuous testing and deployment
- Why cloud based IDEs are the future of development
- How to get started with a working app on day one
- Which tools are available and how to get the most out of them
See slides of Acquia’s Partner Bootcamp held on September 21st at 10:00 AM EST/15:00 BST/16:00 CET where we shared easy-partner plays to dramatically save you time and effort, and your clients money.
You asked, we listened watch Acquia’s Partner Bootcamp which went live on August 24th at 10:00 AM EST/15:00 BST/16:00 CET where we showed live demos of:
-Employee Experience Proof of Concept on Acquia CMS - demo of our Total Employee Experience concept & benefits.
-Upgrading from Drupal 7 Made Eas(ier) - live upgrade of a Drupal 7 site to Drupal 9 using Acquia Migrate Accelerate.
-CDP Beyond Retail - Use cases for more industries where customer is at the core
As the world emerges into a post-pandemic glow, consumer demand is rebounding. To meet this demand, Partners need to accelerate growth and scale global digital operations for their customers.
Acquia’s Q2 Program Increment is designed to help partners re-engineer the digital stack and increase services revenue. With a focus on; how to scale for new growth of content and experiences, data and insights, digital services and digital products for their customers
Learn more about:
Marketing Cloud Enhancements including the New Marketer Experience, Machine Learning Capabilities, and Global Governance and Compliance.
Drupal Cloud Enhancements including Cloud Next / China Managed Services, a new Developer Experience, and Employee Experience
Supercharge shoppable experiences everywhere with Acquia DXP
Join Acquia for a Partner Bootcamp on May 18th and learn how the DX Alliance empowers our partners to provide exceptional client services, increased services revenue, and improved customer retention.
On the day you will learn about:
Composable Commerce
Create more engaging shoppable experiences in record time with unified first-party data and composable architecture using no-code tools. Unlock the ability for anyone to deliver unique catalogue experiences, deliver lightning-fast value, uncover new needs, and increase customer loyalty.
Acquia Open DXP Pricing & Packaging
Learn how Acquia has redefined pricing & packaging across its entire portfolio with industry-first unified pricing metrics and prescriptive bundles to deliver greater value and streamline selling and client experiences.
Acquia Migrate Accelerate
Preparing your customers for their journey to Drupal 9 has never been more critical with D7 and D8 EOL approaching. Explore our automated tool for D7 to D9 migrations and other strategies to help your customers accelerate their migration timelines.
-Sneak Peak into Acquia Cloud Next
Update to our Cloud Platform that leverages the most modern and innovative AWS technology.
DRUPAL 7 END OF LIFE IS NEAR - MIGRATE TO DRUPAL 9 FAST AND EASYAcquia
As Drupal 7 is reaching EOL in November 2022, it’s time to start thinking about Drupal 9 migration. With all the planning and preparations needed to migrate, it can be overwhelming to take the leap. But don't panic. We’ve got you covered—with all the tools and concrete steps you need to make the move to Drupal 9 efficient and painless.
Work While You Sleep: The CMO’s Guide to a 24/7/365 Lead MachineAcquia
The document discusses a presentation about redesigning websites to function as 24/7 lead and revenue generators. It provides reasons for relaunching a website, such as new leadership, outdated metrics, or a rebrand. The presentation outlines best practices for a redesign process and covers content strategies for researchers. Case studies demonstrate how personalized digital experiences increased traffic, revenue, and compliance for different brands. The presentation is given by representatives from Acquia, a digital experience company that helps customers transform digitally and grow audiences through open source platforms like Drupal.
Acquia webinar: Leveraging Drupal to Bury Your Sales Team In B2B LeadsAcquia
CloudHealth’s story of ramping up their B2B digital experience through an upgrade to Drupal 8 is impressive - and they’re not alone. Organizations of all kinds are discovering how Drupal 8 can boost lead generation, and ensure those leads get to the sales team faster than ever before. We’d love to answer any questions you might have, and explore how Drupal can empower your own sales team.
April partner bootcamp deck cookieless futureAcquia
Google’s recent announcement to ‘phase out support for third-party tracking cookies , has been viewed by many as the final blow in the death of third-party cookies in marketing. It is also the latest wave pushing us toward stronger privacy-focused open web standards.
But what does the death of third-party cookies mean for Acquia Partners? In a nutshell, it means that you must develop a powerful first-party data strategy for your customers so they can win the trust and loyalty of theirs.
Watch our on-demand Partner Bootcamp and learn how you can stay ahead of the curve.
We explored:
Evolving from customer acquisition to consent-driven personalization
The rise of the Customer Data Platform (CDP)
Why a first-party data strategy requires data unification across the customer lifecycle
You will also hear from Mark Royko about Acquia Practice Certification program
How to enhance cx through personalised, automated solutionsAcquia
Automation of processes and optimisation of self-service are key when ensuring dialogue and direct support in moments of need. Freed up resources as a result of efficient self-service can be allocated to supporting customers in difficult situations. Equally, personalised and automated advice is proven to be extremely valuable when timely answers are needed and decisions are to be made.
Personalisation - seamless customer experience: is this possible? How do you build consumer confidence to provide data for effective personalisation?
In this webinar, Acquia will share advice and best practices on how to leverage knowledge and intelligent advice to provide instant value both for customers and employees.
- What consumers feel about personalisation (CX Survey results)
- How to understand customer intent across multiple engagement channels
- The importance of permission-based data sharing and moving beyond cookie-based data collection
- Discuss with CX experts on best practices, challenges, solutions and examples that audience can relate to
- Get advice on where to turn for support, how to quickly adopt use cases of intelligent advice, and answers to your questions
- Hear about how personalized advice and automated decisions can make a difference for your service model, your customers and employee
DRUPAL MIGRATIONS AND DRUPAL 9 INNOVATION: HOW PAC-12 DELIVERED DIGITALLY FOR...Acquia
Supporting content delivered across a multitude of channels for 20+ sports at the NCAA Division I level, Pac-12 has continuously sought to push the boundaries of what is possible with Drupal as their content management system (CMS). From Drupal 7 to Drupal 9, and from roaring crowds of fans to the new digital fanbase -- Pac-12 has continuously provided an unparalleled and cutting-edge experience and they aren’t done yet.
Join our webinar to learn about Pac-12’s digital past, present, and future including:
Pac-12’s Drupal Migrations from Drupal 7 to Drupal 8 and onto Drupal 9
How Pac-12 shifted to support their digital fanbase
How Pac-12 extended Drupal as their internal and external orchestration platform
A look into Pac-12’s approach to FAST (Free Ad Supported Television)
We will also hear from Pac-12’s partner, Phase2, around their best practices for executing Drupal migrations and how they worked with Pac-12 to deliver their Drupal 8 site.
In the era of the experience economy, the combination of technology, talent and touchpoints are key success factors in building sustainable relationships, optimising time to value and facilitating the dialogue between the customer and the brand.
In times of change, organisations are providing advice in challenging situations, guiding information search and facilitating important decisions for individual customers at the same time as they are adopting new ways of working in a dynamic business environment.
Acquia is collaborating with numerous companies globally around customer digital experience and we are here to support with advice, inspiration and open dialogue.
Join our Digital Customer Experience webinar series, where we focus on today’s relevant topics and discuss the role and importance of digital customer experience in an ever-changing world to:
Hear about timely topics, survey findings for Australia and Singapore in the domain of customer experience
- Get advice on where to turn for support and answers to your questions
- Discuss with CX experts on best practices, challenges and solutions
- Key trends overview - why are they relevant to your business?
- Brief on content to be covered in each subsequent webinar
Harmonious Development: Standardizing The Deployment Process via Vagrant and Puppet
1. Prepared For: Acquia
October 4, 2012
Title: Harmonious Development:
Standardizing The Deployment Process via Vagrant and Puppet
Achieve – Quality on Time
1
2. Achieve Internet Overview
7+ years developing media and entertainment web
properties
Over 60,000 development hours developing Drupal web &
mobile-optimized solutions
Deep expertise in UX
(theming), Globalization, Integration, and Performance
Company commitment to
quality, transparency, continuity, reliability and client
experience
5. Pop Quiz
<?php
/**
* Transform upper camel case to lower camel case.
*
* @param string $word
* Upper camel case word.
*
* @return string
* $word with first letter in lower case.
*
* @see http://www.php.net/manual/en/function.lcfirst.php
*/
function my_module_camel_case($word) {
return lcfirst($word);
}
echo my_module_camel_case('HelloWorld');
7. Agenda (Cont.)
What’s all the fuss?
What is Virtualization?
Vagrant – Creating (and destroying) environments on the fly
Provisioning (via Puppet)
Examples
Future Directions
Q&A
8. What We Are Not Covering
Performance Tuning
These are examples only
Version Control
All provisioning can be placed into VCS
Puppet vs. Chef
9. What’s all the fuss?
“Write once, run anywhere” -- Sun Microsystems
“Write Once, Debug Everywhere” -- Anonymous / Reality
“In many distributed computing environments, failures are
reported in a way that violates even the simplest notions of
consistency.” -- IEEE Software, Bradford Glade. K. Birman
18. What is Virtualization?
Technical Definition….
A logical representation of a computer in software. By decoupling the
physical hardware from the operating system, virtualization provides
more operational flexibility and increases the utilization rate of the
underlying physical hardware.1
In a Nutshell….
Putting a small computer [guest/virtual machine] (operating system,
memory, video display, peripherals, etc.) into the confines of another
bigger physical system [host].
19. VirtualBox
Open Source virtualization software for
Windows, Mac, and Linux
Can host multiple operating systems at
once (within memory and CPU
resources)
Free!
21. Vagrant
Manages your virtual machines
Works with VirtualBox
Extremely customizable
Over 50+ pre-built base boxes
Free!
22. Why Vagrant?
Creates consistent, reproducible environments
Rapid setup – Start development in a few quick steps
Reduce duplicated effort
Increased reliability
Allows you to tinker around, more on this later…
Cost savings!
23. Agenda - Revisited
What’s all the fuss?
What is Virtualization?
Vagrant – Creating (and destroying)
environments on the fly.
Provisioning (via Puppet)
Examples
Future Directions
Q&A
24. Using Vagrant
Objective:
Part 1: Create a Ubuntu 8.04 LTS Virtual Machine (VM)
One Time Steps:
List available boxes:
$ vagrant box list
Add a new Vagrant base box to inventory if not available:
(@see http://www.vagrantbox.es/)
Usage: vagrant box add <alias> <location>
$ vagrant box add hardy /path/to/hardy.box
Create a directory for your Vagrant VMs
$ mkdir <vm_dir>/myproject
Create a Vagrant file (do this in <vm_dir>/myproject)
Usage: vagrant init <alias>
$ vagrant init hardy
25. Using Vagrant
Let’s Rock!!
Start up a virtual machine:
$ vagrant up
Delete a virtual machine:
$ vagrant remove
Connect to virtual machine:
$ vagrant ssh
Success! Instant VM. Do the happy dance!
26. Using Vagrant
Other Useful Commands
Go to lunch:
$ vagrant suspend # Save state of virtual machine
$ vagrant resume # Start virtual machine up again
Reboot:
$ vagrant halt # Shutdown the VM
$ vagrant up –no-provision # Restart VM, skip provisioning*
* = Online documentation says no reprovisioning will occur…
Reload configuration (automatically does a provisioning)
$ vagrant reload
Reprovision a system:
$ vagrant reprovision
Repackage running system:
$ vagrant package
27. Example 1
$ mkdir <vm_dir>/myproject
$ vagrant init hardy
Customize our VM Instance (Excerpts of Vagrantfile)
config.vm.network :hostonly, "192.168.33.10”
# Host: <vm_dir>/<project_name> == Guest: /vagrant
config.vm.share_folder "v-root", "/vagrant", ".", :owner => 'www-data', :group => 'www-
data’
# Configure the VM with puppet.
config.vm.provision :puppet, :module_path => "modules", :options => ["--
environment", "local"] do |puppet|
puppet.manifests_path = "manifests”
puppet.manifest_file = ”myproject.pp”
End
$ vagrant up
28. Example 1
Scenario: Admin for a Day
Wonder what this does… (WARNING)*
$ sudo chmod 444 /etc/sudoers
* Warning, doing this on a Production system may have an adverse effect on
your career. This will remove any ability to sudo.
Solution (Assuming all configuration is provisioned):
$ vagrant destroy
$ vagrant up
29. Vagrant++
Instant development environments!
No physical hardware required.
Creates a safe environment for configuration optimization.
31. Puppet
Provisioning = preparing a device/server for usage, aka configuration
Allows enforceable system configuration
Similar to Microsoft’s System Center Configuration Manager/SMS or Apple’s Profile
Manager
Uses a Resource Abstraction Layer (RAL) to interact with the host.
Core Resource Types include: notify, file, package, service, exec, cron, user, group
RAL can be used to read and modify resources
Configurations can be store in manifests. See resources for prebuilt modules.
33. Puppet: Miscellaneous Info (Cont.)
Describes a resource, use -s to summarize
$ puppet describe <resource>
Inspect individual resource in “Puppet-speak”
$ puppet resource service apache2
service { 'apache2':
ensure => 'stopped',
enable => 'true',
}
Test a manifest on the local system
$ puppet apply --modulepath=<module_path> <manifest>.pp
34. Agenda - Revisited
What’s all the fuss?
What is Virtualization?
Vagrant – Creating (and destroying)
environments on the fly.
Provisioning (via Puppet)
Examples
Future Directions
Q&A
35. Puppet: Important Notes
Common Pattern:
Package, File, Service
Resources are processed asynchronously! Use dependency
relationships (require/before) if any ordering is necessary.
@see http://forge.puppetlabs.com/ for prebuilt Puppet
modules.
36. Puppet Main Manifest
myproject.pp
class myproject {
Site specific ensure => 'absent';
$site = ’myproject' $site:
ensure => 'present'; Site/DB
# Vagrant specific setup, set up hostname, hosts file }
class { 'vagrant': apache::mod {
site => $site, 'rewrite': ensure => 'present'
} }
# Cool stuff mysql::schema { $site:
class { 'vim': } user => $site,
password => $site,
# LAMP stack }
class { 'linux': }
class { 'apache': } Base LAMP class { 'drupal::prepare':
class { 'mysql': } site => $site,
class { 'php': admin_pw => 'admin',
error_reporting => 'E_ALL & ~(E_WARNING|E_NOTICE)', }
} }
class { 'phpmyadmin': }
class { 'myproject': }
# Drupal
class { 'drupal':
server_type => 'dev',
}
# Solr
class { 'tomcat': }
class { 'solr': } Search
# Site specific stuff
apache::site {
'default':
vhost => 'default',
37. Example 2: Puppet Module
/modules/apache/init.pp (Header)
# Class: apache # vhost => 'default',
# # ensure => 'absent';
# This module installs apache and sets up the virtual.
#
# '<site_name_1>':
# ensure => 'present'; Advanced usage
# Mike Lee <michael.lee@achieveinternet.com> # '<site_name_2>':
# 2012-09-07
#
# docroot => '/custom/path',
# ensure => 'present';
Enable host/mod
# Tested platforms: #}
# - Ubuntu 8.04 Hardy Heron #
# # Enable/disable modules.
# Parameters: # apache::mod {
# N/A # 'rewrite': ensure => 'present’
# #}
# Actions:
# Installs and configures apache. Will automatically create the site file.
#
# Requires:
# N/A
#
# Sample Usage:
#
# Make sure apache is present.
# class { 'apache': }
# Base usage
# Enable/disable sites.
# <site_name> = Simple site name. The vagrant domain will be added
automatically.
# i.e. <site_name> = "example" creates a site named "example.vagrant".
# <docroot> = Docroot. Defaults to /vagrant/<site_name>/docroot.
# If this is overridden, this must be the ABSOLUTE path to the docroot.
#
# apache::site {
# 'default':
38. Puppet Sample Module
/modules/apache/init.pp (Code)
class apache { case $ensure {
$apache2_sites = '/etc/apache2/sites' present: {
$apache2_mods = '/etc/apache2/mods' file { "/etc/apache2/sites-available/$site_name":
ensure => file,
# OS Specific settings
case $::operatingsystem { OS Specific require => Package[$apache::package_name],
content => template("apache/${apache::conf_template}"),
ubuntu: { }
$package_name = 'apache2'
$conf_template = 'site.conf.debian.erb' exec { "/usr/sbin/a2ensite $site_name":
} unless => "/bin/readlink -e ${apache2_sites}-enabled/$site_name",
default: { notify => Exec['force-reload-apache'],
notify { "${module_name}_unsupported": require => Package[$apache::package_name],
message => "The ${module_name} module is not supported on }
${::operatingsystem}.", }
} absent: {
error("OS support for ${::operatingsystem} needs to be configured") exec { "/usr/sbin/a2dissite $site_name":
} #onlyif => "/bin/readlink -e ${apache2_sites}-enabled/$site_name", #
} readlink not returning 0
# Define new type: site
Define type: site notify => Exec['force-reload-apache'],
require => Package[$apache::package_name],
define site ($ensure = 'present', $vhost = undef, $docroot = undef) { }
if $vhost { }
$site_name = $vhost default: {
} err("Unknown ensure value: '$ensure'")
else { }
$site_name = "${title}.vagrant" }
} }
if $docroot {
$path = $docroot
}
else {
$path = "/vagrant/${title}/docroot"
}
39. Puppet Sample Module
/modules/apache/init.pp (Code)
# Define new type: mod
define mod ($ensure = 'present') { service { $package_name:
case $ensure {
present: {
ensure => running,
hasstatus => true,
Package/Service
exec { "/usr/sbin/a2enmod $title": hasrestart => true,
unless => "/bin/readlink -e ${apache2_mods}-enabled/${title}.load", require => Package[$package_name],
notify => Exec['force-reload-apache'], }
require => Package[$apache::package_name], }
}
}
absent: {
Define type: mod
exec { "/usr/sbin/a2dismod $title":
#onlyif => "/bin/readlink -e ${apache2_mods}-enabled/${title}.load", #
readlink not returning 0
notify => Exec['force-reload-apache'],
require => Package[$apache::package_name],
}
}
default: {
err("Unknown ensure value: '$ensure'")
}
}
}
# Force reload all the time, doesn't take that much more in resources.
exec { 'force-reload-apache':
command => '/etc/init.d/apache2 force-reload',
refreshonly => true,
}
package { $package_name:
ensure => installed,
}
40. Puppet Sample Module
ERB Templates: Create files on the fly.
/modules/apache/templates/site.conf.debian.erb
# Puppet generated file. DO NOT EDIT!
# Managed by Class['apache']
<VirtualHost *:80>
ServerAdmin webmaster@achieveinternet.com
DocumentRoot <%= path %>
ServerName <%= site_name %>
<Directory <%= path %>>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
41. Puppet++
Construct fully functioning development environments on
the fly!
Bring new team members up to speed in a few simple
commands.
CONSISTENCY! CONSISTENCY! CONSISTENCY!
Everyone is working with the same virtual machine.
42. Agenda - Revisited
What’s all the fuss?
What is Virtualization?
Vagrant – Creating (and destroying)
environments on the fly.
Provisioning (via Puppet)
Examples
Future Directions
Q&A
44. Next Steps: Veewee
Want your own custom Vagrant Box or one doesn’t exist?
Veewee has predefined definitions for creating a variety of Vagrant base boxes.
Installation Requirements (Mac OS X)
- Install RVM (Ruby Version Manager)
$ curl -L https://get.rvm.io | bash -s stable
- Install Xcode, Command Line Tools for Xcode (required by Homebrew)
- Install Homebrew
$ ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)
- Install apple-gcc42 GCC Required!
$ brew update
$ brew tap homebrew/dupes
$ brew install autoconf automake apple-gcc42
$ rvm pkg install openssl
45. Next Steps: Veewee
Veewee Installation (Mac OS X)
$ rvm install 1.9.2
$ git clone https://github.com/jedi4ever/veewee.git
$ cd veewee
(official – Never worked for me…)
$ gem install bundler
$ bundle install
(unoffical)
$ gem build veewee.gemspec
$ gem install veewee-*.gem (run as sudo)
$ unalias veewee
46. Next Steps: Veewee
Veewee Base Box Creation (Mac OS X)
In veewee directory:
- Copy new iso into [currentDir]/iso (optional, saves veewee from finding)
Create VM definition off of template:
Usage: veewee vbox define <box_name> <template>
$ veewee vbox define hardy ubuntu-8.04.4-server-i386
Customize VM Definition:
- Edit <veewee_dir>/definitions/<box_name>/definition.rb
Build virtual box (This should start VirtualBox)
Usage: veewee build <box_name>
$ veewee vbox build hardy # go get a coffee
Usage: veewee vbox validate <box_name>
$ veewee vbox validate hardy
Build Vagrant base box:
Usage: vagrant basebox export <box_name>
$ vagrant basebox export hardy
47. Next Steps: Puppet Enterprise
Allow for remote management of puppet nodes.
“One server to rule them all.”
Clone your configurations to EC2.
Audit your configurations.
48. Gotchas
Be mindful of Puppets asyncronous execution order:
Make sure dependecies are properly set.
Starbucks syndrome:
Switching networks can sometimes cause your VM’s networking to
get confused. Halt and restart to correct.
Provision everything… or as much as you can:
This will make resetting your environment go much more smoothly.
50. Further Resources
Prebulit Vagrant Base Boxes (http://www.vagrantbox.es/)
Puppet Forge (http://forge.puppetlabs.com/)
Learn Puppet (http://docs.puppetlabs.com/learning/ral.html)
51. Conclusion
…makes the "works on my machine" excuse a relic of the past. -- Vagrant
Created a disposable test bed to play with configuration changes
Created reusable modules to easily build customized setups
Provided canned environment for those who simply want to jump into a project. Allows
team members to focus on core competencies.
Allows you to quickly and efficiently archive projects and come back to them later
CONSISTENCY - REDUCED ERRORS
EASY & INEXPENSIVE
INSTANT DEVELOPMENT - SAVE $$$
52. Achieve Internet Pillars of Expertise
Technical Foundation Built On the
Following Core Areas of Expertise
and Knowledge:
1. User Experience (UX) / Theming
2. Globalization/Localization
3. Performance & Deployment
4. Integration
54. Thank You
Michael Lee
Senior Architect
michael.lee@achieveinternet.com
www.achieveinternet.com
mlee11111
@ach_mikelee
/pub/michael-lee/4/297/a6b
Direct: 858-453-5760