
Atualmente utilizo o Vagrant e o Chef para provisionar VMs Linux individuais para diferentes aplicativos.
Esses aplicativos são endereçáveis por domínio a partir do host, sem exigir mais nada configurado no host. Isso é conseguido usando avahi no convidado Linux. O host então acessa através do nome do host do convidado, como:
myguest1.local -> VM#1
myguest2.local -> VM#2
Agora tenho outro aplicativo prestes a ser instalado, que para replicar o servidor de produção, deve ter 2 hosts virtuais Apache endereçáveis dentro de uma VM, como:
myguest3.local
-> VM#3
myguest4.local
Também posso conseguir isso completamente com o Vagrant/Chef, sem precisar de nenhuma modificação na máquina host?
Responder1
Você pode anunciar o alias por meio da API Avahi com Avahi.EntryGroup.AddRecord:exemplo de python.
Uma solução detalhada para usar o script éfornecido no SO
Responder2
Existe um plugin do Vagrant para isso: atualizador de host vagrant
Extraia da página do 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.
Há tambémvagrant-hostmanager, que oferece suporte a máquinas Windows. Eu não o usei, então qualquer feedback é bem-vindo.
Extraia da página do 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.
Parece que ambos os plugins automatizam o processo de adição de entradas ao/etc/hosts
Responder3
Certamente funcionará, mas você precisará definir manualmente as entradas para os hosts virtuais no arquivo /etc/hosts dos seus hosts. Essa deve ser a única etapa necessária na máquina host.