Серегодня рассмотрим один из инструментов позволяющий быстро подготовить 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 системе