
Очень часто в разработке возникает необходимость поднять локальное окружение для отладки каких-либо рабочих моментов. В своей работе я постоянно пользуюсь Долгое время я оставался пользователем MacBook на процессоре Intel, но больше так продолжаться не могло – пришлось сменить компьютер, хотя я и знал о некоторых особенностях работы М1 с виртуальными машинами. В этой статье я расскажу, как настроить и запустить Vagrant на процессорах Apple M1/M2 и вернуться в привычный рабочий режим. Rosetta 2: позволяет компьютерам Mac с процессорами Apple использовать приложения, созданные для компьютеров Mac с процессорами Intel. Vagrant (2.3.0+): программное обеспечение для создания и конфигурирования виртуальной среды разработки. Является обёрткой для программного обеспечения виртуализации, например VirtualBox, и средств управления конфигурациями, таких как Chef, Salt и Puppet. Vagrant-vmware-desktop (3.0.1+): Плагин, который позволяет вагранту контролировать VMware-based машины, обеспечивая более высокую стабильность и производительность, чем ПО от VMware. Vagrant vmware utility (1.0.21+): Сервис предоставляющий vagrant-vmware-desktop e доступ к различным функциям VMware. Так же используется для выполнения операций, требующих привилегированного доступа на хосте, сетевых операций и верификации машин. Гипервизор (VMware Fusion Public Tech Preview 22H2): Гипервизор виртуальных машин Первым делом, нужно установить Rosetta 2, для этого выполним следующую команду: Далее, необходимо установить сам Vagrant. Это можно сделать скачав его с официального сайта https://www.vagrantup.com/downloads – выбрав MacOS и установив dmg, либо через brew, выполнив команду: Проверить, что Vagrant работает можно также из консоли: Тут начинаются первые приколы, но обо всём по порядку. Просто так взять и скачать с сайта VMWare – мы не можем. Но можем посмотреть актуальную версию. Переходим на сайт https://customerconnect.vmware.com/downloads/get-download?downloadGroup=FUS-PUBTP-22H2, там находим и записываем цифры: После этого, можем скачать данный файл по ссылке, заменив версию на актуальную. Например, можно использовать команду: В качестве альтернативы, можно поставить через brew: Но это еще не всё. Дело в том, что «Tech preview» устанавливается по собственному пути ( Страница, посвященная данной утилите: https://developer.hashicorp.com/vagrant/docs/providers/vmware/vagrant-vmware-utility, но можно просто перейти по следующей ссылке, скачать и установить последнюю версию https://developer.hashicorp.com/vagrant/downloads/vmware. В качестве альтернативы, можно снова воспользоваться brew: После установки рекомендую проверить работоспособность утилиты, кстати, таким же образом её можно дебажить чтобы понять, что не работает (я так и узнал про несоответствие путей установки): В выводе может получиться ошибка, что порт 9922 уже занят. Такое случается, если утилита уже включилась и работает. Её можно выключить и подебажить. Проверить заняты ли порты: Выгрузить утилиту: Загрузить утилиту обратно: Также, проверить работоспособность утилиты можно командой: Для установки плагина просто выполняем команду: На этом инсталляция завершена, пора попробовать запустить виртуальную машину. Далее, самое сложное 🙂 В целом, всё вышеперечисленное может пройти без ошибок, но машина всё равно не запустится. Я перепробовал множество вариантов, комбинаций и настроек spox/ubuntu-arm и bytesguy/ubuntu-server-20.04-arm64 GUI Сеть Создаем директорию для конфигурации нашей будущей машины и Vagrantfile в ней. Итоговый Vagrantfile получается следующим: Выполняем запуск машины обычной командой Подключаемся к свежесозданной машине через На этом всё, надеюсь моё руководство помогло вам сэкономить нервы и время. Желаю вам приятного пользования ноутбуком и до новых встреч 🙂 Ну а если вы увлекаетесь DevOps и системным администрированием – жду вас у себя в ламповом сообществе в телеграмм: https://t.me/deusops
Рабочая инсталляция

Установка
1. Rosetta
/usr/sbin/softwareupdate --install-rosetta --agree-to-license2. Vagrant
brew install vagrantvagrant -v ✔ vagrant global-status
3. Гипервизор

wget https://download3.vmware.com/software/FUS-PUBTP-22H2/VMware-Fusion-e.x.p-#{version}_universal.dmgbrew install --cask vmware-fusion/Applications/VMWare Fusion Tech Preview.app), а провайдеры вагранта будут искать VMWare по стандартному (/Applications/VMWare Fusion.app). Чтобы исправить это недоразумение, воспользуемся командой:ln -s /Applications/VMWare\ Fusion\ Tech\ Preview.app /Applications/VMWare\ Fusion.app4. Vagrant vmware utility
brew install vagrant-vmware-utilitysudo /opt/vagrant-vmware-desktop/bin/vagrant-vmware-utility api -debugsudo lsof -i -P | grep LISTEN | grep 'vagrant-v'
sudo launchctl unload -w /Library/LaunchDaemons/com.vagrant.vagrant-vmware-utility.plistsudo launchctl load -w /Library/LaunchDaemons/com.vagrant.vagrant-vmware-utility.plistsudo launchctl list | grep vagrant
5. Vagrant VMWare Plugin
vagrant plugin install vagrant-vmware-desktopЗапуск виртуальной машины
По причинам, которые я пока не смог выяснить (подскажите в комментариях!) – виртуальная машина не стартует, если GUI выключен (а он выключен по-умолчанию). В виду этой особенности, приходится добавлять параметр vmware.gui = true в конфигурации Vagrantfile
Когда ваша машина уже практически работает, вагрант может предательски замереть на шаге ==> default: Waiting for the VM to receive an address...
Решение было найдено – указать vmware.vmx["ethernet0.virtualdev"] = «vmxnet3» в конфигурации VagrantfileVagrant.configure("2") do |config| config.vm.box = "spox/ubuntu-arm" config.vm.box_version = "1.0.0" config.vm.provider :vmware_desktop do |vmware| vmware.gui = true vmware.cpus = 2 vmware.vmx["ethernet0.virtualdev"] = "vmxnet3" vmware.ssh_info_public = true vmware.linked_clone = false end endvagrant up:
vagrant ssh:
Полезные источники
ссылка на оригинал статьи https://habr.com/ru/company/bar/blog/708950/
Добавить комментарий