3.1 KiB
3.1 KiB
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
(orvagrant provision
) and everything will be handled automatically. - Manual: First run
vagrant up
, then runansible-playbook -i hosts vytvor_uzivatele.yml
.
This setup allows you to easily manage your VM and automate tasks using both Vagrant and Ansible.