Files
Vagrant/README.md

3.1 KiB
Raw Permalink Blame History

README.md

Prerequisity

# Add the official HashiCorp tap for the latest Vagrant
brew tap hashicorp/tap

# Install Vagrant (latest version from HashiCorp tap)
brew install hashicorp/tap/hashicorp-vagrant

# Install the Vagrant VMware Utility (required for VMware provider integration)
brew install --cask vagrant-vmware-utility

# Install the Vagrant VMware Desktop plugin
vagrant plugin install vagrant-vmware-desktop

# (Optional) Install Vagrant from Homebrew cask if you prefer the cask version
# brew install --cask vagrant

# Check Vagrant version to verify installation
vagrant --version

List installed Vagrant plugins to verify plugin installation vagrant plugin list

Project Structure

/
├── Vagrantfile
├── vytvor_uzivatele.yml
└── hosts
  • Vagrantfile Defines the virtual machine.
  • vytvor_uzivatele.yml Ansible playbook for creating a user.
  • hosts Ansible inventory (used for manual runs).

1. Starting the VM with Vagrant

First Boot or VM Creation

vagrant up
  • This command downloads the required box (e.g., bento/ubuntu-22.04), creates, and starts the VM as defined in your Vagrantfile.
  • If you have configured Ansible as a provisioner in the Vagrantfile, the playbook will run automatically after the VM is created.

Re-running Provisioning

If you want to re-run provisioning (for example, after editing the playbook):

vagrant provision

2. Running Ansible Manually

If you prefer more control, you can run Ansible manually.

Step 1: Start the VM

vagrant up

Step 2: Get SSH Connection Details

vagrant ssh-config kube01
  • Copy the relevant values into the hosts inventory file if they are not already set.

Step 3: Run the Ansible Playbook

ansible-playbook -i hosts vytvor_uzivatele.yml
  • This command will execute the tasks defined in the playbook on your VM.

3. Example Files

Vagrantfile (with Ansible provisioner)

Vagrant.configure("2") do |config|
  config.vm.define "kube01" do |kube01|
    kube01.vm.box = "bento/ubuntu-22.04"
    kube01.vm.hostname = "kube01"
    kube01.vm.provider "vmware_fusion" do |v|
      v.gui = false
      v.memory = 2048
      v.cpus = 2
    end
    kube01.vm.provision "ansible" do |ansible|
      ansible.playbook = "vytvor_uzivatele.yml"
      ansible.verbose = true
    end
  end
end

vytvor_uzivatele.yml

---
- hosts: all
  become: yes
  tasks:
    - name: Add user "novyuzivatel"
      user:
        name: novyuzivatel
        shell: /bin/bash
        create_home: yes

hosts (inventory for manual run)

[kube]
kube01 ansible_host=127.0.0.1 ansible_port=2222 ansible_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/kube01/vmware_fusion/private_key

Summary

  • Automatic: Run vagrant up (or vagrant provision) and everything will be handled automatically.
  • Manual: First run vagrant up, then run ansible-playbook -i hosts vytvor_uzivatele.yml.

This setup allows you to easily manage your VM and automate tasks using both Vagrant and Ansible.