mirror of
https://gitea.com/mcereda/oam.git
synced 2026-02-09 05:44:23 +00:00
Added vagrant notes to the knowledge base
This commit is contained in:
165
knowledge base/vagrant.md
Normal file
165
knowledge base/vagrant.md
Normal file
@@ -0,0 +1,165 @@
|
||||
# Vagrant
|
||||
|
||||
|
||||
## TL;DR
|
||||
|
||||
```shell
|
||||
# start a box
|
||||
vagrant up
|
||||
|
||||
# connect to the box
|
||||
vagrant ssh
|
||||
# print the ssh config snippet to connect to the box
|
||||
vagrant ssh-config
|
||||
|
||||
# (re)provision a box
|
||||
vagrant provision
|
||||
vagrant up --provision
|
||||
|
||||
# add a box
|
||||
vagrant add archlinux/archlinux
|
||||
vagrant add debian/testing64 --provider virtualbox
|
||||
|
||||
# list downloaded boxes
|
||||
vagrant box list
|
||||
|
||||
# list outdated boxes
|
||||
vagrant box outdated
|
||||
|
||||
# update a box
|
||||
vagrant box update
|
||||
vagrant box update --box generic/gentoo
|
||||
|
||||
# remove a box
|
||||
vagrant box remove archlinux/archlinux
|
||||
|
||||
# install autocomplete
|
||||
vagrant autocomplete install --bash
|
||||
vagrant autocomplete install --zsh
|
||||
|
||||
# install a plugin
|
||||
vagrant plugin install vagrant-disksize
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
1. install using your package manager
|
||||
1. create a box:
|
||||
|
||||
```shell
|
||||
[home]$ mkdir -p "~/vagrant/archlinux"
|
||||
[home]$ cd "${_}"
|
||||
[archlinux]$ vagrant init archlinux/archlinux
|
||||
```
|
||||
|
||||
1. start the box:
|
||||
|
||||
```shell
|
||||
[archlinux]$ vagrant up
|
||||
|
||||
# re-run provisioning
|
||||
[archlinux]$ vagrant up --provision
|
||||
```
|
||||
|
||||
1. connect to the machine:
|
||||
|
||||
```shell
|
||||
[archlinux]$ vagrant ssh
|
||||
```
|
||||
|
||||
## Install autocomplete
|
||||
|
||||
```shell
|
||||
$ vagrant autocomplete install --bash
|
||||
Autocomplete installed at paths:
|
||||
- /home/user/.bashrc
|
||||
|
||||
$ vagrant autocomplete install --zsh
|
||||
Autocomplete installed at paths:
|
||||
- /home/user/.zshrc
|
||||
```
|
||||
|
||||
## Boxes management
|
||||
|
||||
```shell
|
||||
vagrant box add archlinux/archlinux
|
||||
vagrant box add archlinux/archlinux --provider virtualbox
|
||||
|
||||
vagrant box list
|
||||
|
||||
vagrant box update
|
||||
vagrant box update --box generic/gentoo
|
||||
```
|
||||
|
||||
## Customize VM settings
|
||||
|
||||
```ruby
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.box = "archlinux/archlinux"
|
||||
|
||||
config.vm.provider "virtualbox" do |vb|
|
||||
vb.memory = "3072"
|
||||
vb.customize ["modifyvm", :id, "--vram", "64"]
|
||||
vb.customize ["modifyvm", :id, "--graphicscontroller", "vmsvga"]
|
||||
end
|
||||
```
|
||||
|
||||
## Use environment variables in the provisioning script
|
||||
|
||||
Add the variables as argument of the `config.vm.provision` key:
|
||||
|
||||
```ruby
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.provision "shell", env: { "KEYBASE_USERNAME" => ENV['KEYBASE_USERNAME'], "KEYBASE_PAPERKEY" => ENV['KEYBASE_PAPERKEY'] }, inline: <<-SHELL
|
||||
pacman -Sy --noconfirm --noprogressbar \
|
||||
fzf zsh-completions \
|
||||
keybase
|
||||
pacman -Scc --noconfirm
|
||||
chsh --shell /bin/zsh vagrant
|
||||
sudo --user vagrant --preserve-env=KEYBASE_USERNAME,KEYBASE_PAPERKEY keybase oneshot
|
||||
sudo --user vagrant --preserve-env=KEYBASE_USERNAME,KEYBASE_PAPERKEY keybase git list
|
||||
SHELL
|
||||
end
|
||||
```
|
||||
|
||||
## Specify the disk size
|
||||
|
||||
Install the vagrant-disksize plugin:
|
||||
|
||||
```shell
|
||||
vagrant plugin install vagrant-disksize
|
||||
```
|
||||
|
||||
then set it up:
|
||||
|
||||
```ruby
|
||||
vagrant.configure('2') do |config|
|
||||
config.disksize.size = '50GB'
|
||||
end
|
||||
```
|
||||
|
||||
## Reboot after provision
|
||||
|
||||
Add this to the Vagrantfile:
|
||||
|
||||
```ruby
|
||||
config.vm.provision "shell", reboot: true
|
||||
```
|
||||
|
||||
## Further readings
|
||||
|
||||
- [getting started]
|
||||
- [how to set vagrant virtualbox video memory]
|
||||
- [Pass environment variables to vagrant shell provisioner]
|
||||
- [Tips & Tricks]
|
||||
- [Multi-Machine]
|
||||
- [how to specify the disk size]
|
||||
- [How do I reboot a Vagrant guest from a provisioner?]
|
||||
|
||||
[getting started]: https://learn.hashicorp.com/tutorials/vagrant/getting-started-index
|
||||
[how do i reboot a vagrant guest from a provisioner?]: https://superuser.com/questions/1338429/how-do-i-reboot-a-vagrant-guest-from-a-provisioner#1579326
|
||||
[how to set vagrant virtualbox video memory]: https://stackoverflow.com/questions/24231620/how-to-set-vagrant-virtualbox-video-memory#24253435
|
||||
[how to specify the disk size]: https://stackoverflow.com/questions/49822594/vagrant-how-to-specify-the-disk-size#60185312
|
||||
[multi-machine]: https://www.vagrantup.com/docs/multi-machine
|
||||
[pass environment variables to vagrant shell provisioner]: https://stackoverflow.com/questions/19648088/pass-environment-variables-to-vagrant-shell-provisioner#37563822
|
||||
[tips & tricks]: https://www.vagrantup.com/docs/vagrantfile/tips
|
||||
Reference in New Issue
Block a user