• Stars
    star
    2,226
  • Rank 20,717 (Top 0.5 %)
  • Language
    C
  • Created over 10 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Official repository of VMware open-vm-tools project

General

What is the open-vm-tools project?

open-vm-tools is a set of services and modules that enable several features in VMware products for better management of, and seamless user interactions with, guests. It includes kernel modules for enhancing the performance of virtual machines running Linux or other VMware supported Unix like guest operating systems.

open-vm-tools enables the following features in VMware products:

  • The ability to perform virtual machine power operations gracefully.
  • Execution of VMware provided or user configured scripts in guests during various power operations.
  • The ability to run programs, commands and file system operation in guests to enhance guest automation.
  • Authentication for guest operations.
  • Periodic collection of network, disk, and memory usage information from the guest.
  • Generation of heartbeat from guests to hosts so VMware's HA solution can determine guests' availability.
  • Clock synchronization between guests and hosts or client desktops.
  • Quiescing guest file systems to allow hosts to capture file-system-consistent guest snapshots.
  • Execution of pre-freeze and post-thaw scripts while quiescing guest file systems.
  • The ability to customize guest operating systems immediately after powering on virtual machines.
  • Enabling shared folders between host and guest file systems on VMware Workstation and VMware Fusion.
  • Copying and pasting text, graphics, and files between guests and hosts or client desktops.

Can you provide more details on the actual code being released?

The following components have been released as open source software:

  • Linux, Solaris and FreeBSD drivers for various devices and file system access.
  • The memory balloon driver for reclaiming memory from guests.
  • The PowerOps plugin to perform graceful power operation and run power scripts.
  • The VIX plugin to run programs and commands, and perform file system operations in guests.
  • The GuestInfo plugin to periodically collect various statistics from guests.
  • The TimeSync plugin to perform time synchronization.
  • The dndcp plugin to support drag and drop, and text and file copy/paste operations.
  • The ResolutionSet plugin to adjust guest screen resolutions automatically based on window sizes.
  • The guest authentication service.
  • The toolbox command to perform disk wiping and shrinking, manage power scripts, and time synchronization.
  • The guest SDK libraries to provide information about virtual machines to guests.
  • Clients and servers for shared folders support.
  • Multiple monitor support.
  • The GTK Toolbox UI.

Is open-vm-tools available with Linux distributions?

Yes. open-vm-tools packages for user space components are available with new versions of major Linux distributions, and are installed as part of the OS installation in several cases. Please refer to VMware KB article http://kb.vmware.com/kb/2073803 for details. All leading Linux vendors support open-vm-tools and bundle it with their products. For information about OS compatibility for open-vm-tools, see the VMware Compatibility Guide at http://www.vmware.com/resources/compatibility Automatic installation of open-vm-tools along with the OS installation eliminates the need to separately install open-vm-tools in guests. If open-vm-tools is not installed automatically, you may be able to manually install it from the guest OS vendor's public repository. Installing open-vm-tools from the Linux vendor's repository reduces virtual machine downtime because future updates to open-vm-tools are included with the OS maintenance patches and updates. NOTE: Most of the Linux distributions ship two or more open-vm-tools packages. "open-vm-tools" is the core package without any dependencies on X libraries and "open-vm-tools-desktop" is an additional package with dependencies on "open-vm-tools" core package and X libraries. The "open-vm-tools-sdmp" package contains a plugin for Service Discovery. There may be additional packages, please refer to the documentation of the OS vendor. Note that the open-vm-tools packages available with Linux distributions do not include Linux drivers because Linux drivers are available as part of Linux kernel itself. Linux kernel versions 3.10 and later include all of the Linux drivers present in open-vm-tools except the vmhgfs driver. The vmhgfs driver was required for enabling shared folders feature, but is superseded by vmhgfs-fuse which does not require a kernel driver.

Will there be continued support for VMware Tools and OSP?

VMware Tools will continue to be available under a commercial license. It is recommended that open-vm-tools be used for the Linux distributions where open-vm-tools is available. VMware will not provide OSPs for operating systems where open-vm-tools is available.

How does this benefit other open source projects?

Under the terms of the GPL, open source community members are able to use the open-vm-tools code to develop their own applications, extend it, and contribute to the community. They can also incorporate some or all of the code into their projects, provided they comply with the terms of the GPL.

License Related

What license is the code being released under?

The code is being released under GPL v2 and GPL v2 compatible licenses. To be more specific, the Linux kernel modules are being released under the GPL v2, while almost all of the user level components are being released under the LGPL v2.1. The SVGA and mouse drivers have been available under the X11 license for quite some time. There are certain third party components released under BSD style licenses, to which VMware has in some cases contributed, and will continue to distribute with open-vm-tools.

Why did you choose these licenses?

We chose the GPL v2 for the kernel components to be consistent with the Linux kernel's license. We chose the LGPL v2.1 for the user level components because some of the code is implemented as shared libraries and we do not wish to restrict proprietary code from linking against those libraries. For consistency, we decided to license the rest of the userlevel code under the LGPL v2.1 as well.

What are the obligations that the license(s) impose?

Each of these licenses have different obligations. For questions about the GPL, LGPL licenses, the Free Software Foundation's GPL FAQ page provides lots of useful information. For questions about the other licenses like the X11, BSD licenses, the Open Source Initiative has numerous useful resources including mailing lists. The Software Freedom Law Center provides legal expertise and consulting for free and open source software (FOSS) developers.

Can I use all or part of this code in my proprietary software? Do I have to release the source code if I do?

Different open source licenses have different requirements regarding the release of source code. Since the code is being released under various open source licenses, you will need to comply with the terms of the corresponding licenses.

Am I required to contribute back any changes I make to the code?

No, you aren't required to contribute any changes that you make back to the open-vm-tools project. However, we encourage you to do so.

Can I use all or part of this code in another open source package?

Yes, as long as you comply with the appropriate license(s).

Can I package this for my favorite operating system?

Yes! Please do.

Will the commercial version (VMware Tools) differ from the open source version (open-vm-tools)? If so, how?

Our goal is to work towards making the open source version as close to the commercial version as possible. However, we do currently make use of certain components licensed from third parties as well as components from other VMware products which are only available in binary form.

If I use the code from the open-vm-tools project in my project/product, can I call my project/product VMware Tools?

No, since your project/product is not a VMware project/product.

Building open-vm-tools

How do I build open-vm-tools?

open-vm-tools uses the GNU Automake tool for generating Makefiles to build all sources. More information about Automake can be found here: http://www.gnu.org/software/automake/

Project build information:

The following steps will work on most recent Linux distributions:

autoreconf -i
./configure
make
sudo make install
sudo ldconfig

Service Discovery (sdmp) plugin

To build the optional sdmp (Service Discovery) plugin use the --enable-servicediscovery option to invoke the configure script:

./configure --enable-servicediscovery

The open-vm-tools 12.0.0 release introduces an optional setup script and two plugins (one optional)

  • Salt Minion Setup
  • Component Manager plugin
  • ContainerInfo plugin (optional)

Salt Minion Setup

The Salt support on Linux consists of a single bash script to setup Salt Minion on VMware virtual machines. The script requires the "curl" and "awk" commands to be available on the system.

Linux providers supplying open-vm-tools packages are recommended to provide Salt Minion support in a separate optional package - "open-vm-tools-salt-minion".

To include the Salt Minion Setup in the open-vm-tools build use the --enable-salt-minion option when invoking the configure script.

./configure --enable-salt-minion

Component Manager (componentMgr) plugin

The component Manager manages a preconfigured set of components available from VMware that can be made available on the Linux guest. Currently the only component that can be managed is the Salt Minion Setup.

ContainerInfo (containerInfo) plugin

The optional containerInfo plugin retrieves a list of the containers running on a Linux guest and publishes the list to the guest variable "guestinfo.vmtools.containerinfo" in JSON format. The containerInfo plugin communicates with the containerd daemon using gRPC to retrieve the desired information. For containers that are managed by Docker, the plugin uses libcurl to communicate with the Docker daemon and get the names of the containers.

Since this plugin requires additional build and runtime dependencies, Linux vendors are recommended to release it in a separate, optional package - "open-vm-tools-containerinfo". This avoids unnecessary dependencies for customers not using the feature.

Canonical, Debian, Ubuntu Linux

Build Dependencies Runtime
libcurl4-openssl-dev curl
protobuf-compiler protobuf
libprotobuf-dev grpc++
protobuf-compiler-grpc
libgrpc++-dev
golang-github-containerd-containerd-dev
golang-github-gogo-protobuf-dev

Fedora, Red Hat Enterprise Linux, ...

Build Dependencies Runtime
libcurl-devel curl
protobuf-compiler protobuf
protobuf-devel grpc-cpp
grpc-plugins
grpc-devel
containerd-devel

Configuring the build for the ContainerInfo plugin

The configure script defaults to building the ContainerInfo when all the needed dependencies are available. ContainerInfo will not be built if there are missing dependencies. Invoke the configure script with --enable-containerinfo=no to explicitly inhibit building the plugin.

./configure --enable-containerinfo=no

If the configure script is given the option --enable-containerinfo=yes and any necessary dependency is not available, the configure script will terminate with an error.

./configure --enable-containerinfo=yes

Getting configure options and help

If you are looking for help or additional settings for the building of this project, the following configure command will display a list of help options:

./configure --help

When using configure in the steps above it is only necessary to call ./configure once unless there was a problem after the first invocation.

Getting Involved

How can I get involved today?

You can get involved today in several different ways:

  • Start using open-vm-tools today and give us feedback.

  • Suggest feature enhancements.

  • Identify and submit bugs under issues section: https://github.com/vmware/open-vm-tools/issues

  • Start porting the code to other operating systems. Here is the list of operating systems with open-vm-tools:

    • Red Hat Enterprise Linux 7.0 and later releases
    • SUSE Linux Enterprise 12 and later releases
    • Ubuntu 14.04 and later releases
    • CentOS 7 and later releases
    • Debian 7.x and later releases
    • Oracle Linux 7 and later
    • Fedora 19 and later releases
    • openSUSE 11.x and later releases
    • Flatcar Container Linux, all releases
    • Rocky 8 and later releases
    • AlmaLinux OS 8 and later releases

Will external developers be allowed to become committers to the project?

Yes. Initially, VMware engineers will be the only committers. As we roll out our development infrastructure, we will be looking to add external committers to the project as well.

How can I submit code changes like bug fixes, patches, new features to the project?

Initially, you can submit bug fixes, patches and new features to the project development mailing list as attachments to emails or bug reports. To contribute source code, you will need to fill out a contribution agreement form as part of the submission process. We will have more details on this process shortly.

What is the governance model for managing this as an open source project?

The feature roadmap and schedules for the open-vm-tools project will continue to be defined by VMware. Initially, VMware engineers will be the only approved committers. We will review incoming submissions for suitability for merging into the project. We will be looking to add community committers to the project based on their demonstrated contributions to the project. Finally, we also plan to set up a process for enhancement proposals, establishing sub-projects and so on.

Will you ship code that I contribute with VMware products? If so, will I get credit for my contributions?

Contributions that are accepted into the open-vm-tools project's main source tree will likely be a part of VMware Tools. We also recognize the value of attribution and value your contributions. Consequently, we will acknowledge contributions from the community that are distributed with VMware's products.

Do I need to sign something before making a contribution?

Yes. We have a standard contribution agreement that covers all contributions made to the project. It gives VMware and you joint copyright interests in the code you are contributing. The agreement also gives VMware flexibility with licensing and also helps avoid any copyright/licensing related issues that may arise in the future. In order for us to include your contribution in our source tree, we ask that you send us a signed copy of the agreement. You can do this in one of two ways: Fax to +1.650.427.5003, Attn: Product & Technology Law Group Scan and email it to oss-queries_at_vmware.com Agreement: http://open-vm-tools.sourceforge.net/files/vca.pdf

My version of Linux is not recognized. How do I add my Linux name to the known list?

The open-vm-tools source contains a table mapping the guest distro name to the officially recognized short name. Please do not submit pull requests altering this table and associated code. Any changes here must be accompanied by additional changes in the VMware host. Values that are not recognized by the VMware host will be ignored.

Use the appropriate generic Linux designation when configuring a VM for your Linux version. The selection available will vary by virtual hardware version being used.

  • Other 5.x or later Linux (64-bit)
  • Other 5.x or later Linux (32-bit)
  • Other 4.x Linux (64-bit)
  • Other 4.x Linux (32-bit)
  • Other 3.x Linux (64-bit)
  • Other 3.x Linux (32-bit)
  • Other Linux (64-bit)
  • Other Linux (32-bit)

Compatibilty

What Operating Systems are supported for customization?

The Guest OS Customization Support Matrix provides details about the guest operating systems supported for customization.

Which versions of open-vm-tools are compatible with other VMware products?

The VMware Product Interoperability Matrix provides details about the compatibility of different versions of VMware Tools (includes open-vm-tools) and other VMware Products.

Internationalization

Which languages are supported?

open-vm-tools supports the following languages:

  • English
  • French
  • German
  • Spanish
  • Italian
  • Japanese
  • Korean
  • Simplified Chinese
  • Traditional Chinese

Other

Mailing Lists

Please send an email to one of these mailing lists based on the nature of your question.

More Repositories

1

photon

Minimal Linux container host
Python
3,017
star
2

govmomi

Go library for the VMware vSphere API
Go
2,286
star
3

pyvmomi

VMware vSphere API Python Bindings
Python
2,208
star
4

differential-datalog

DDlog is a programming language for incremental computation. It is well suited for writing programs that continuously update their output in response to input changes. A DDlog programmer does not write incremental algorithms; instead they specify the desired input-output mapping in a declarative manner.
Java
1,362
star
5

pyvmomi-community-samples

A place for community contributed samples for the pyVmomi library.
Python
1,014
star
6

PowerCLI-Example-Scripts

PowerShell
753
star
7

vsphere-automation-sdk-python

Python samples, language bindings, and API reference documentation for vSphere, VMC, and NSX-T using the VMware REST API
Python
744
star
8

splinterdb

High Performance Embedded Key-Value Store
C
684
star
9

vic

vSphere Integrated Containers Engine is a container runtime for vSphere.
Go
639
star
10

burp-rest-api

REST/JSON API to the Burp Suite security tool.
Java
546
star
11

versatile-data-kit

One framework to develop, deploy and operate data workflows with Python and SQL.
Python
420
star
12

concord-bft

Concord byzantine fault tolerant state machine replication library
C++
378
star
13

chap

chap analyzes un-instrumented core files for leaks, memory growth, and corruption
C++
362
star
14

kube-fluentd-operator

Auto-configuration of Fluentd daemon-set based on Kubernetes metadata
Go
319
star
15

vsphere-automation-sdk-java

Java samples, language bindings, and API reference documentation for vSphere, VMC, and NSX-T using the VMware REST API
Java
208
star
16

goipmi

Go IPMI library
Go
181
star
17

vic-product

vSphere Integrated Containers enables VMware customers to deliver a production-ready container solution to their developers and DevOps teams.
RobotFramework
177
star
18

ansible-for-nsxt

Ansible delivers simple IT automation that ends repetitive tasks and frees up DevOps teams for more strategic work. This project is to enable this automation for NSX-T installation.
Python
170
star
19

mangle

Git Repository for the Mangle tool
Java
162
star
20

vmware-go-kcl

KCL Implementation in Go lang by VMware
Go
154
star
21

weathervane

Virtual-Infrastructure and Cloud Performance Benchmark
Java
153
star
22

terraform-provider-vcd

Terraform VMware Cloud Director provider
Go
147
star
23

dod-compliance-and-automation

Security hardening content for VMware solutions to US Department of Defense standards
Ruby
144
star
24

dscr-for-vmware

The Repository contains Microsoft PowerShell Desired State Configuration (DSC) Resources for managing VC and ESXi settings.
PowerShell
139
star
25

terraform-provider-nsxt

Terraform Provider for VMware NSX
Go
131
star
26

tdnf

Tiny Dandified Yum
C
115
star
27

open-vmdk

Python
113
star
28

ansible-module-vcloud-director

ansible-module-vcloud-director
Python
108
star
29

terraform-provider-vra

Terraform Provider for VMware Aria Automation
Go
101
star
30

powerclicore

PowerCLI Core Dockerfile
Dockerfile
99
star
31

load-balancer-and-ingress-services-for-kubernetes

Load Balancer and Ingress services for Kubernetes
Go
94
star
32

clarity-city

Clarity City
CSS
91
star
33

hamlet

Multi-Vendor Service Mesh Interoperation
86
star
34

go-vcloud-director

Golang SDK for VMware Cloud Director
Go
80
star
35

container-service-extension

Container Service for VMware vCloud Director
Python
78
star
36

vrealize-developer-tools

Extension for Visual Studio Code that provides code intelligence features and enables a more developer-friendly experience when creating vRealize content
TypeScript
75
star
37

flowgate

Project FlowGate is an open-source vendor-neutral project that helps enterprises integrate facility systems data and IT data to form a single holistic view of their operations. By combining these two disparate data sets into one view, data center operators/IT admins are better equipped to optimize operations which were previously impossible.
Java
73
star
38

nsx-t-datacenter-ci-pipelines

CI pipelines for VMware NSX-T Datacenter
Python
71
star
39

alb-sdk

Avi SDK and Utilities
Java
70
star
40

nsx-powerops

NSX-v Operationalization project. Automate Networking Documentation and HealthCheck.
Python
69
star
41

singleton

A service that provides support for Software Internationalization and Localization
Java
67
star
42

esx-boot

The ESXi bootloader
C
66
star
43

node-replication

An operation-log based approach for data replication.
Rust
62
star
44

data-annotator-for-machine-learning

Data annotator for machine learning allows you to centrally create, manage and administer annotation projects for machine learning
TypeScript
58
star
45

te-ns

Traffic Emulator for Network Services
C
55
star
46

go-vmware-nsxt

golang library for NSX-T REST API
Go
54
star
47

idm

51
star
48

bitfusion-with-kubernetes-integration

Bitfusion with Kubernetes Integration Support
Go
48
star
49

replay-app-for-tvos

tvOS application that converts an Apple TV into to a digital signage / kiosk
Swift
48
star
50

build-tools-for-vmware-aria

Build Tools for VMware Aria provides development and release management tools for implementing automation solutions based on the VMware Aria Suite and VMware Cloud Director. The solution enables Virtual Infrastructure Administrators and Automation Developers to use standard DevOps practices for managing and deploying content.
Java
47
star
51

photon-docker-image

Shell
45
star
52

power-validated-solutions-for-cloud-foundation

PowerShell Module for VMware Validated Solutions
PowerShell
44
star
53

nsx-alb-datascript-samples-library

DataScript Examples Library
Lua
41
star
54

go-ipfix

An ipfix library in Go
Go
39
star
55

c-rest-engine

C
39
star
56

terraform-provider-vra7

Terraform VMware vRealize Automation 7 provider - VMware has ended the active development of this Terraform Provider, so this repository will no longer be updated.
Go
39
star
57

ansible-vsphere-gos-validation

Guest OS validation test set for vSphere using Ansible
Python
38
star
58

terraform-provider-tanzu-mission-control

Terraform provider to manage resources of Tanzu Mission Control
Go
37
star
59

cluster-api-provider-cloud-director

Cluster API Provider for VMware Cloud Director. The project is an open source implementation of K8s ClusterAPI project and allows customers to provision resources directly from VMware Cloud Director. It enables Cloud Director powered Clouds to be treated as yet-another-cloud in the multi-cloud journey for VMware Cloud Providers.
Go
37
star
60

likewise-open

Likewise OSS project
C
37
star
61

harbor-boshrelease

CFF BOSH Release for Project Harbor
Shell
36
star
62

vrops-export

vRealize Operations Export Tool
Java
35
star
63

script-runtime-service-for-vsphere

The Repository contains Script Runtime Service for vSphere. A service for managing server-side PowerCLI instances to run commands and scripts against VCenter servers.
Smalltalk
35
star
64

powershell-module-for-vmware-cloud-foundation

PowerShell Module for VMware Cloud Foundation
PowerShell
34
star
65

photon-packer-templates

VMware Photon Packer Templates
HCL
33
star
66

network-config-manager

Network configuration manager is utility for easily configuring networking on a linux system
C
33
star
67

vsphere-automation-sdk-go

Go programming language SDK (Beta) for VMC. NSX-T and vSphere services will be added soon.
Go
32
star
68

terraform-provider-avi

Terraform AVI Networks provider
Go
31
star
69

nsx-container-plugin-operator

Kubernetes Operator for the NSX Container Plugin (NCP)
Go
30
star
70

nerpa

Network Programming with Relational and Procedural Abstractions (NERPA)
Rust
30
star
71

json-template-engine

This project provides implementations for the JSON template specification.
C++
30
star
72

vidm-saml-toolkit

VMware Identity Manager SAML Toolkit for Developers
Java
27
star
73

cloud-director-named-disk-csi-driver

Container Storage Interface (CSI) driver for VMware Cloud Director
Go
27
star
74

vic-ui

vSphere Integrated Containers Plug-In for vSphere Client provides information about your VIC setup and allows you to deploy VCHs directly from the vSphere Client.
TypeScript
26
star
75

terraform-provider-vmc

Terraform provider for VMware Cloud on AWS
Go
25
star
76

vsphere-guest-run

Python library for guest operations
Python
24
star
77

python-client-for-vmware-cloud-on-aws

Python Client for VMware Cloud on AWS is an open-source Python-based tool. Written in Python, the tool enables VMware Cloud on AWS users to automate the consumption of their VMware Cloud on AWS SDDC.
Python
24
star
78

vmware-openapi-generator

VMware-openapi-generator tool generates open-api documents from vapi metamodel format.
Python
23
star
79

workflowTools

Developer workflow tooling for jenkins, jira, reviewboard and git
Java
22
star
80

global-load-balancing-services-for-kubernetes

Global Load Balancing Services for Kubernetes
Go
22
star
81

nsx-advanced-load-balancer-tools

Repository to build Docker container with all Avi tools.
Dockerfile
22
star
82

vmware-go-kcl-v2

vmware-go-kcl is a vmware originated open-source project for AWS Kinesis Client Library in Go. It has been widely used by many external companies and internally by Carbon Black. vmware-go-kcl-v2 is its companion project by utilizing AWS Go SDK V2 which introduces lots of breaking changes. To keep the repo clean, it is better to have a separated repo vmware-go-kcl-v2 with better golang project structure improvement.
Go
22
star
83

vSphere-machine-learning-extension

vSphere Machine Learning Extension
Shell
21
star
84

ansible-collection-alb

VMware Advanced Load Balancer (formerly Avi) Ansible Collection
Python
20
star
85

cloud-provider-for-cloud-director

Kubernetes External Cloud Provider for VMware Cloud Director
Go
20
star
86

crest

Crest machine learning based automated accessibility tests
Python
20
star
87

network-event-broker

manages network configuration
Go
19
star
88

vra-sdk-go

VMware vRealize Automation SDK for Go
Python
19
star
89

terraform-provider-vcf

Terraform Provider for VMware Cloud Foundation
Go
19
star
90

django-yamlconf

Django settings values via external YAML formatted files simplifying the c onfiguration of Django applications
Python
19
star
91

kernel-event-collector-module

This is the Linux kernel module event collector for the Carbon Black Cloud.
C
18
star
92

cloud-director-extension-standard-library

Standard Library for VMware Cloud Director solutions add-ons and add-on elements.
TypeScript
18
star
93

upgrade-framework

A product-agnostic framework for defining and sequencing upgrades
Java
17
star
94

powershell-module-for-vmware-cloud-foundation-reporting

PowerShell Module for VMware Cloud Foundation Reporting
PowerShell
17
star
95

nsx-integration-for-openshift

NSX-T deployment playbooks for Openshift integration
Python
16
star
96

virtual-disks

Go Library for Virtual Disk Development Kit
Go
16
star
97

database-stream-processor-compiler

Infrastructure to run programs written in high-level languages on top of the Database Stream Processor (DBSP) runtime.
Rust
16
star
98

pmd

Photon Management Daemon
Go
15
star
99

antrea-operator-for-kubernetes

Antrea Operator for Kubernetes deployments
Go
15
star
100

vsan-integration-for-prometheus

vSAN Integration for Prometheus: making it easier using Prometheus to monitor vSAN performance
Python
15
star