143 lines
3.1 KiB
Markdown
143 lines
3.1 KiB
Markdown
# 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.
|
||
```
|