---
level: 2
---

# Getting Started

... with Vagrant


````md magic-move {lines: true}

```bash
cd ~/projects
git clone https://codeberg.org/headshed/infctl-cli.git
```

```bash
cd infctl-cli/vagrant/dev/ubuntu
pwd
/home/user/projects/infctl-cli/vagrant/dev/ubuntu
```

```bash
vagrant up
Bringing machine 'vm1' up with 'virtualbox' provider...
Bringing machine 'vm2' up with 'virtualbox' provider...
Bringing machine 'vm3' up with 'virtualbox' provider...
Bringing machine 'workstation' up with 'virtualbox' provider...
==> vm1: Checking if box 'ubuntu/jammy64' version '20241002.0.0' is up to date...
==> vm1: Clearing any previously set network interfaces...
==> vm1: Available bridged network interfaces:
1) wlp0s20f3
2) docker0
3) br-9ebcfa7b8ec0
4) br-b036d14629a8
5) veth9ae7cf3
==> vm1: When choosing an interface, it is usually the one that is
==> vm1: being used to connect to the internet.
==> vm1: 
    vm1: Which interface should the network bridge to? 
```



```bash 
cd ../../..
export LOG_FORMAT=none 
export VAGRANT_BRIDGE=wlp0s20f3

infctl -f pipelines/dev/vagrant-k3s.json
🔄 Running step: Create Vagrant nodes
🐞 Running command: ./scripts/install_vagrant_nodes.sh

```



````
<div v-click>

Lets see what this looks like for real in a [Demo](http://ascii.headshed.dev/a/ISIOKVA1AmckG2muwOMUOG4z5)

</div>

<div v-click>

Lets  [try again](http://ascii.headshed.dev/a/bUzNNojNjkxytfDT6cRqhSVwN)

</div>


<!--

Let's see how to get started with vagrant

We use Vagrant to stand up a cluster of 3 nodes and a workstation locally

Vagrant by default uses Virtualbox which works across Windows, Linux and Mac

Git cloning the `infctl-cli` repository gets us the starter files

changing to the vagrant folder we can use `vagrant up` to see what would happen **without** `infctl`

we see the first gotcha in any automation process - where the tooling does not know what to do and asks the user for input

This in IaC is an epic fail and we need to copy the name of the interface we want to use for the external network in our test case and export it as an environment variable

export VAGRANT_BRIDGE=wlp0s20f3

sets to a device on the example system

which allows us now to run `infctl` with a deployment file 

lets see what this looks like for real

....

-->