On this page:
The Cloud  Lab Manual
2018-10-25 (497b867)

The CloudLab Manual

The CloudLab Team

This document is also available as a single page

CloudLab is a "meta-cloud"—that is, it is not a cloud itself; rather, it is a facility for building clouds. It provides bare-metal access and control over a substantial set of computing, storage, and networking resources; on top of this platform, users can install standard cloud software stacks, modify them, or create entirely new ones.

The current CloudLab deployment consists of more than 25,000 cores distributed across three sites at the University of Wisconsin, Clemson University, and the University of Utah. CloudLab interoperates with existing testbeds including GENI and Emulab, to take advantage of hardware at dozens of sites around the world.

The control software for CloudLab is open source, and is built on the foundation established for Emulab, GENI, and Apt. Pointers to the details of this control system can be found on CloudLab’s technology page.

Get started!

    1 CloudLab Status Notes

    2 Getting Started

      2.1 Next Steps

    3 CloudLab Users

      3.1 GENI Users

      3.2 Register for an Account

        3.2.1 Join an existing project

        3.2.2 Create a new project

    4 CloudLab and Repeatable Research

    5 Creating Profiles

      5.1 Creating a profile from an existing one

        5.1.1 Preparation and precautions

        5.1.2 Cloning a Profile

        5.1.3 Copying a Profile

        5.1.4 Creating the Profile

        5.1.5 Updating a profile

      5.2 Creating a profile with a GUI

      5.3 Repository-Based Profiles

        5.3.1 Updating Repository-Based Profiles

        5.3.2 Branches and Tags in Repository-Based Profiles

      5.4 Creating a profile from scratch

      5.5 Sharing Profiles

      5.6 Versioned Profiles

    6 Basic Concepts

      6.1 Profiles

        6.1.1 On-demand Profiles

        6.1.2 Persistent Profiles

      6.2 Experiments

        6.2.1 Extending Experiments

      6.3 Projects

      6.4 Physical Machines

      6.5 Virtual Machines and Containers

    7 Resource Reservations

      7.1 What Reservations Guarantee

      7.2 How Reservations May Affect You

      7.3 Making a Reservation

      7.4 Using a Reservation

    8 Describing a profile with python and geni-lib

      8.1 A single XEN VM node

      8.2 A single physical host

      8.3 Two XenVM nodes with a link between them

      8.4 Two ARM64 servers in a LAN

      8.5 A VM with a custom size

      8.6 Set a specific IP address on each node

      8.7 Specify an operating system and set install and execute scripts

      8.8 Profiles with user-specified parameters

      8.9 Add temporary local disk space to a node

      8.10 Creating a reusable dataset

      8.11 Debugging geni-lib profile scripts

    9 Virtual Machines and Containers

      9.1 Xen VMs

        9.1.1 Controlling CPU and Memory

        9.1.2 Controlling Disk Space

        9.1.3 Setting HVM Mode

      9.2 Docker Containers

        9.2.1 Basic Examples

        9.2.2 Disk Images

        9.2.3 External Images

        9.2.4 Dockerfiles

        9.2.5 Augmented Disk Images

        9.2.6 Remote Access

        9.2.7 Console

        9.2.8 ENTRYPOINT and CMD

        9.2.9 Shared Containers

        9.2.10 Privileged Containers

        9.2.11 Remote Blockstores

        9.2.12 Temporary Block Storage

        9.2.13 DockerContainer Member Variables

    10 Advanced Topics

      10.1 Disk Images

      10.2 RSpecs

      10.3 Public IP Access

        10.3.1 Dynamic Public IP Addresses

      10.4 Markdown

      10.5 Introspection

        10.5.1 Client ID

        10.5.2 Control MAC

        10.5.3 Manifest

        10.5.4 Private key

        10.5.5 Profile parameters

      10.6 User-controlled switches and layer-1 topologies

    11 Hardware

      11.1 CloudLab Utah

      11.2 CloudLab Wisconsin

      11.3 CloudLab Clemson

      11.4 Apt Cluster

      11.5 IG-DDC Cluster

    12 Planned Features

      12.1 Improved Physical Resource Descriptions

    13 CloudLab OpenStack Tutorial

      13.1 Objectives

      13.2 Prerequisites

      14.4 Logging In

        14.4.1 Using a CloudLab Account

        14.4.2 Using a GENI Account

      13.4 Building Your Own OpenStack Cloud

      13.5 Exploring Your Experiment

        13.5.1 Experiment Status

        13.5.2 Profile Instructions

        13.5.3 Topology View

        13.5.4 List View

        13.5.5 Manifest View

        13.5.6 Graphs View

        13.5.7 Actions

        13.5.8 Web-based Shell

        13.5.9 Serial Console

      13.6 Bringing up Instances in OpenStack

      13.7 Administering OpenStack

        13.7.1 Log Into The Control Nodes

        13.7.2 Reboot the Compute Node

      13.8 Terminating the Experiment

      13.9 Taking Next Steps

    14 CloudLab Chef Tutorial

      14.1 Objectives

      14.2 Motivation

      14.3 Prerequisites

      14.4 Logging In

        14.4.1 Using a CloudLab Account

        14.4.2 Using a GENI Account

      14.5 Launching Chef Experiments

      14.6 Exploring Your Experiment

        14.6.1 Experiment Status

        14.6.2 Profile Instructions

        14.6.3 Topology View

        14.6.4 List View

        14.6.5 Manifest View

        14.6.6 Actions

      14.7 Brief Introduction to Chef

      14.8 Logging in to the Chef Web Console

        14.8.1 Web-based Shell

        14.8.2 Chef Web Console

      14.9 Configuring NFS

        14.9.1 Exploring The Structure

      14.10 Apache Web Server and ApacheBench Benchmarking tool

        14.10.1 Understanding the Internals

      14.11 Final Remarks about Chef on CloudLab

      14.12 Terminating Your Experiment

      14.13 Future Steps

    15 Getting Help