August 17, 2013

Vagrant + CentOS

На днях разбирался с Docker и c Vagrant. Обе софтины довольно интересны в плане возможностей. Если первая позволяет запускать на ядре хост системы другие изолированные копии ОС из контейнеров, то вторая служит удобной утилитой для настройки и запуска виртуальных машин (основной провайдер VirtualBox).

Ну так вот, решил я значит настроить удобную связку - Vagrant + CentOS + VestaCP для удобного управления виртуальными хостами (создание хостов, управление БД) вместо своих костылей.

Не скажу что установка прошла гладко, немного подпортила нервы ошибка описанная в пункте 14, но теперь то вы в курсе как ее фиксить xD

Началось все стандартно:

  1. Установка свежего ядра 3.8, свежего VirtualBox 4.2.10 (ppa debfx), установка Vagrant 1.2.7 (скачал deb c оф.сайта).
  2. vagrant box add centos6.4 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.boxhttp://vagrantbox.es)
  3. mkdir -p ~/Boxes/Centos
  4. cd ~/Boxes/Centos
  5. vagrant init centos6.4
  6. vagrant up
  7. vagrant ssh
su (пароль vagrant)
Установка VestaCP (http://vestacp.com/)
mv /home/admin /home/admin.old (хосты будем добавлять только юзеру admin на гостевой системе, убираю чтобы потом перекинуть обратно)
shutdown -h now
  1. nano Vagrantfile ( пункты 12 и 13)
  2. Прокидываем директорию с хоста на гостевую систему с правами пользователя admin: config.vm.synced_folder “/home/rail/Projects”, “/home/admin”, owner: “admin”, group: “admin”
  3. config.vm.network :private_network, ip: “192.168.33.10” (виртуалка будет доступна по адресу 192.168.33.10)
  4. vagrant up
И вот тут то мы получаем ошибку: sudo: no tty present and no askpass program specified

Но мы не отчаиваемся, все дело в том что sudo запросил пароль рута у vagrant а т.к. терминал не создан то выкинуло ошибку. Виртуальная машина стартанула, но всякие полезности в виде подмонтирования директорий пошли лесом т.к. конфиг застопорился на ошибке.

Сейчас мы это дело поправим.
  1. vagrant ssh
su затем: nano /etc/sudoers и там после строчки root ALL=(ALL) ALL добавляем vagrant ALL=(ALL) NOPASSWD:ALL этим делом мы разрешили юзеру vagrant использовать sudo без пароля
shutdown -h now
  1. vagrant up
  2. profit!

Теперь мы видим что все запустилось и смонтировалось именно так как надо. По адресу https://192.168.33.10:8083 крутится VestaCP, а домашняя директория пользователя admin теперь синхронизируется с /home/rail/Projects.

Вот как то так. Простите за сумбурный текст поста, если есть какие то вопросы пишите в комментариях, постараюсь ответить )