34
Настройка проекта правильный путь

Vagrant puppet

Embed Size (px)

Citation preview

Page 1: Vagrant puppet

Настройка проектаправильный путь

Page 2: Vagrant puppet

Небольшая демонстрация

Репозиторий:https://github.com/arkady-emelyanov/vagrant-puppet-demo

Laravel 5.1 to-do web-приложение

● Laravel (http://laravel.com/docs/5.1/quickstart)

● MySQL (http://www.percona.com)

● PHP 5.6 via PHP-FPM

● Nginx

Page 3: Vagrant puppet

Что такое проект?

Это не только код, но и окружение

● Операционная система

● Системное ПО (nginx, redis, mysql, php)

● Runtime ПО (расширения php, зависимости проекта)

● Конфигурация

Page 4: Vagrant puppet

Теоретическая часть

Page 5: Vagrant puppet

Одиночная разработка

● WAMP / MAMP (Windows, Mac OS)

● Denwer (Windows)

● Локальная установка

● Виртуальная машина

Page 6: Vagrant puppet

Командная разработка

Все на одном сервере

Плюсы● легче в настройке

Минусы● обновление конфигурации затрагивает всех● ресурсы сервера не бесконечны● сетевые задержки при доступе к файлам● сложно/невозможно работать удаленно

Page 7: Vagrant puppet

Командная разработка

Локально

Минусы● сложнее в настройке

Плюсы● любое изменение конфигурации локально● быстро● файлы локально (критично для PHPStorm)● можно работать где угодно

Page 8: Vagrant puppet

Что такое Vagrant?

Официальный сайт: https://www.vagrantup.com/

● Средство автоматизации создания и управления виртуальными машинами

● Поддержка провайдеров: VirtualBox, VMWare, AWS, Rackspace, etc..

● Поддержка операционных систем: Windows, Mac OS X, Linux

● Конфигурация хранится вместе с кодом проекта

Page 9: Vagrant puppet

Шаблоны операционной системы

В терминологии vagrant - boxes

● Официальный репозиторий: https://atlas.hashicorp.com/boxes/search

● Неофициальный репозиторий: http://www.vagrantbox.es/

Рекомендуемый образ: ubuntu/trusty64

Page 10: Vagrant puppet

Как работает Vagrant

Vagrant VMVirtualBox

Vagrantfile

SSH

Page 11: Vagrant puppet

Создание виртуальной машины

Файл Vagrantfile содержит описание виртуальной машины

Управление виртуальной машиной:

● vagrant up

● vagrant ssh

● vagrant halt

● vagrant status

● vagrant destroy

Page 12: Vagrant puppet

Монитирование директорий

Хост PC

Директория #2

Vagrant VM

Директория #2

Директория #1 Директория #1VirtualBox

VirtualBox shared folders

NFS монтирование

Page 13: Vagrant puppet

Port forwarding

Host PC127.0.0.1

Vagrant VM192.168.1.30

:8081

:2222

:80

:22

VirtualBox

Page 14: Vagrant puppet

Настройка окружения

Шаблон предоставляет только базовую операционную систему

За кадром:

• установка софта (php, mysql, nginx)

• настройка конфигурационных файлов

• установка дополнительных зависимостей

Page 15: Vagrant puppet

Автоматизация● Roll-your-own, bash

● Puppet: https://puppetlabs.com/

● Chef: https://www.chef.io/

● Ansible: http://www.ansible.com/

Page 16: Vagrant puppet

Vagrant провизионеры

● включено в поставку

● механизм автоматизации рутинных задач

● запуск по условию

○ первая загрузка виртуальной машины

○ запуск виртуальной машины

Page 17: Vagrant puppet

Что такое Puppet?

Система управления конфигурацией

● DSL для описания конфигурации

● Клиент-серверная архитектура

Page 18: Vagrant puppet

Как работает Vagrant + Puppet

Vagrant VMVirtualBox

Vagrantfile

SSH

PuppetManifest

PuppetAgent

Page 19: Vagrant puppet

Строительные блоки

● Class

● Resource

○ Package

○ File

○ Exec

○ ...

Page 20: Vagrant puppet

Модули

Группировка классов + шаблоны

moduleA/

manifests/

init.pp

templates/

template.erb

Page 21: Vagrant puppet

Финальная структура

puppet/

manifests/

site.ppmodules/

moduleA/

moduleB/

Page 22: Vagrant puppet

Два вида отношений

● require

● notify

Граф зависимостей

Servicenginx

Filenginx.conf

Packagenginx

Require

Require

Notify

Page 23: Vagrant puppet

Вопросы?по теоретической части

Page 24: Vagrant puppet

Практическая часть

Page 26: Vagrant puppet

Шаг 1: Описание виртуальной машины

Vagrantfile, ruby-синтаксис

● Шаблон операционной системы

● Процессор / Память

● Сетевой адрес / Port mapping

● Монтирование директорий

branch: step1

Page 27: Vagrant puppet

Шаг 2: shell провизионеры

● Чиним non-interactive root логин

● Отключаем Message of the Day

Пользователь системы: vagrant

branch: step2

Page 28: Vagrant puppet

Шаг 3: модули apt и stdlib, базовый site.pp

Добавляем модуль для работы с Apt-репозиториями

https://forge.puppetlabs.com/puppetlabs/apt

https://forge.puppetlabs.com/puppetlabs/stdlib

branch: step3

Page 29: Vagrant puppet

Шаг 4: base, bashrc

Устанавливаем базовые пакеты

Настраиваем пользовательский .bashrc

branch: step4

Page 30: Vagrant puppet

Шаг 5: PHP

• Установка PHP 5.6

• Установка расширений PHP

• Установка конфигурационных файлов (cli, fpm)

• Установка composer

• Запуск PHP-FPM демона

branch: step5

Page 31: Vagrant puppet

Шаг 6: MySQL

• Установка Percona MySQL 5.6

• Настройка конфигурационного файла

• Запуск сервиса MySQL

branch: step6

Page 32: Vagrant puppet

Шаг 7: Nginx

• Установка nginx

• Настройка виртуального хоста

branch: step7

Page 33: Vagrant puppet

Шаг 8: index.php

Проверяем что все работает

branch: step8

Page 34: Vagrant puppet

Вопросы?