вторник, 24 октября 2017 г.

Windows Vagrant Hyper-V

Установил Vagrant на Win10 в папку D:\Vagrant. Далее пользовался подсказками отсюда.

В Hyper-V у меня уже виртуалка была, и виртуальный коммутатор на внешнюю сеть уже был настроен. Далее зашел в powershell от админа и создал подкаталог D:\Vagrant\work, перешел туда. Посмотрел на сайте по фильтру provider = hyperv бокс с Centos 7 и установил:

PS D:\Vagrant\work> vagrant box add centos/7 --provider hyperv
==> box: Loading metadata for box 'centos/7'
    box: URL: https://vagrantcloud.com/centos/7
==> box: Adding box 'centos/7' (v1708.01) for provider: hyperv
    box: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/1708.01/providers/hyperv.box
    box: Progress: 100% (Rate: 932k/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'centos/7' (v1708.01) for 'hyperv'!

Можно посмотреть результат:

PS D:\Vagrant\work> vagrant box list
centos/7 (hyperv, 1708.01)

Теперь нужно создать файл с окружением Vagrantfile в рабочем каталоге:

PS D:\Vagrant\work> vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Этот файл я переименовал в Vagrantfile_orig, и создал новый Vagrantfile с такими же правами, как оригинальный,  и таким содержимым:
# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|  
  config.vm.box = "centos/7"
  config.vm.provider "hyperv"
  config.vm.network "public_network"
end

У меня только один хард на машине, поэтому рекомендации из советов по ссылке вначале статьи я не делал (там где differencing_disk = true). Теперь можно запускать машину:

PS D:\Vagrant\work> vagrant up
Bringing machine 'default' up with 'hyperv' provider...
==> default: Verifying Hyper-V is enabled...
==> default: Importing a Hyper-V instance
    default: Cloning virtual hard drive...
    default: Creating and registering the VM...
    default: Setting VM Integration Services
    default: Successfully imported a VM with name: centos-7-1-1.x86_64
==> default: Starting the machine...
==> default: Waiting for the machine to report its IP address...
    default: Timeout: 120 seconds
    default: IP: fe80::215:5aff:fe09:9c08
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 192.168.0.172:22
    default: SSH username: vagrant
    default: SSH auth method: private key
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!

Теперь можно войти по SSH на нашу машину например с помощью PuTTY. Но по логу выше видно, что метод авторизации  - private key. Поэтому нужно подложить ключик в PuTTY. 

Для этого запускаем PuTTYgen, загружаем ключик private_key из каталога d:\Vagrant\work\.vagrant\machines\default\hyperv\
и сохраняем в формате для PuTTY *.ppk и потом сохраняем для своей сессии.

Все, теперь можно работать.