In questo tutorial di Vagrant impareremo su Vagrant, vagrant box, vagrantfile, strumenti di provisioning, come installare vagrant su sistemi operativi Linux e infine apprenderemo alcuni comandi base di vagrant per creare e gestire macchine virtuali dalla riga di comando.
1. Introduzione a Vagrant
Vagabondo è un software open source per la creazione e la manutenzione di ambienti di sviluppo software virtuali. Fornisce un ambiente di sviluppo pulito, facile da configurare, riproducibile e portatile. In altre parole, Vagrant ci consente di implementare facilmente e rapidamente un ambiente di sviluppo software universale che può essere utilizzato ovunque. Vagrant elimina semplicemente la scusa "lavora sulla mia macchina". Perché tutti lavorano sullo stesso ambiente con lo stesso set di configurazione. Non importa quale sistema operativo stiano utilizzando.
Vagrant viene spesso utilizzato per configurare un ambiente di lavoro identico e collaborativo per consentire agli sviluppatori di lavorare su un progetto comune. Isola tutte le dipendenze richieste e le relative impostazioni di configurazione in un unico ambiente usa e getta. Quando gli altri sviluppatori creano un ambiente di sviluppo con lo stesso file di configurazione, otterranno lo stesso ambiente con le stesse impostazioni.
Vagrant è un'applicazione multipiattaforma scritta in Ruby linguaggio. Supporta GNU/Linux, Mac OS e Microsoft Windows. È sviluppato da Hashicorp e rilasciato sotto MIT licenza.
1.1. Scatole vagabondi
La "scatola" è un formato e un'estensione per gli ambienti Vagrant. Le scatole del vagabondo sono solo le immagini di base. Possono essere un'immagine Virtualbox o un'immagine VMware o l'immagine di un provider cloud come Amazon Machine Image (AMI). Possiamo copiare le scatole dei vagabondi su qualsiasi altro sistema e impostare una replica esatta dello sviluppo attuale.
Ci sono molte scatole Vagrant preconfigurate disponibili per il download in Vagrant Cloud archivio pubblico. Se non vuoi utilizzare un box preconfigurato, creane uno a tuo piacimento e distribuiscilo a tutti tramite questo repository.
1.2. Vagrantfile
I requisiti del sistema operativo e del software sono definiti in un file di configurazione denominato "vagrantfile". Questo file è distribuito insieme alle scatole Vagrant. Quando inizializzi una VM con Vagrant, leggerà questo file e configurerà il tuo ambiente di sviluppo di conseguenza. Quindi, lo scopo effettivo di un vagrantfile è descrivere il tipo di macchina virtuale e come configurare ed eseguire il provisioning delle VM.
I seguenti dettagli sono definiti in un tipico vagrantfile:
- Versione del sistema operativo Ad es. Ubuntu bionico.
- Abilita/disabilita il controllo automatico dell'aggiornamento delle caselle.
- Configurazione di rete;
- port forwarding,
- configurare una rete privata (accesso solo host alla macchina),
- configurare la rete pubblica (rete a ponte).
- Condividi cartelle con la macchina virtuale guest.
- Imposta il provider preferito Ad es. virtualbox, kvm.
- Definisci la quantità totale di memoria per la VM.
- Abilita il provisioning con script di shell o strumenti di gestione della configurazione come Ansible.
1.3. Strumenti di fornitura
Vagrant non è una piattaforma di virtualizzazione autonoma come KVM o Virtualbox. È solo un wrapper e un front-end che si trova tra un software di virtualizzazione e una macchina virtuale. Vagrant utilizza vari fornitori di servizi e strumenti di provisioning per creare e gestire gli ambienti di sviluppo.
Le macchine virtuali sono basate su applicazioni di virtualizzazione popolari come VirtualBox, KVM, Docker, VMware ecc. e provider di servizi cloud come AWS, Azure, GCE e molti altri. Puoi visualizzare l'elenco completo dei fornitori supportati qui . Vagrant viene fornito immediatamente con il supporto per VirtualBox, Hyper-V e Docker. VirtualBox è il provider predefinito per Vagrant.
Una volta creata la macchina virtuale, possiamo installare il software su di essa utilizzando semplici script di shell e strumenti di gestione della configurazione standard del settore come Ansible, CFEngine, Chef, Docker, Podman, Puppet e Salt ecc. Gli utenti possono anche personalizzare la configurazione di ambienti virtuali secondo le loro esigenze utilizzando gli strumenti di provisioning.
In poche parole, i provider (ad es. VirtualBox, AWS) vengono utilizzati per creare un ambiente virtuale e i provider (ad es. Ansible, Puppet) vengono utilizzati per personalizzare gli ambienti virtuali.
2. Installa Vagrant su Linux
L'installazione di Vagrant è incredibilmente facile e diretta. Basta scaricare l'ultima versione dalla pagina di download di Vagrant e installarla utilizzando la procedura standard per i propri sistemi operativi. Per sapere come installare Vagrant su varie piattaforme Linux, fare riferimento al seguente link.
- Come installare Vagrant su Linux
3. Tutorial Vagrant - Comandi base di Vagrant per creare e gestire macchine virtuali
Qui, ho fornito esempi solo per i comandi Vagrant di base di cui abbiamo bisogno per configurare e gestire uno sviluppo virtualizzato. Per conoscere l'utilizzo completo di Vagrant, fare riferimento alla documentazione ufficiale fornita alla fine.
3.1. Crea directory di progetto Vagrant
Innanzitutto, dobbiamo creare una directory di progetto.
Creerò una directory chiamata myvagrants
per il mio ambiente virtuale:
$ mkdir myvagrants
Cd in quella directory per creare e archiviare macchine virtuali:
$ cd myvagrants
3.2. Inizializza l'ambiente Vagrant
Inizializza l'ambiente Vagrant usando il seguente comando:
$ vagrant init hashicorp/bionic64
Risultato di esempio:
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.
Il comando precedente inizializza la directory corrente come ambiente Vagrant predefinito e crea un file Vagrant di base.
Puoi visualizzare il contenuto del file vagrant appena creato utilizzando cat
comanda e conosci i dettagli della macchina virtuale che stai per costruire:
$ cat Vagrantfile | less
Quando avvii la VM nei passaggi successivi, scaricherà il box bionico di Ubuntu pubblicato da HashiCorp. Il team di Vagrant consiglia inoltre di utilizzare le scatole Bento . Sono open source e creati per provider popolari come Virtualbox, VMWare e Parallels. HashiCorp e Bento sono gli unici due cofanetti ufficialmente raccomandati.
3.3. Avvia la macchina virtuale
Ora crea e avvia la macchina virtuale in base al file vagrant (che abbiamo creato nel passaggio precedente) usando il comando:
$ vagrant up
Risultato di esempio:
Bringing machine 'default' up with 'virtualbox' provider... ==> default: Box 'hashicorp/bionic64' could not be found. Attempting to find and install... default: Box Provider: virtualbox default: Box Version: >= 0 ==> default: Loading metadata for box 'hashicorp/bionic64' default: URL: https://vagrantcloud.com/hashicorp/bionic64 ==> default: Adding box 'hashicorp/bionic64' (v1.0.282) for provider: virtualbox default: Downloading: https://vagrantcloud.com/hashicorp/boxes/bionic64/versions/1.0.282/providers/virtualbox.box Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com ==> default: Successfully added box 'hashicorp/bionic64' (v1.0.282) for 'virtualbox'! ==> default: Importing base box 'hashicorp/bionic64'... ==> default: Matching MAC address for NAT networking... ==> default: Checking if box 'hashicorp/bionic64' version '1.0.282' is up to date... ==> default: Setting the name of the VM: myvagrants_default_1597837509450_67666 Vagrant is currently configured to create VirtualBox synced folders with the `SharedFoldersEnableSymlinksCreate` option enabled. If the Vagrant guest is not trusted, you may want to disable this option. For more information on this option, please refer to the VirtualBox manual: https://www.virtualbox.org/manual/ch04.html#sharedfolders This option can be disabled globally with an environment variable: VAGRANT_DISABLE_VBOXSYMLINKCREATE=1 or on a per folder basis within the Vagrantfile: config.vm.synced_folder '/host/path', '/guest/path', SharedFoldersEnableSymlinksCreate: false ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Connection reset. Retrying... default: Warning: Remote connection disconnect. Retrying... default: Warning: Remote connection disconnect. Retrying... 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! ==> default: Checking for guest additions in VM... default: The guest additions on this VM do not match the installed version of default: VirtualBox! In most cases this is fine, but in rare cases it can default: prevent things such as shared folders from working properly. If you see default: shared folder errors, please make sure the guest additions within the default: virtual machine match the version of VirtualBox you have installed on default: your host and reload your VM. default: default: Guest Additions Version: 6.0.10 default: VirtualBox Version: 6.1 ==> default: Mounting shared folders... default: /vagrant => /home/sk/myvagrants
Il comando precedente scaricherà la scatola bionica di Ubuntu dal cloud Vagrant, creerà una nuova macchina virtuale denominata "myvagrants_default_1597837509450_67666" , aggiungilo a Virtualbox e avvia automaticamente la VM.
Non vedrai alcuna notifica anche se la macchina virtuale è in esecuzione. Per verificare se la VM è in esecuzione, apri l'applicazione di virtualizzazione (es. VirtualBox o Virt-manager) e controlla se la VM è in esecuzione o meno.
Poiché Vagrant utilizza Virtualbox come provider predefinito, posso vedere la VM in esecuzione dal gestore virtualbox.
Come puoi vedere, la VM bionica di Ubuntu è in esecuzione in Virtualbox.
Se utilizzi un altro provider, ad esempio Virt-manager, aprilo e controlla se la macchina Vagrant è in esecuzione.
3.4. Accedi alle macchine virtuali
Puoi connetterti e accedere alle VM in esecuzione utilizzando SSH.
Per SSH nella casella Vagrant in esecuzione usando il comando, esegui:
$ vagrant ssh
Risultato di esempio:
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-58-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Wed Aug 24 11:56:42 UTC 2020 System load: 0.08 Processes: 88 Usage of /: 2.5% of 61.80GB Users logged in: 0 Memory usage: 11% IP address for eth0: 10.0.2.15 Swap usage: 0% * Are you ready for Kubernetes 1.19? It's nearly here! Try RC3 with sudo snap install microk8s --channel=1.19/candidate --classic https://microk8s.io/ has docs and details. 0 packages can be updated. 0 updates are security updates. [email protected]:~$
3.5. Sincronizza i file locali e guest
Sincronizzazione dei file di supporto Vagrant pronta all'uso. Per impostazione predefinita, Vagrant condivide la directory del tuo progetto (quella contenente il file Vagrant. Nel mio caso, è ~/myvagrants
.) al /vagrant
directory nella tua macchina virtuale guest.
Puoi verificarlo elencando i contenuti di /vagrant
directory nella tua macchina virtuale:
[email protected]:~$ ls /vagrant/ Vagrantfile
Tieni presente che il Vagrantfile che vedi all'interno della macchina virtuale è in realtà lo stesso Vagrantfile che si trova sulla tua vera macchina host.
Per verificare se la sincronizzazione funziona effettivamente, crea un file di esempio in /vagrant
directory nella tua macchina guest:
[email protected]:~$ touch /vagrant/test.txt
Esci dalla sessione SSH della tua VM:
[email protected]:~$ logout
Ora controlla la directory del tuo progetto locale nel tuo sistema host. Vedrai che lo stesso file è stato creato anche sulla macchina host.
[email protected]:~/myvagrants$ ls test.txt Vagrantfile
3.6. Visualizza lo stato delle macchine virtuali
Per visualizzare lo stato di una macchina virtuale in un ambiente virtuale, eseguire:
$ vagrant status
Risultato di esempio:
Current machine states: default running (virtualbox) The VM is running. To stop this VM, you can run `vagrant halt` to shut it down forcefully, or you can run `vagrant suspend` to simply suspend the virtual machine. In either case, to restart it again, simply run `vagrant up`.
Come vedi sopra, ho solo una VM e ora è in esecuzione.
Se la VM è spenta, verrà visualizzato il seguente output:
Current machine states: default poweroff (virtualbox) The VM is powered off. To restart the VM, simply run `vagrant up`
3.7. Visualizza lo stato di tutti gli ambienti virtuali
Possiamo visualizzare le informazioni su tutti gli ambienti virtuali conosciuti sul nostro sistema usando il seguente comando:
$ vagrant global-status
Risultato di esempio:
id name provider state directory ------------------------------------------------------------------------- 2086482 default virtualbox poweroff /home/sk/myvagrants The above shows information about all known Vagrant environments on this machine. This data is cached and may not be completely up-to-date (use "vagrant global-status --prune" to prune invalid entries). To interact with any of the machines, you can go to that directory and run Vagrant, or you can use the ID directly with Vagrant commands from any directory. For example: "vagrant destroy 1a2b3c4d"
Il comando precedente elencherà l'ID della VM, il nome, il provider, lo stato della VM e la directory dell'ambiente virtuale.
A volte l'output potrebbe essere memorizzato nella cache e potrebbe non essere corretto. Quindi, esegui il comando seguente per rimuovere le voci non valide e ottenere lo stato aggiornato dell'ambiente virtuale:
$ vagrant global-status --prune
3.8. Sospendere le macchine virtuali
Per sospendere una macchina virtuale in esecuzione, esegui:
$ vagrant suspend
Risultato di esempio:
==> default: Saving VM state and suspending execution…
3.9. Riprendi le macchine virtuali
Per ripristinare una macchina virtuale sospesa nell'ambiente virtuale corrente, eseguire:
$ vagrant resume
Risultato di esempio:
==> default: Resuming suspended VM... ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key ==> default: Machine booted and ready! ==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> default: flag to force provisioning. Provisioners marked to run always will still run.
3.10. Riavvia le macchine virtuali
Per riavviare una macchina virtuale in esecuzione, procedere come segue:
$ vagrant reload
Questo comando arresterà la macchina virtuale e la riavvierà.
3.11. Arresta/Spegni le macchine virtuali
Per arrestare o arrestare una VM in esecuzione, procedere come segue:
$ vagrant halt
3.12. Elimina macchine virtuali
Per interrompere ed eliminare tutte le tracce di una macchina virtuale, eseguire:
$ vagrant destroy
Digita y
e premi INVIO per eliminare la macchina virtuale.
Se vuoi eliminare la VM senza alcuna conferma, esegui:
$ vagrant destroy -f
3.13. Ripristina macchine virtuali
A volte, potresti voler ripristinare la tua macchina virtuale al suo stato originale, senza eliminare effettivamente la casella. Questo può essere utile per distribuire un ambiente virtuale pulito senza dover scaricare ripetutamente una scatola vagante.
Per ripristinare una macchina virtuale al suo stato originale, fai semplicemente:
$ vagrant destroy
$ vagrant up
Il primo comando arresterà la macchina virtuale in esecuzione ed eliminerà tutte le risorse ad essa associate. E il secondo comando ricreerà una nuova macchina virtuale usando la casella vagabondo esistente.
Per maggiori dettagli, fare riferimento al seguente link:
- Come ripristinare la macchina virtuale Vagrant allo stato originale
3.14. Esegui i comandi Vagrant da qualsiasi directory
Di solito, avviamo, fermiamo, ricarichiamo ed eliminiamo una macchina Vagrant dalla directory del suo progetto, giusto? Sì! Tuttavia, possiamo eseguire i comandi Vagrant da qualsiasi directory utilizzando l'ID della macchina Vagrant.
Per trovare l'ID della macchina Vagrant, esegui il seguente comando:
$ vagrant global-status
Risultato di esempio:
id name provider state directory ---------------------------------------------------------------------- ddc1a10 default libvirt shutoff /home/sk/Vagrant/Ubuntu2004 f4904ad default libvirt shutoff /home/sk/Vagrant/Archlinux 831f9c0 default libvirt shutoff /home/sk/Vagrant/Gentoo 3587422 default libvirt shutoff /home/sk/Vagrant/Rhel8 b2279ad default libvirt shutoff /home/sk/Vagrant/Almalinux8 The above shows information about all known Vagrant environments on this machine. This data is cached and may not be completely up-to-date (use "vagrant global-status --prune" to prune invalid entries). To interact with any of the machines, you can go to that directory and run Vagrant, or you can use the ID directly with Vagrant commands from any directory. For example: "vagrant destroy 1a2b3c4d"
Come puoi vedere nell'output sopra, vagrant global-status
comando mostra i dettagli di tutti gli ambienti virtuali conosciuti nel mio sistema. La prima colonna nell'output sopra mostra l'ID di ogni macchina Vagrant.
Puoi utilizzare l'ID direttamente con i comandi Vagrant da qualsiasi directory. Ad esempio, per avviare una macchina Vagrant da qualsiasi directory, possiamo semplicemente utilizzare:
$ vagrant up b2279ad
Questo avvierà la macchina vagabondo che ID b2279ad
.
Allo stesso modo, possiamo usare anche altri comandi Vagrant.
$ vagrant status b2279ad
$ vagrant ssh b2279ad
$ vagrant halt b2279ad
$ vagrant destroy b2279ad
3.15. Elenca le caselle Vagrant
Per elencare tutte le caselle disponibili installate con Vagrant, esegui:
$ vagrant box list
Risultato di esempio:
hashicorp/bionic64 (virtualbox, 1.0.282)
Se desideri visualizzare alcuni dettagli aggiuntivi della casella come nome dell'autore, sito Web, repository, descrizione ecc., utilizza -i
bandiera:
$ vagrant box list -i
Risultato di esempio:
generic/alpine38 (virtualbox, 3.1.16) - Author: Ladar Levison - Website: https://roboxes.org/ - Artifacts: https://vagrantcloud.com/generic/ - Repository: https://github.com/lavabit/robox/ - Description: Basic virtual machine images, for a variety of operating systems/hypervisors, and ready to serve as base bxoes.
3.16. Controlla se una casella Vagrant è obsoleta
Per verificare se la casella che stai utilizzando nel tuo ambiente vagrant è obsoleta, vai all'ambiente Vagrant, ovvero la directory del progetto,
$ cd myvagrants/
ed esegui:
$ vagrant box outdated Checking if box 'hashicorp/bionic64' version '1.0.282' is up to date…
3.17. Aggiorna le caselle Vagrant
Se ci sono caselle obsolete, puoi aggiornarle come di seguito:
$ vagrant box update
Risultato di esempio:
==> default: Checking for updates to 'hashicorp/bionic64' default: Latest installed version: 1.0.282 default: Version constraints: default: Provider: virtualbox ==> default: Box 'hashicorp/bionic64' (v1.0.282) is running the latest version.
3.18. Scarica le scatole Vagrant
L'vagrant init
il comando inizializza e avvia l'ambiente Vagrant scaricando la rispettiva casella Vagrant definita nel Vagrantfile.
Puoi anche scaricare manualmente la casella Vagrant e modificarne il file vagrant e quindi avviarlo.
Per scaricare un box Vagrant, esegui:
$ vagrant box add bento/debian-10.5
Il comando precedente scaricherà la versione Debian 10.5 pubblicata da Bento. Ti verrà chiesto di scegliere il provider (es. virtualbox o vmware) che stai attualmente utilizzando. Basta sceglierne uno e premere INVIO per scaricare la casella.
Risultato di esempio:
==> box: Loading metadata for box 'bento/debian-10.5' box: URL: https://vagrantcloud.com/bento/debian-10.5 This box can work with multiple providers! The providers that it can work with are listed below. Please review the list and choose the provider you will be working with. 1) parallels 2) virtualbox 3) vmware_desktop Enter your choice: 2 ==> box: Adding box 'bento/debian-10.5' (v202008.16.0) for provider: virtualbox box: Downloading: https://vagrantcloud.com/bento/boxes/debian-10.5/versions/202008.16.0/providers/virtualbox.box Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com ==> box: Successfully added box 'bento/debian-10.5' (v202008.16.0) for 'virtualbox'
Puoi verificarlo elencando le caselle disponibili:
$ vagrant box list
Risultato di esempio:
bento/debian-10.5 (virtualbox, 202008.16.0) hashicorp/bionic64 (virtualbox, 1.0.282)
Tutti i box Vagrant scaricati saranno disponibili in ~/.vagrant.d/boxes
directory nel tuo sistema host.
3.19. Visualizza le dimensioni delle scatole Vagrant
Come indicato nella sezione precedente, le scatole Vagrant scaricate sono archiviate in ~/.vagrant.d/boxes
directory.
Puoi visualizzare l'elenco di tutte le scatole scaricate in questa directory usando il comando:
$ ls ~/.vagrant.d/boxes almalinux-VAGRANTSLASH-8 generic-VAGRANTSLASH-debian10 archlinux-VAGRANTSLASH-archlinux generic-VAGRANTSLASH-gentoo centos-VAGRANTSLASH-8 generic-VAGRANTSLASH-rhel8
Per trovare le dimensioni delle singole scatole Vagrant, usa du
comando con -h
segnala come di seguito:
589M /home/sk/.vagrant.d/boxes/archlinux-VAGRANTSLASH-archlinux/20210601.24453/libvirt 589M /home/sk/.vagrant.d/boxes/archlinux-VAGRANTSLASH-archlinux/20210601.24453 589M /home/sk/.vagrant.d/boxes/archlinux-VAGRANTSLASH-archlinux 1.1G /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-rhel8/3.3.2/libvirt 1.1G /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-rhel8/3.3.2 1.1G /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-rhel8 1.6G /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-gentoo/3.2.24/libvirt 1.6G /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-gentoo/3.2.24 1.6G /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-gentoo 1.6G /home/sk/.vagrant.d/boxes/centos-VAGRANTSLASH-8/2011.0/libvirt 1.6G /home/sk/.vagrant.d/boxes/centos-VAGRANTSLASH-8/2011.0 1.6G /home/sk/.vagrant.d/boxes/centos-VAGRANTSLASH-8 998M /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-debian10/3.3.4/libvirt 998M /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-debian10/3.3.4 998M /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-debian10 628M /home/sk/.vagrant.d/boxes/almalinux-VAGRANTSLASH-8/8.4.20210724/libvirt 628M /home/sk/.vagrant.d/boxes/almalinux-VAGRANTSLASH-8/8.4.20210724 629M /home/sk/.vagrant.d/boxes/almalinux-VAGRANTSLASH-8 6.4G /home/sk/.vagrant.d/boxes
Per visualizzare l'utilizzo del riepilogo totale, eseguire:
$ du -sh ~/.vagrant.d/boxes 6.4G /home/sk/.vagrant.d/boxes
3.20. Aggiungi il file .box scaricato a Vagrant
Molte distribuzioni Linux sono distribuite tramite box Vagrant preconfigurati. Quindi puoi prendere rapidamente la scatola del vagabondo ed eseguirla utilizzando la rispettiva applicazione di virtualizzazione. Per maggiori dettagli, fare riferimento alla seguente guida:
- Come aggiungere il file .box scaricato a Vagrant in Linux
3.21. Crea una macchina virtuale usando Vagrant box
Per creare una nuova VM con il box appena scaricato, vai nella directory del tuo progetto e inizializza l'ambiente vagrant con il comando:
$ vagrant init
Avviso :Elimina il file Vagrant esistente prima di inizializzare un nuovo ambiente Vagrant.
Questo creerà un nuovo Vagrantfile nella directory corrente.
Modifica il file Vagrant e aggiorna i dettagli della VM e sostituisci la seguente riga:
Vagrant.configure("2") do |config| [...] config.vm.box = "base" [...]
con quanto segue:
config.vm.box = "bento/debian-10.5"
Puoi specificare in modo esplicito la versione per la nuova VM aggiungendo le seguenti righe:
config.vm.box = "bento/debian-10.5" config.vm.box_version = "1.0"
Puoi anche specificare l'URL di download:
config.vm.box = "bento/debian-10.5" config.vm.box_version = "1.0" config.vm.box_url = "https://app.vagrantup.com/bento/boxes/debian-10.5/"
Ora crea e avvia la VM basata su questo Vagrantfile con il comando:
$ vagrant up
In alternativa, puoi menzionare direttamente il nome della casella durante l'inizializzazione dell'ambiente Vagrant. Questo può essere utile se hai più di una casella vagabondo.
Per prima cosa, elenca le caselle vagabonde disponibili usando il comando:
$ vagrant box list
Risultato di esempio:
Fedora33 (libvirt, 0) archlinux/archlinux (virtualbox, 20201201.10292) fedora33 (virtualbox, 0) generic/alpine38 (virtualbox, 3.1.16) oraclelinux/7 (virtualbox, 7.9.184) oraclelinux/8 (libvirt, 8.3.183)
Lascia che tu voglia creare una macchina virtuale da una casella denominata "generic/alpine38". Per farlo, esegui semplicemente:
$ vagrant init generic/alpine38
Questo comando creerà un nuovo Vagrantfile e inizializzerà l'ambiente Vagrant con una determinata configurazione della casella. Non è necessario modificare manualmente Vagrantfile e aggiornare i dettagli della casella.
Quindi, avvia la macchina virtuale usando il comando:
$ vagrant up
3.22. Usa Vagrant con il provider KVM Libvirt
Come ho già affermato, Vagrant utilizza Virtualbox per eseguire macchine virtuali per impostazione predefinita. È anche possibile dire a Vagrant di utilizzare un altro provider, ad esempio Libvirt KVM , per eseguire VM usando vagrant-libvirt collegare. Questo plugin aggiunge il provider Libvirt a Vagrant e consente a Vagrant di controllare e fornire macchine tramite Libvirt. Per informazioni su come utilizzare libvirt come provider Vagrant, fare riferimento alla seguente guida:
- Come utilizzare Vagrant con il provider KVM Libvirt
3.23. Configura la rete in Vagrant
Per fornire l'accesso alla rete tra le macchine ospiti e il sistema host, Vagrant offre le seguenti tre opzioni:
- Port forwarding
- Rete privata (rete solo host)
- Rete pubblica (rete con bridge)
Ogni opzione ha i suoi alti e bassi. Puoi configurare una o tutte le opzioni di rete Vagrant come descritto nella seguente guida:
- Come configurare la rete in Vagrant
3.24. Trova l'indirizzo IP della macchina Vagrant dal sistema host
Per trovare l'indirizzo IP di una macchina Vagrant, di solito ci inseriamo e troviamo il suo indirizzo IP usando ip
o ifconfig
comandi. Possiamo anche ottenere direttamente dall'host l'indirizzo IP di una macchina Vagrant in esecuzione, come descritto nel seguente link:
- Come trovare l'indirizzo IP della macchina Vagrant dall'host
3.25. Aumenta la memoria e la CPU sulla macchina Vagrant
Hai problemi di prestazioni con la tua macchina Vagrant? Probabilmente è a causa di memoria o CPU insufficienti. Aggiungi semplicemente più RAM e core CPU alla macchina Vagrant per migliorarne le prestazioni, come mostrato nel seguente link.
- Come aumentare la memoria e la CPU su una macchina Vagrant
3.26. Rimuovi le scatole Vagrant obsolete
Potresti aver scaricato diverse versioni di scatole Vagrant e alcune di esse potrebbero essere piuttosto obsolete! Se non sono più necessari, puoi tranquillamente eliminare le vecchie versioni delle scatole Vagrant installate come descritto nel seguente link.
- Come eliminare le scatole di vagabondi obsolete in Linux
3.27. Elimina definitivamente le caselle Vagrant
Per rimuovere una scatola vagabondo, ad esempio hashicorp/bionic64, esegui:
$ vagrant box remove hashicorp/bionic64
Digita y
e premi ENTER
per confermare l'eliminazione:
Box 'hashicorp/bionic64' (v1.0.282) with provider 'virtualbox' appears to still be in use by at least one Vagrant environment. Removing the box could corrupt the environment. We recommend destroying these environments first: default (ID: 20864823c72f45568d251070b5ce2661) Are you sure you want to remove this box? [y/N] y Removing box 'hashicorp/bionic64' (v1.0.282) with provider 'virtualbox'…
Se non conosci il nome della casella, esegui il seguente comando per elencare tutte le scatole installate:
$ vagrant box list
A questo punto, dovresti aver appreso le basi dell'uso di Vagrant. Vagrant è un argomento vasto e cercherò di coprire il più possibile nei nostri prossimi articoli. Resta sintonizzato!
4. Risoluzione dei problemi Vagrant
Questa sezione affronta alcuni problemi comuni di Vagrant.
4.1. Vagrant non è riuscito a inizializzarsi in una fase molto precoce
La tua macchina Vagrant non si è avviata? Nessun problema! Questo è uno dei problemi più comuni dei vagabondi. Ciò potrebbe essere dovuto a plug-in obsoleti o la directory di Vagrant HOME potrebbe essere stata spostata in una posizione diversa. Per risolvere questo problema, fai riferimento alla seguente guida:
- Come risolvere l'errore "Vagrant non è riuscito a inizializzarsi in una fase molto precoce" in Linux
4.2. Impossibile accedere al file di archiviazione, autorizzazione negata Errore in KVM Libvirt
A volte, potresti non avviare una macchina Vagrant e finire con un errore simile a questo - Failed to start domain 'Archlinux_default' error: Cannot access storage file '/home/sk/.local/share/libvirt/images/Archlinux_default.img' (as uid:107, gid:107): Permission denied
.
Questo errore di solito si verifica quando il qemu
l'utente non dispone dell'autorizzazione di lettura per la directory di archiviazione Libvirt. Per risolvere questo problema, fai riferimento alla seguente guida:
- [Risolto] Impossibile accedere al file di archiviazione, autorizzazione negata Errore in KVM Libvirt
5. Conclusione
In questa guida completa, abbiamo appreso cos'è Vagrant e le terminologie vagrant come vagrant box, vagrantfile e strumenti di approvvigionamento. Abbiamo anche imparato come installare vagrant sui sistemi operativi Linux e infine abbiamo discusso alcuni comandi base di vagrant per creare e gestire macchine virtuali dalla riga di comando in Linux.
Se sei un ingegnere DevOps, sapere come usare Vagrant sarà molto utile. Vagrant è uno degli strumenti importanti che dovresti avere sul tuo sistema.