В настоящее время я использую Vagrant и Chef для выделения отдельных виртуальных машин Linux для разных приложений.
Эти приложения адресуются в домене с хоста, не требуя дополнительной настройки на хосте. Это достигается с помощью avahi в гостевой системе linux. Затем хост обращается через гостевое имя хоста, например:
myguest1.local -> VM#1
myguest2.local -> VM#2
Теперь у меня есть еще одно приложение, которое нужно установить, которое для репликации рабочего сервера должно иметь 2 виртуальных хоста Apache, адресуемых в одной виртуальной машине, например:
myguest3.local
-> VM#3
myguest4.local
Могу ли я полностью достичь этого с помощью Vagrant / Chef, без каких-либо изменений в хост-машине?
Для этого есть плагин Vagrant: бродяга
Извлечение со страницы github:
This plugin adds an entry to your /etc/hosts file on the host system.
On up, resume and reload commands, it tries to add the information, if its not already existant in your hosts file. If it needs to be added, you will be asked for an administrator password, since it uses sudo to edit the file.
On halt and destroy, those entries will be removed again.
А также есть бродяга-хозяин, который поддерживает машины с Windows. Я им не пользовался, поэтому любые отзывы приветствуются.
Выдержка со страницы github:
vagrant-hostmanager is a Vagrant 1.1+ plugin that manages the /etc/hosts file on guest machines (and optionally the host). Its goal is to enable resolution of multi-machine environments deployed with a cloud provider where IP addresses are not known in advance.
Кажется, что оба плагина автоматизируют процесс добавления записей в /etc/hosts
Это, безусловно, сработает, но вам нужно будет вручную установить записи для виртуальных хостов в файле / etc / hosts вашего хоста. Это должен быть единственный шаг, необходимый на хост-машине.
Вы можете объявить псевдоним через Avahi API с помощью Avahi.EntryGroup.AddRecord: пример Python.
Подробное решение для использования скрипта: предоставлено на SO