Tramp, Docker, Puppet, Chef

I don’t understand even the main difference between the services in the name. Do these services provide only software that will help you configure / organize / manage your virtual machines, or do they also provide the physical infrastructure for your virtual machine? In other words, are these just user-friendly interfaces between developers and AWS, Rackspace and Azure?

+8
docker vagrant puppet chef
source share
3 answers

Not really.

Chef / Puppet is "the same", they control the configuration. Although you can use them to manage virtual machines or cloud / private clouds, most people are reluctant to use them that way. This is configuration management. They usually come into play after starting the virtual machine to get them in their desired state. That is, what software is needed on the virtual machine, which users need to be added, what configuration is needed, etc. Therefore, it is typically used to scale infrastructure.

Vagrant, and can also be used to manage virtual machines and public / private clouds, is usually used for only one environment. It provides a linked file for creating a virtual machine. This is similar to a chef / puppet, but has no tendency to use on a scale.

Docker is a separate beast. It has several components, but it is mainly used for “binding” (note: it does much more, but this is an ELI5 solution) and requires the host system (or infrastructure) to work. It adds little security for applications, but basically provides a consistent "OS" for the application that will work.

In practice, they can all be used in the environment. Here is an example:

Say you have a FunTime app. You have eight developers who contribute to this, and FunTime is designed to run on a scalable infrastructure on AWS. It is intended for use in the interface (FunTime-Front) and back-end (FunTime-API) and requires postgres. 4 developers work on the front panel, four developers work on the backend.

I would do the following (there are many ways to discard this cat, but this is one example):

I would use Docker for FunTime-Front and FunTime-API. I would use Vagrant to create a development environment for developers (so that they can customize various components). Vagrant: launch a virtual local area network locally (or, if necessary, in the cloud), install dockers, pull out docker images for FunTime-Front and FunTime-API, install postgres and fill postgres with dummy data, configure network ports for various components.

Now the developer has a full FunTime stack on his local machine and should not spin up with setting anything by himself: they can just type “roving”.

On the infrastructure side, I would use a chef (or puppet) to set up the environment: Production, stage and development (or something else), then the chef will install the docker on the "application" servers, "postgres" on the postgres servers , apply security settings, etc. Thus, all linked servers are the same. If I needed to upgrade the server or add a patch, it would be trivial with configuration management.

In all cases, Docker will be used so that there is no difference in applications between environments, including the developers workstation.

This will make sure that you don’t hear the excuse "Well, it works on my local machine!" Often. Also, if there is an unsuccessful deployment, rolling back the application will be very easy with Docker.

I hope this gives a little more information on how to use them.

+20
source share

I will try to convey, as in a daily conversation,

Vagrant . To create a development environment on a new developer machine in the same project, ideally within minutes. It is usually used on top of a virtual box, but can be used with various equipment suppliers.

Docker . Nothing virtual here, just imagine that the real process and the required libraries are isolated and then sent to the server as an archive. Resource usage is determined by the launch command.

Chef / Puppet . It can be used to automate everything you type in bash to customize your project (except application keys, etc.). You can use them to create images of dockers or stray environments, so they do not have to exist on a physical production server. See Packer .

AWS / Rackspace / Azure - are IaaS providers. In plain English, they deploy servers as needed and give you access to SSH. Of course, they provide more than that.

Guess that they can be used inside each other.

These tools seem to have simplified deployment, but generally don’t use them all together unless it saves you time and your team. Sometimes it's easier to scroll through EC2 manually and scp your project with manual tuning. You can automate later.

Premature optimization is the root of all evil - Sir Tony Hoar

+2
source share

The chef . A chef is an automation platform that converts your infrastructure into code. It is commonly called configuration management software. You can define the state with various parameters in the form of configuration files, s / w, tools, access types and resource types, etc. In addition, you can configure different machines with different functions based on your needs.

Puppet : Puppet is a tool that allows you to abstract from specific concepts of the target machine and make the configuration process more aggressive for the operating system. It allows you to install the package yourself or start a background service at startup. Define the command, the packages that need to be installed, the dependencies of the steps, the contents of the file, and other things that you will need to run and run without problems.

Vagrant : Vagrant is a project that helps spawn virtual machines. It started as a VirtualBox command line, something similar to the Gemfile for VM. You can select the base image to start with, network, IP, folder sharing and put it all in a file that everyone can reuse to create the same customized machine. Vagrant has various extensions, service options, and VM providers. You can run VirtualBox, VMware, and it is extensible enough to create instances on EC2.

Docker : Docker, allows you to pack an application with all its dependencies into a standardized software development unit. Thus, it reduces friction between the developer, QA and testing. It dynamically changes your application, adding new features every day, scaling services to quickly change problem areas. Docker puts itself in an excited place because the interface for PaaS is networking, discovery, and service, with applications that don't have to worry about the underlying infrastructure. Yes, they still have problems with the loader in production (I thought that all large companies have already migrated their docker infrastructure), but I hope we will see a solution to these problems, since the docker team and participants are working hard on these issues. Because the Docker Volume driver allows third-party container data management solutions to provide data volumes for containers that work with data, such as databases, key stores, and other stateful applications. As you can see one, rexray is like a volume plugin and provides advanced storage features. emccode / rexray Finally, we are beginning to accept more than just images and runtime.

+1
source share

All Articles