17
Спикер Тема Стас Мехоношин Или для разработчиков Инфраструктура для разработки в один клик

Станислав Мехоношин «Инфраструктура для разработки в один клик, или Vagrant для разработчиков»

  • Upload
    dataart

  • View
    118

  • Download
    3

Embed Size (px)

Citation preview

Спикер

Тема

Стас Мехоношин

Или для разработчиков

Инфраструктура для разработки в один клик

Современное приложение

• Множество сервисов

• Множество компонентов

• Множество серверов

Множество сервисов

• Database

• Key-Value Storage

• Message Queue

• Logs Storage

Множество компонентов

• WebService1

• WebService2

• Background Processer1

• Background Processer2

Множество серверов

● app1.myapp.com

● app2.myapp.com

● db.myapp.com

● log.myapp.com

Проблемы?

● Запуск проекта новым

девелопером

● Управление конфигурацией

инфраструктуры

Новый девелопер

Ставит все сервисы локально

Или использует сервисы со Staging

Vagrant

Появился как Ruby Gem в 2010 году

Теперь есть инсталлер для всех ОС

www.vagrantup.com

Абстракция над гипервизорами VM

По-дефолту без UI

Как пользоваться?

Vagrantfile в корне проекта

git clone myproject

vagrant up

Vagrantfile

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box_url = "http://some/url"

config.vm.define "core", primary: true do |dev| dev.vm.network :forwarded_port, guest: 6379, host: 6379 # redis dev.vm.provision :shell, inline: script end

config.vm.define "web1" do |node| node.vm.network :private_network, ip: "#{SUBNET}.12" endend

2 подхода

Запускаем проект у себя, а зависимости в VM:1. пробрасываем порты2. приложение запускаем в хостовой системе

Запускаем проект также в VM:1. шарим папку с кодом2. код в хостовой системе3. приложение в гостевой

Провайдеры

● Virtualbox(Default)

● VMWare

● Docker

● Hyper-V

● Amazom EC2

Provision

● Shell(*sh, PowerShell)

● Chef

● Puppet

● Ansible

● Salt

Как не надо делать

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box_url = "http://url-to-super-ready-box"

config.vm.define "myVM" do |node| endend

Управление конфигурацией

Конфигурация - это код

Конфигурация должна быть воспроизводимой

Не нужно ходить на сервера по SSH

Централизованное управление

Какие бонусы?

Локальный запуск проекта за 5 минут

Быстрый подъем нового сервера

Автоматическая выкатка на N серверов

Спокойствие

Просветление