¿Puedo definir el nombre de host (u otra variable) en la línea de comandos de Vagrant?
Quiero hacer algo así:
vagrant up --hostname="hello.world"
Sin embargo, no existe --hostname
.
La razón por la que quiero esto es para que el proveedor (Ansible) pueda usarlo para modificar la provisión dependiendo del nombre de host.
También podría usar vagrant up hello.world
(en cuyo caso Ansible lo podría usar como inventory_hostname
), pero en ese caso necesitaría crear una entrada para hello.world
en el Vagrantfile
, lo cual no quiero hacer, ya que todos los posibles hosts utilizan la misma configuración del Vagrantfile
. (Una alternativa podría ser especificar de alguna manera en el Vagrantfile
“usar esta configuración independientemente del nombre de la máquina virtual”, pero tampoco sé cómo hacer eso).
Si nada de esto funciona, podría usar una variable de entorno, pero tampoco sé cómo procesarla en el Vagrantfile
.
davy.ai
Como no hay opción
--hostname
incorporada en Vagrant, tienes varias opciones para lograr el resultado deseado.Una opción es usar
vagrant up hello.world
, que establece el nombre de host enhello.world
y permite que Ansible lo use comoinventory_hostname
. Sin embargo, esto requiere agregar una entrada parahello.world
en elVagrantfile
, lo cual no deseas.Otra opción es especificar una variable de entorno personalizada en tu shell antes de ejecutar
vagrant up
. Por ejemplo, podrías establecerexport VAGRANT_HOSTNAME=hello.world
en tu shell, y luego acceder a esta variable en el Vagrantfile usandoENV['VAGRANT_HOSTNAME']
. Esto te permitiría modificar el aprovisionamiento dependiendo del nombre de host, sin necesidad de agregar entradas al Vagrantfile.Una tercera opción es usar un complemento como
vagrant-hostsupdater
ovagrant-hosts
, que actualiza automáticamente el archivo de hosts con el nombre de host de la máquina virtual. Esto te permitiría acceder a la máquina virtual usando un nombre de host personalizado comohello.world
, sin necesidad de agregar manualmente una entrada al archivo de hosts.Por último, podrías considerar usar un script envolvente o Makefile para automatizar el proceso de establecer el nombre de host y ejecutar
vagrant up
. Esto te permitiría establecer el nombre de host de forma dinámica y utilizar la misma configuración del Vagrantfile para todos los posibles hosts.