On this page:
The Apt Manual
2020-07-15 (d7fd164)

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 Storage Mechanisms

      7.1 Overview of Storage Mechanisms

      7.2 Node-Local Storage

        7.2.1 Specifying Storage in a Profile – Local Datasets

        7.2.2 Allocating Storage in a Running Experiment

        7.2.3 Persisting Local Data

      7.3 Image-backed Datasets

      7.4 Remote Datasets

      7.5 NFS Shared Filesystems

      7.6 Storage Type Summary (TL;DR)

      7.7 Example Storage Profiles

        7.7.1 Creating a Node-local Dataset

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

        7.7.3 Using and Updating an Image-backed Dataset

        7.7.4 Creating a Remote Dataset

        7.7.5 Using a Remote Dataset on a Single Node

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

        7.7.7 Using a Remote Dataset on Multiple Nodes via Clones

    8 Advanced Topics

      8.1 Disk Images

      8.2 RSpecs

      8.3 Public IP Access

        8.3.1 Dynamic Public IP Addresses

      8.4 Markdown

      8.5 Introspection

        8.5.1 Client ID

        8.5.2 Control MAC

        8.5.3 Manifest

        8.5.4 Private key

        8.5.5 Profile parameters

      8.6 User-controlled switches and layer-1 topologies

      8.7 Portal API

    9 Hardware

      9.1 Apt Cluster

      9.2 CloudLab Utah

    10 Planned Features

      10.1 Simpler Virtual/Physical Profile Switching

      10.2 Improved Physical Resource Descriptions

    11 Apt OpenStack Tutorial

      11.1 Objectives

      11.2 Prerequisites

      11.3 Logging In

      11.4 Building Your Own OpenStack Cloud

      11.5 Exploring Your Experiment

        11.5.1 Experiment Status

        11.5.2 Profile Instructions

        11.5.3 Topology View

        11.5.4 List View

        11.5.5 Manifest View

        11.5.6 Graphs View

        11.5.7 Actions

        11.5.8 Web-based Shell

        11.5.9 Serial Console

      11.6 Bringing up Instances in OpenStack

      11.7 Administering OpenStack

        11.7.1 Log Into The Control Nodes

        11.7.2 Reboot the Compute Node

      11.8 Terminating the Experiment

      11.9 Taking Next Steps

    12 Getting Help