# Eucalyptus (software)

Eucalyptus is a paid and open-source computer software for building Amazon Web Services (AWS)-compatible private and hybrid cloud computing environments, originally developed by the company Eucalyptus Systems. Eucalyptus is an acronym for Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems. Eucalyptus enables pooling compute, storage, and network resources that can be dynamically scaled up or down as application workloads change. Mårten Mickos was the CEO of Eucalyptus. In September 2014, Eucalyptus was acquired by Hewlett-Packard and then maintained by DXC Technology. After DXC stopped developing the product in late 2017, AppScale Systems forked the code and started supporting Eucalyptus customers.

## History

The software development had its roots in the Virtual Grid Application Development Software project, at Rice University and other institutions from 2003 to 2008. Rich Wolski led a group at the University of California, Santa Barbara (UCSB), and became the chief technical officer at the company headquartered in Goleta, California before returning to teach at UCSB.
Eucalyptus software was included in the Ubuntu 9.04 distribution in 2009. The company was formed in 2009 with $5.5 million in funding by Benchmark Capital to commercialize the software.
The co-founders of Eucalyptus were Rich Wolski (CTO), Dan Nurmi, Neil Soman, Dmitrii Zagorodnov, Chris Grzegorczyk, Graziano Obertelli and Woody Rollins (CEO). Eucalyptus Systems announced a formal agreement with Amazon Web Services in March 2012.
Hewlett-Packard acquired Eucalyptus in September 2014, although by the end of 2016 its public cloud offering HPE Helion was shut down. Eucalyptus team was transferred to the HPE Enterprise Services division, which split away from HPE and merged with Computer Sciences Corporation forming DXC Technology on April 1, 2017. DXC chose to stop development and support of Eucalyptus in 2017, prompting AppScale Systems, led by members of the Eucalyptus founding team, to fork the code. AppScale Systems started commercially supporting and developing the software, which was renamed AppScale ATS, since late 2017.

## Software architecture

Eucalyptus commands can manage either Amazon or Eucalyptus instances. Users can also move instances between a Eucalyptus private cloud and the Amazon Elastic Compute Cloud to create a hybrid cloud. Hardware virtualization isolates applications from computer hardware details.
Eucalyptus uses the terminology:
* Images – An image is a fixed collection of software modules, system software, application software, and configuration information that is started from a known baseline (immutable/fixed). When bundled and uploaded to the Eucalyptus cloud, this becomes a Eucalyptus machine image (EMI).
* Instances – When an image is put to use, it is called an instance. The configuration is executed at runtime, and the Cloud Controller decides where the image will run, and storage and networking is attached to meet resource needs.
* IP addressing – Eucalyptus instances can have public and private IP addresses. An IP address is assigned to an instance when the instance is created from an image. For instances that require a persistent IP address, such as a web-server, Eucalyptus supplies elastic IP addresses. These are pre-allocated by the Eucalyptus cloud and can be reassigned to a running instance.
* Security – TCP/IP security groups share a common set of firewall rules. This is a mechanism to firewall off an instance using IP address and port block/allow functionality. Instances are isolated at TCP/IP layer 2. If this were not present, a user could manipulate the networking of instances and gain access to neighboring instances violating the basic cloud tenet of instance isolation and separation.
* Networking – There are three networking modes. In Managed Mode, Eucalyptus manages a local network of instances, including security groups and IP addresses. In System Mode, Eucalyptus assigns a MAC address and attaches the instance's network interface to the physical network through the Node Controller's bridge. System Mode does not offer elastic IP addresses, security groups, or VM isolation. In Static Mode, Eucalyptus assigns IP addresses to instances. Static Mode does not offer elastic IPs, security groups, or VM isolation.
* Access Control – A user of Eucalyptus is assigned an identity, and identities can be grouped together for access control.

## Components

Eucalyptus has six components:
* The Cloud Controller (CLC) is a Java program that offers EC2-compatible interfaces, as well as a web interface to the outside world. In addition to handling incoming requests, the CLC acts as the administrative interface for cloud management and performs high-level resource scheduling and system accounting. The CLC accepts user API requests from command-line interfaces like euca2ools or GUI-based tools like the Eucalyptus User Console and manages the underlying compute, storage, and network resources. Only one CLC can exist per cloud and it handles authentication, accounting, reporting, and quota management.
* Walrus, also written in Java, is the Eucalyptus equivalent to AWS Simple Storage Service (S3). Walrus offers persistent storage to all of the virtual machines in the Eucalyptus cloud and can be used as a simple HTTP put/get storage as a service solution. There are no data type restrictions for Walrus, and it can contain images (i.e., the building blocks used to launch virtual machines), volume snapshots (i.e., point-in-time copies), and application data. Only one Walrus can exist per cloud.
* The Cluster Controller (CC) is written in C and acts as the front end for a cluster within a Eucalyptus cloud and communicates with the Storage Controller and Node Controller. It manages instance (i.e., virtual machines) execution and Service Level Agreements (SLAs) per cluster.
* The Storage Controller (SC) is written in Java and is the Eucalyptus equivalent to AWS EBS. It communicates with the Cluster Controller and Node Controller and manages Eucalyptus block volumes and snapshots to the instances within its specific cluster. If an instance requires writing persistent data to memory outside of the cluster, it would need to write to Walrus, which is available to any instance in any cluster.
* The VMware Broker is an optional component that provides an AWS-compatible interface for VMware environments and physically runs on the Cluster Controller. The VMware Broker overlays existing ESX/ESXi hosts and transforms Eucalyptus Machine Images (EMIs) to VMware virtual disks. The VMware Broker mediates interactions between the Cluster Controller and VMware and can connect directly to either ESX/ESXi hosts or to vCenter Server.
* The Node Controller (NC) is written in C and hosts the virtual machine instances and manages the virtual network endpoints. It downloads and caches images from Walrus as well as creates and caches instances. While there is no theoretical limit to the number of Node Controllers per cluster, performance limits do exist.

## Amazon Web Services compatibility

Organizations can use or reuse AWS-compatible tools, images, and scripts to manage their own on-premises infrastructure as a service (IaaS) environments. The AWS API is implemented on top of Eucalyptus, so tools in the cloud ecosystem that can communicate with AWS can use the same API with Eucalyptus. In March 2012, Amazon Web Services and Eucalyptus announced details of the compatibility between AWS and Eucalyptus. As part of this agreement, AWS will support Eucalyptus as they continue to extend compatibility with AWS APIs and customer use cases. Customers can run applications in their existing data centers that are compatible with Amazon Web Services such as Amazon Elastic Compute Cloud (EC2) and Amazon Simple Storage Service (S3).
In June, 2013, Eucalyptus 3.3 was released, featuring a new series of AWS-compatible tools. These include:
* Autoscaling – Allows application developers to scale Eucalyptus cloud resources up or down in order to maintain performance and meet SLAs. With auto-scaling, developers can add instances and virtual machines as traffic demands increase. Auto-scaling policies for Eucalyptus are defined using Amazon EC2-compatible APIs and tools.
* Elastic Load Balancing – A service that distributes incoming application traffic and service calls across multiple Eucalyptus workload instances, providing greater application fault tolerance.
* CloudWatch – A monitoring tool similar to Amazon CloudWatch that monitors resources and applications on Eucalyptus clouds. Using CloudWatch, application developers and cloud administrators can program the collection of metrics, set alarms and identify trends that may be endangering workload operations, and take action to ensure their applications continue to run smoothly.
Eucalyptus 3.3 is also the first private cloud platform to support Netflix's open source tools – including Chaos Monkey, Asgard, and Edda – through its API fidelity with AWS.

## Functionality

The Eucalyptus User Console provides an interface for users to self-service provision and configure compute, network, and storage resources. Development and test teams can manage virtual instances using built-in key management and encryption capabilities. Access to virtual instances is available using familiar SSH and RDP mechanisms. Virtual instances with application configuration can be stopped and restarted using encrypted boot from EBS capability.
IaaS service components Cloud Controller, Cluster Controller, Walrus, Storage Controller, and VMware Broker are configurable as redundant systems that are resilient to multiple types of failures. Management state of the cloud machine is preserved and reverted to normal operating conditions in the event of a hardware or software failure.
Eucalyptus can run multiple versions of Windows and Linux virtual machine images. Users can build a library of Eucalyptus Machine Images (EMIs) with application metadata that are decoupled from infrastructure details to allow them to run on Eucalyptus clouds. Amazon Machine Images are also compatible with Eucalyptus clouds. VMware Images and vApps can be converted to run on Eucalyptus clouds and AWS public clouds.
Eucalyptus user identity management can be integrated with existing Microsoft Active Directory or LDAP systems to have fine-grained role based access control over cloud resources.
Eucalyptus supports storage area network devices to take advantage of storage arrays to improve performance and reliability. Eucalyptus Machine Images can be backed by EBS-like persistent storage volumes, improving the performance of image launch time and enabling fully persistent virtual machine instances. Eucalyptus also supports direct-attached storage.
Eucalyptus 3.3 offers new features for AWS compatibility. These include resource tagging, which allows application developers and cloud administrators to assign customizable metadata tags to resources such as firewalls, load balancers, Web servers, and individual workloads to better identify them. Eucalyptus 3.3 also supports an expanded set of instance types to more closely align to instance types in Amazon EC2.
Eucalyptus 3.3 also includes a new Maintenance Mode that allows cloud administrators to perform maintenance on Eucalyptus clouds with zero downtime to instances or cloud applications. It also includes new user console features such as a Magic Search Bar, and an easy option to allow users to change their password.
Eucalyptus 3.4, released on October 24, 2013, added new features including improved image management and migration tools, capabilities for warm upgrades, a hybrid cloud user console to manage both Eucalyptus and AWS resources, Identity and Access Management (IAM) roles, and improved High Availability (HA) capabilities.
Faststart demonstration configurations that allow you to set up your own private cloud quickly with as few steps as possible are available.

## Release history

| Version | Date |
| Eucalyptus 5.1.0 | May 10, 2021 |
| Eucalyptus 5.0.0 | Dec 15, 2020 |
| Eucalyptus 4.4.5 | Dec 28, 2018 |
| Eucalyptus 4.4.4 | Jul 9, 2018 |
| Eucalyptus 4.4.3 | Apr 30, 2018 |
| Eucalyptus 4.4.2 | Aug 30, 2017 |
| Eucalyptus 4.4.1 | May 9, 2017 |
| Eucalyptus 4.4.0 | March 7, 2017 |
| Eucalyptus 4.3.1 | December 14, 2016 |
| Eucalyptus 4.3.0 | August 9, 2016 |
| Eucalyptus 4.2.2 | April 28, 2016 |
| Eucalyptus 4.2.1 | December 7, 2015 |
| Eucalyptus 4.2.0 | October 22, 2015 |
| Eucalyptus 4.1.2 | July 29, 2015 |
| Eucalyptus 4.1.1 | May 11, 2015 |
| Eucalyptus 4.1.0 | January 29, 2015 |
| Eucalyptus 4.0.2 | October 20, 2014 |
| Eucalyptus 4.0.1 | August 13, 2014 |
| Eucalyptus 4.0 | May 30, 2014 |
| Eucalyptus 3.4.2 | February 24, 2014 |
| Eucalyptus 3.4 | October 24, 2013 |
| Eucalyptus 3.3 | June 18, 2013 |
| Eucalyptus 3.2 | December 19, 2012 |
| Eucalyptus 3.1 | June 27, 2012 |
| Eucalyptus 3.0 | February 8, 2012 |
| Eucalyptus 2.0 | August 2010 |
| Eucalyptus 1.6 | November 2009 |