Серегодня рассмотрим один из инструментов позволяющий быстро подготовить development окружение для не сложного проекта.
Речь пойдет о Vagrant — это инструмент для создания виртуальной среды разработки.

Окружение

  • Ноутбук с ОС: macOS, Linux
  • Vagrant: 1.8.5
  • VirtualBox: 5.1.8
  • Ruby: 2.3.2
  • Rails: 5.0.0.1

Обзор Vagrant

  • Поддерживаемые ОС: Windows, macOS, Linux
  • Язык разработки: Ruby
  • Поддерживаемы системы виртуализации: VirtualBox, VMware, libvirt
  • Поддерживаемые облачные сервисы: Amazon EC2, Openstack

Rails проект в Vagrant

Установка плагина vbguest 

Плагин понадобится для синхронизации локальной директории с директорией в виртуальной машине.

vagrant plugin install vagrant-vbguest

Добавим образ виртуальной машины

vagrant box add centos/7

Создадим Vagrant проект

Сразу же создадим myproject директорию под будущий Rails проект

mkdir -p ~/vagrant_myproject/myproject
cd ~/vagrant_myproject
vagrant init

Создадим SSH ключ 

ssh-keygen -f ./vagrant

Отредактируем Vagrantfile

vi Vagrantfile
HOME_MYPROJECT="~/vagrant_myproject/myproject"

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.ssh.insert_key = false
  config.ssh.private_key_path = ["./vagrant","~/.vagrant.d/insecure_private_key"]
  config.vm.provision "file", source: "./vagrant.pub", destination: "~/.ssh/authorized_keys"
  config.vm.network "private_network", type: "dhcp"
  config.vm.provision "shell" do |s|
    s.path = "./prepare.sh"
  end

  config.vm.provider "virtualbox" do |vb|
    vb.cpus = 2
    vb.memory = "1024"
    vb.name = "myproject"
  end

  config.vm.synced_folder HOME_MYPROJECT, "/opt/myproject"
end

Создадим prepare.sh

vi prepare.sh
#!/usr/bin/env bash
hostname devops-lecture-1
echo "devops-lecture-1" > /etc/hostname

yum -y install epel-release.noarch sqlite-devel zlib-devel wget unzip 
yum -y install nodejs

curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm reload
rvm requirements run
rvm install 2.3.2
rvm use 2.3.2 --default
gem install bundle
gem update --system
gem install rails -v 5.0.0.1

Запустим vagrant

vagrant up

Подключимся к виртуальной машине

vagrant ssh

Создадим Rails проект

При создании проекта все файлы будут сохранены на хост системе так как директория /opt/myproject синхронизирована с хост системой.

cd /opt
rails new myproject 
cd /opt/myproject
bundle install

Запустим Rails проект

ruby bin/rails server webrick -e development -b 0.0.0.0

Остановить VM

vagrant halt

Удалить VM

vagrant destroy

Итог

  • Идентичное development окружение у всей команды
  • Быстрое разворачивание development окружения
  • Создание Rails проекта без изменения на host системе
  • Занимает минимум места, всегда можно удалит VM не боясь потерять важные данные
  • Конфигурация  development среды то же находится в CVS системе
Categories: Блог