At CoreOS, we want to make the world successful with containers on all computing platforms. Today, we are taking one step closer to that goal by announcing, with VMware, that CoreOS is fully supported and integrated with both VMware vSphere 5.5 and VMware vCloud Air. Enterprises that have been evaluating using containers but needed fully supported environments to begin now have the support to get started.
We’ve worked closely with VMware in enabling CoreOS to run on vSphere 5.5 (see the technical preview of CoreOS on vSphere 5.5). This collaboration extends the security, consistency, and reliability advantages of CoreOS to users of vSphere. Developers can focus on their applications and operations get the control they need. We encourage you to read more from VMware here:
As a sysadmin you’ve gotta be thinking, what does this mean for me?
Many people have been running CoreOS on VMware for a while now, but something was missing. Mainly performance and full integration with VMware management APIs. Today that all changes. CoreOS is now shipping open-vm-tools, the open source implementation of VMware Tools, which enables better performance and enables management of CoreOS VMs running in all VMware environments.
Lets take a quick moment to explore some of the things that are now possible.
Taking CoreOS for a spin with VMware Fusion
The following tutorial will walk you through downloading an official CoreOS VMware image and configuring it using a cloud config drive. Once configured, a CoreOS instance will be launched and managed using the vmrun command line tool that ships with VMware Fusion.
To make the following commands easier to run set the following vmrun alias in your shell:
alias vmrun='/Applications/VMware\ Fusion.app/Contents/Library/vmrun'
Download a CoreOS VMware Image
First things first, download a CoreOS VMware image and save it to your local machine:
$ mkdir coreos-vmware $ cd coreos-vmware $ wget https://alpha.release.core-os.net/amd64-usr/current/coreos_production_vmware.vmx $ wget https://alpha.release.core-os.net/amd64-usr/current/coreos_production_vmware_image.vmdk.bz2
Decompress the VMware disk image:
$ bzip2 -d coreos_production_vmware_image.vmdk.bz2
Configuring a CoreOS VM with a config-drive
By default CoreOS VMware images do not have any users configured, which means you won’t be able to login to your VM after it boots. Also, many of the
vmrun guest OS commands require a valid CoreOS username and password.
A config-drive is the best way to configure a CoreOS instance running on VMware. Before you can create a config-drive, you’ll need some user data. For this tutorial you will use a CoreOS cloud-config file as user data to configure users and set the hostname.
Generate the password hash for the core and root users
Before creating the cloud-config file, generate a password hash for the core and root users:
$ openssl passwd -1 Password: Verifying - Password: $1$LEfVXsiG$lhcyOrkJq02jWnEhF93IR/
vmware at both password prompts.
Create a cloud config file
Now we are ready to create a cloud-config file:
#cloud-config hostname: vmware-guest users: - name: core passwd: $1$LEfVXsiG$lhcyOrkJq02jWnEhF93IR/ groups: - sudo - docker - name: root passwd: $1$LEfVXsiG$lhcyOrkJq02jWnEhF93IR/
Create a config-drive
With your cloud-config file in place you can use it to create a config drive. The easiest way to create a config-drive is to generate an ISO using a cloud-config file and attach it to a VM.
$ mkdir -p /tmp/new-drive/openstack/latest $ cp cloud-config.yaml /tmp/new-drive/openstack/latest/user_data $ hdiutil makehybrid -iso -joliet -joliet-volume-name "config-2" -o ~/cloudconfig.iso /tmp/new-drive $ rm -r /tmp/new-drive
At this point you should have a config-drive named
cloudconfig.iso in your home directory.
Attaching a config-drive to a VM
Before booting the CoreOS VM the config-drive must be attached to the VM. Do this by appending the following lines to the
coreos_production_vmware.vmx config file:
ide0:0.present = "TRUE" ide0:0.autodetect = "TRUE" ide0:0.deviceType = "cdrom-image" ide0:0.fileName = "/Users/kelseyhightower/cloudconfig.iso"
At this point you are ready to launch the CoreOS VM:
vmrun start coreos_production_vmware.vmx
With the CoreOS VM up and running use the
vmrun command line tool to interact with it. Let's start by checking the status of vmware-tools in the VM:
$ vmrun checkToolsState coreos_production_vmware.vmx
Grab the VM’s IP address with the
$ vmrun getGuestIPAddress coreos_production_vmware.vmx
Full VMware integration also means you can now run guest OS commands. For example you can list the running processes using the
$ vmrun -gu core -gp vmware listProcessesInGuest coreos_production_vmware.vmx Process list: 63 pid=1, owner=root, cmd=/usr/lib/systemd/systemd --switched-root --system --deserialize 21 pid=2, owner=root, cmd=kthreadd pid=3, owner=root, cmd=ksoftirqd/0 pid=4, owner=root, cmd=kworker/0:0 pid=5, owner=root, cmd=kworker/0:0H pid=6, owner=root, cmd=kworker/u2:0 ...
Finally you can now run arbitrary commands and scripts using VMware management tools. For example, use the
runProgramInGuest command to initiate a graceful shutdown:
$ vmrun -gu root -gp vmware runProgramInGuest coreos_production_vmware.vmx /usr/sbin/shutdown now
We have only scratched the surface regarding the number of things you can do with the new VMware powered CoreOS images. Check out the “Using vmrun to Control Virtual Machines” e-book for more details.
CoreOS and VMware going forward
We look forward to continuing on the journey to secure the backend of the Internet by working on all types of platforms in the cloud or behind the firewall. We are continuing to work with VMware so that CoreOS is also supported on the recently announced vSphere 6. If you have any questions in the meantime, you can find us on IRC as you get started. Feedback can also be provided at the VMware / CoreOS community forum.