mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-19 01:06:27 +00:00
Added VMware documentation
Signed-off-by: Dan Finneran <daniel.finneran@gmail.com>
This commit is contained in:
parent
c6a0423309
commit
0c1776303b
@ -1,13 +1,107 @@
|
||||
# LinuxKit with VMware Fusion and vCenter
|
||||
|
||||
TBD
|
||||
LinuxKit interacts with VMware desktop products (Fusion/Workstation) through the
|
||||
`vmrun` utility that is preinstalled with the desktop products. The interaction
|
||||
for VMware vSphere (single hypervisor) or VMware vCenter (vSphere management
|
||||
platform) is performed through the XML SOAP API using the govmomi SDK.
|
||||
|
||||
## Boot
|
||||
Links:
|
||||
|
||||
- [VMware govmomi](https://github.com/vmware/govmomi)
|
||||
- [VMware vmrun](https://www.vmware.com/support/ws55/doc/ws_learning_cli_vmrun.html)
|
||||
|
||||
|
||||
Supported (Tested) versions:
|
||||
|
||||
- VMware Fusion 8.0/8.5
|
||||
- VMware vSphere 6.0/6.5
|
||||
- VMware vCenter 6.0
|
||||
|
||||
|
||||
## Run
|
||||
### VMware Workstation/Fusion
|
||||
The backend `vmware` currently supports the booting of a `.vmdk` file that is
|
||||
created through the `moby build -o vmdk` command and is typically called with
|
||||
`linuxkit run vmware <args> ./path`.
|
||||
|
||||
The WS/Fusion backend will construct a config version 8 (Hardware version 12)
|
||||
`.vmx` file from the arguments that are passed to the `run` backend and then
|
||||
use the `vmrun` utility to start the virtual machine.
|
||||
|
||||
### VMware vSphere/vCenter
|
||||
The backend `vsphere` currently supports booting through an `iso` file that is
|
||||
created through the `moby build -o iso-bios` and is started with `linuxkit run
|
||||
vcenter <args> ./path`.
|
||||
|
||||
The vSphere/vCenter backend requires a user to have `pushed` a linuxkit `iso` to
|
||||
a datastore before attempting to issue the `run` command. The VMware GO SDK is
|
||||
used to build a new Virtual Machine from the configuration that is passed, the
|
||||
new VM is then registered to the host passed as part of the `run` arguments.
|
||||
|
||||
The `waitForIP` requires the `powerOn` argument and will make linuxkit wait
|
||||
until the VM has both powered on and the VMware guest tools have started, it
|
||||
will then print the guest IP address to `stdout`. This requires the
|
||||
`open-vm-tools` container to be added to the linuxkit OS .yml otherwise the wait
|
||||
will eventually timeout.
|
||||
|
||||
## Push
|
||||
### VMware vSphere/vCenter
|
||||
To push an `iso` to a remote VMware datastore:
|
||||
|
||||
```
|
||||
linuxkit push vcenter \
|
||||
-url=<https://username:password@VCaddress/sdk> \
|
||||
-datastore=<datastore_name> \
|
||||
-datacenter=<dc_name> [optional, only needed if multiple DCs] \
|
||||
-folder=<folder_name> [optional, will create a folder from the image name] \
|
||||
-path=<iso_path>
|
||||
```
|
||||
Alternatively most arguments can be passed as environment variables:
|
||||
|
||||
- `VCURL` - VMware vCenter URL (ensure /sdk is appended)
|
||||
- `VCDATACENTER` - VMware vCenter DataCenter name, if more than one
|
||||
- `VCDATASTORE` - Name of a Datastore on that DataCenter
|
||||
|
||||
## Console
|
||||
|
||||
VMware makes use of its own KVM (keyboard/video/mouse) console. With the
|
||||
WS/Fusion backend the console will be displayed as the VM starts to boot. With
|
||||
the vSphere/vCenter backend, the virtual machine will need finding in the
|
||||
management tools and connecting to its console.
|
||||
|
||||
**NOTE:** When building an instance for the vSphere/vCenter backend only a
|
||||
single `tty` is needed as a serial device isn't added to the VM, adding a `ttyS`
|
||||
will result in a debug message printed to the console every few seconds.
|
||||
|
||||
## Disks
|
||||
### VMware Workstation/Fusion
|
||||
Adding a `-disk` will call on the `vmware-diskmanager` utility to create a disk
|
||||
of the set size and add this to the `.vmx` configuration before starting the new
|
||||
Virtual Machine.
|
||||
|
||||
### VMware vSphere/vCenter
|
||||
The `-persistentSize <size in MB>` will create a persistent disk through the
|
||||
VMware SDK and add this disk to the VM configuration. This disk will be created
|
||||
in the same folder as the newly created VM.
|
||||
|
||||
## Networking
|
||||
### VMware Workstation/Fusion
|
||||
Networking is automated and an interface as auto generated and will use NAT to
|
||||
create a provide network access.
|
||||
### VMware vSphere/vCenter
|
||||
The `-network` argument can specify the name of either a vSwitch or a
|
||||
Distributed vSwitch. When the VM is created a new VMXNet3 device is created and
|
||||
places on the designated virtual switch.
|
||||
|
||||
## Integration services and Metadata
|
||||
The `open-vm-tools` container can be added to provide additional functionality
|
||||
within a VMware vSphere and vCenter environment.
|
||||
|
||||
## Design decisions
|
||||
For the `vcenter` backend, the decision was made to use only an `iso` as the
|
||||
medium for the linuxkit VM instead of a `vmdk` file. The basis for this is in
|
||||
the limitations between a `vmdk` on local storage and A `vmdk` that is hosted on
|
||||
an actual VMware datastore (VMFS filesystem). Creating a local vmdk can make use
|
||||
of thin provisioning, however it can't then be transferred to a VMware datastore
|
||||
without converting the disk to a "fat" format. This has the result of turning a
|
||||
relatively small upload, to an upload of perhaps 1GB.
|
||||
|
Loading…
Reference in New Issue
Block a user