vmmanager

command module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 25, 2023 License: BSD-3-Clause, MIT Imports: 1 Imported by: 0

README

vmware fusion player/pro Manual for Mac OS X

Intro

We would like to use vmware fusion to run a vm where we can provision docker + setup build systems and sync our sources.

vmware Fusion

vmware fusion is a vm manager for mac os utilizing native virtualization.framework with support for both amd64 and arm64 based macs.

Install vmware fusion and other requirements
brew install --cask vmware-fusion
brew install qemu

Visit vmware fusion website to get a free license for non commercial fusion usage. If you want to use it for business pls make sure to buy a license.

https://www.vmware.com/go/get-fusionplayer-key

Get ubuntu cloud image

Ubuntu cloud are hosted images daily built by ubuntu for their releases. They can be found here. LAtest LTS release is jammy. These images are for arm64 architecture built as qcow2 disks for qemu. To use it in vmware fusion we have to convert it to vmdk this is where we can use qemu-imgtool.

wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-arm64.img
qemu-img convert -p -f qcow2 -O vmdk ubuntu-22.04-server-cloudimg-arm64.img ubuntu-22.04-server-cloudimg-arm64.vmdk

Prepare VM for usage

Converted VM images can be added to newly created VM templates and will boot instantly. They expect to run on a cloud and that's why we have to provide them with some initial cloud-init information to provision our user. Cloud-init tools has an excellent manual about that here.

mkdir /tmp/seed
echo -e "instance-id: iid-local01\nlocal-hostname: cloudimg" > /tmp/seed/meta-data
echo -e "#cloud-config\nhostname: cloudimg\npassword: passw0rd\nchpasswd: { expire: False }\nssh_pwauth: True\n" > /tmp/seed/user-data

hdiutil makehybrid -o /tmp/seed.iso -hfs -joliet -iso -default-volume-name cidata /tmp/seed/

Initial boot

Before we boot our vm for a first time we need to attach created seed.iso file to it as a CD. After first boot with CD iso image attached our default user will have a new password set passw0rd.

First login

After initial boot try to login to VM with your default user e.g. ubuntu and new password. If this works you can figure out VM ip address from a gui window or you can use following command. You can find vmrun documentation here.

vmrun list

# Command below will get you an ip address of a first vm you run.
vmrun getGuestIPAddress $(vmrun list | grep vmx | head -n 1)

Usage and administration

Configuring static ip address

To properly configure static ip address to our vmware fusion vm we first need to figure out actual ip/dhcpd setup. We can do it with following commands.

# Use command to list all vmnet-dhcpd processes look for different instances and check for a `vmnet8` interface.
ps ax | grep vmnet

For my instalation path to configuration file looks like this: /Library/Preferences/VMware Fusion/vmnet8/dhcpd.conf.

❯ cat '/Library/Preferences/VMware Fusion/vmnet8/dhcpd.conf' | grep range
range 192.168.240.128 192.168.240.254;

DHCPd configuration file above is configured to only server ips from range 192.168.240.128 192.168.240.254. If we want to statically assign ip it should be lower than `> 192.168.240.5 and <= 192.168.240.127.

Use /etc/systemd/network/interface_name.network file to configure it.

[Match]
# You can also use wildcards. Maybe you want enable dhcp
# an all eth* NICs
Name=eth0
[Network]
#DHCP=v4
# static IP
# 192.168.100.2 netmask 255.255.255.0
Address=192.168.100.2/24
Gateway=192.168.100.1
DNS=192.168.100.1

Using vmrun to manipulate vm state
vmrun start /Devel/vms/primary.vmwarevm/primary.vmx nogui
vmrun stip /Devel/vms/primary.vmwarevm/primary.vmx

Setup Mutagen to automatically sync your files to new machine
Host linux
    Hostname            192.168.168.5
    User                haad
    Ciphers             aes128-ctr,aes256-ctr,chacha20-poly1305@openssh.com
    ForwardAgent        yes
    TCPKeepAlive        yes
    ServerAliveInterval 10
    ServerAliveCountMax 300
    Compression         yes
    IdentityFile        ~/.ssh/id_key
mutagen sync create --name=php ~/Devel/php linux:~/Devel/php
mutagen sync create --name=pixel ~/Devel/chilli/pixel linux:~/chilli/pixel
mutagen sync create --name=go ~/Devel/go/src/github.com/haad linux:~/Devel/go/src/github.com/haad
Using docker from mac machine

Set DOCKER_HOST in your environment and use you use docker command directly from mac.

DOCKER_HOST=ssh://linux

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL