On this page:
The Apt Manual
2020-07-23 (06836dc)

The Apt Manual

Robert Ricci,
Leigh Stoller,
Kirk Webb,
Jon Duerig,
Gary Wong,
Keith Downie,
Mike Hibler,
and Eric Eide

Apt is a platform for sharing research; it is open to all researchers, educators, and students. It is built around profiles, which describe experiments; when you instantiate a profile, that specification is realized on one of Apt’s clusters using virtual or physical machines. The creator of a profile may put code, data, and other resources into it, and the profile may consist of a single machine or may describe an entire network.

Basic access to public profiles on Apt is provided without the need to register for an account—this keeps the barriers to accessing research artifacts low. If you find the limited resources that are provided to guest users valuable, you should sign up for a (free) account to get access to more resources and to create profiles of your own.

Setting up the software environment to run research artifacts is often complicated, potentially requiring a specific version of an operating system, dependencies on a large number of packages, and a complicated build and configuration process for the research software.

Setting up the hardware environment can be even more troublesome, especially when one wants to reproduce published results, which may be highly sensitive to the specific hardware they were gathered on. The problem becomes complicated when more than one machine is needed to run the experiment.

Apt’s profiles capture this by describing both the software needed to run an experiment and the hardware (physical or virtual) that the software needs to run. By providing a hardware platform for running these profiles, Apt essentially enables researchers to build their own testbed environments and share them with others, without having to buy, build, or maintain the underlying infrastructure.

Apt is built on Emulab and GENI technologies. It is built and operated by the Flux Research Group, part of the University of Utah’s School of Computing. Apt is supported by the National Science Foundation under award CNS-1338155 and by the University of Utah.

    1 Getting Started

      1.1 Next Steps

    2 Apt Users

      2.1 Register for an Account

        2.1.1 Join an existing project

        2.1.2 Create a new project

        2.1.3 Setting up SSH access

        2.1.4 Setting up X11

    3 Apt and Repeatable Research

    4 Creating Profiles

      4.1 Creating a profile from an existing one

        4.1.1 Preparation and precautions

        4.1.2 Cloning a Profile

        4.1.3 Copying a Profile

        4.1.4 Creating the Profile

        4.1.5 Updating a profile

      4.2 Creating a profile with a GUI

      4.3 Repository-Based Profiles

        4.3.1 Updating Repository-Based Profiles

        4.3.2 Branches and Tags in Repository-Based Profiles

      4.4 Creating a profile from scratch

      4.5 Sharing Profiles

      4.6 Versioned Profiles

    5 Basic Concepts

      5.1 Profiles

        5.1.1 On-demand Profiles

        5.1.2 Persistent Profiles

      5.2 Experiments

        5.2.1 Extending Experiments

      5.3 Projects

      5.4 Physical Machines

      5.5 Virtual Machines and Containers

    6 Describing a profile with python and geni-lib

      6.1 A single XEN VM node

      6.2 A single physical host

      6.3 Two XenVM nodes with a link between them

      6.4 Two ARM64 servers in a LAN

      6.5 A VM with a custom size

      6.6 Set a specific IP address on each node

      6.7 Specify an operating system and set install and execute scripts

      6.8 Profiles with user-specified parameters

      6.9 Add storage to a node

      6.10 Debugging geni-lib profile scripts

    7 Advanced Topics

      7.1 Disk Images

      7.2 Storage Mechanisms

        7.2.1 Overview of Storage Mechanisms

        7.2.2 Node-Local Storage

          7.2.2.1 Specifying Storage in a Profile – Local Datasets

          7.2.2.2 Allocating Storage in a Running Experiment

          7.2.2.3 Persisting Local Data

        7.2.3 Image-backed Datasets

        7.2.4 Remote Datasets

        7.2.5 NFS Shared Filesystems

        7.2.6 Storage Type Summary (TL;DR)

        7.2.7 Example Storage Profiles

          7.2.7.1 Creating a Node-local Dataset

          7.2.7.2 Creating an Image-backed Dataset from a Node-local Dataset

          7.2.7.3 Using and Updating an Image-backed Dataset

          7.2.7.4 Creating a Remote Dataset

          7.2.7.5 Using a Remote Dataset on a Single Node

          7.2.7.6 Using a Remote Dataset on Multiple Nodes via a Shared Filesystem

          7.2.7.7 Using a Remote Dataset on Multiple Nodes via Clones

      7.3 RSpecs

      7.4 Public IP Access

        7.4.1 Dynamic Public IP Addresses

      7.5 Markdown

      7.6 Introspection

        7.6.1 Client ID

        7.6.2 Control MAC

        7.6.3 Manifest

        7.6.4 Private key

        7.6.5 Profile parameters

      7.7 User-controlled switches and layer-1 topologies

      7.8 Portal API

    8 Hardware

      8.1 Apt Cluster

      8.2 CloudLab Utah

    9 Planned Features

      9.1 Simpler Virtual/Physical Profile Switching

      9.2 Improved Physical Resource Descriptions

    10 Apt OpenStack Tutorial

      10.1 Objectives

      10.2 Prerequisites

      10.3 Logging In

      10.4 Building Your Own OpenStack Cloud

      10.5 Exploring Your Experiment

        10.5.1 Experiment Status

        10.5.2 Profile Instructions

        10.5.3 Topology View

        10.5.4 List View

        10.5.5 Manifest View

        10.5.6 Graphs View

        10.5.7 Actions

        10.5.8 Web-based Shell

        10.5.9 Serial Console

      10.6 Bringing up Instances in OpenStack

      10.7 Administering OpenStack

        10.7.1 Log Into The Control Nodes

        10.7.2 Reboot the Compute Node

      10.8 Terminating the Experiment

      10.9 Taking Next Steps

    11 Getting Help