Upload
peri-innovations
View
286
Download
2
Embed Size (px)
Citation preview
Настройка проектаправильный путь
Небольшая демонстрация
Репозиторий: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
Что такое проект?
Это не только код, но и окружение
● Операционная система
● Системное ПО (nginx, redis, mysql, php)
● Runtime ПО (расширения php, зависимости проекта)
● Конфигурация
Теоретическая часть
Одиночная разработка
● WAMP / MAMP (Windows, Mac OS)
● Denwer (Windows)
● Локальная установка
● Виртуальная машина
Командная разработка
Все на одном сервере
Плюсы● легче в настройке
Минусы● обновление конфигурации затрагивает всех● ресурсы сервера не бесконечны● сетевые задержки при доступе к файлам● сложно/невозможно работать удаленно
Командная разработка
Локально
Минусы● сложнее в настройке
Плюсы● любое изменение конфигурации локально● быстро● файлы локально (критично для PHPStorm)● можно работать где угодно
Что такое Vagrant?
Официальный сайт: https://www.vagrantup.com/
● Средство автоматизации создания и управления виртуальными машинами
● Поддержка провайдеров: VirtualBox, VMWare, AWS, Rackspace, etc..
● Поддержка операционных систем: Windows, Mac OS X, Linux
● Конфигурация хранится вместе с кодом проекта
Шаблоны операционной системы
В терминологии vagrant - boxes
● Официальный репозиторий: https://atlas.hashicorp.com/boxes/search
● Неофициальный репозиторий: http://www.vagrantbox.es/
Рекомендуемый образ: ubuntu/trusty64
Как работает Vagrant
Vagrant VMVirtualBox
Vagrantfile
SSH
Создание виртуальной машины
Файл Vagrantfile содержит описание виртуальной машины
Управление виртуальной машиной:
● vagrant up
● vagrant ssh
● vagrant halt
● vagrant status
● vagrant destroy
Монитирование директорий
Хост PC
Директория #2
Vagrant VM
Директория #2
Директория #1 Директория #1VirtualBox
VirtualBox shared folders
NFS монтирование
Port forwarding
Host PC127.0.0.1
Vagrant VM192.168.1.30
:8081
:2222
:80
:22
VirtualBox
Настройка окружения
Шаблон предоставляет только базовую операционную систему
За кадром:
• установка софта (php, mysql, nginx)
• настройка конфигурационных файлов
• установка дополнительных зависимостей
Автоматизация● Roll-your-own, bash
● Puppet: https://puppetlabs.com/
● Chef: https://www.chef.io/
● Ansible: http://www.ansible.com/
Vagrant провизионеры
● включено в поставку
● механизм автоматизации рутинных задач
● запуск по условию
○ первая загрузка виртуальной машины
○ запуск виртуальной машины
Что такое Puppet?
Система управления конфигурацией
● DSL для описания конфигурации
● Клиент-серверная архитектура
Как работает Vagrant + Puppet
Vagrant VMVirtualBox
Vagrantfile
SSH
PuppetManifest
PuppetAgent
Строительные блоки
● Class
● Resource
○ Package
○ File
○ Exec
○ ...
Модули
Группировка классов + шаблоны
moduleA/
manifests/
init.pp
templates/
template.erb
Финальная структура
puppet/
manifests/
site.ppmodules/
moduleA/
moduleB/
Два вида отношений
● require
● notify
Граф зависимостей
Servicenginx
Filenginx.conf
Packagenginx
Require
Require
Notify
Вопросы?по теоретической части
Практическая часть
GitHub репозиторий
https://github.com/arkady-emelyanov/vagrant-puppet-steps
Шаг 1: Описание виртуальной машины
Vagrantfile, ruby-синтаксис
● Шаблон операционной системы
● Процессор / Память
● Сетевой адрес / Port mapping
● Монтирование директорий
branch: step1
Шаг 2: shell провизионеры
● Чиним non-interactive root логин
● Отключаем Message of the Day
Пользователь системы: vagrant
branch: step2
Шаг 3: модули apt и stdlib, базовый site.pp
Добавляем модуль для работы с Apt-репозиториями
https://forge.puppetlabs.com/puppetlabs/apt
https://forge.puppetlabs.com/puppetlabs/stdlib
branch: step3
Шаг 4: base, bashrc
Устанавливаем базовые пакеты
Настраиваем пользовательский .bashrc
branch: step4
Шаг 5: PHP
• Установка PHP 5.6
• Установка расширений PHP
• Установка конфигурационных файлов (cli, fpm)
• Установка composer
• Запуск PHP-FPM демона
branch: step5
Шаг 6: MySQL
• Установка Percona MySQL 5.6
• Настройка конфигурационного файла
• Запуск сервиса MySQL
branch: step6
Шаг 7: Nginx
• Установка nginx
• Настройка виртуального хоста
branch: step7
Шаг 8: index.php
Проверяем что все работает
branch: step8
Вопросы?