Skip to main content
Data Science & AI Workbench enables you to create local copies of a repositories so users can access packages from a centralized, on-premise location. This process is called mirroring. You can mirror the full content of a repository, or include only specific packages or types of packages from the repository in your mirror. You can also create mirrors in an air-gapped network improve performance and security. You can mirror an online repository, or you can use a tarball containing package data to populate a channel in Workbench. Prerequisites:
It can take several hours to mirror an entire repository, depending on its size.

Creating a conda mirror

The basic steps for creating a conda mirror are:
  1. Prepare your mirror configuration file.
  2. Log in to the Workbench CLI.
  3. If necessary, create a channel in the internal Workbench repository.
  4. Initiate the mirror by running the following command:
    Append --dry-run to the command to see what actions would be taken by the mirror, without performing actual modifications.

Preparing your mirror configuration file

Create a <mirror>.yaml file that details the configurations for the mirror.
You can name this file whatever you’d like. Anaconda recommends naming it the same as the channel you are mirroring to.

Basic configurations

Define source channel locations, package platforms, and destination/storage location details. Manage package formats, clean up outdated packages, and test configurations without applying changes by including these configurations.

Filtering configurations

Fine-tune which packages are included in the mirror. Specify versions of Python or R packages that your packages should be compatible with, include only specific packages, or exclude packages by name and license family type.
For more information about MatchSpec, see package match specifications.

Advanced configurations

Configure repository authentication, enforce platform restrictions, and manage SSL verification for secure connections.
If Workbench is installed in a proxied environment, see Configuring conda in Workbench for information on setting the NO_PROXY variable.

Repository-specific configurations

JFrog Artifactory

For Artifactory destinations, the dest_site can be a repository hostname, or a full URL.
If you supply the hostname only, anaconda-mirror interprets the channel path as:
To authenticate to a JFrog Artifactory repository
  • Configure the username and password values in your .yaml file to contain your credentials. If both values are supplied, they are delivered using basic HTTP authentication. You can substitute an access token for your password if necessary.
  • Configure just the password value in your .yaml file. This is delivered as a bearer token using the Authorization: Bearer header. This must be an access token.
  • Configure your .netrc file to store your username and password for the repository. These values are delivered using basic HTTP authentication.

S3 bucket

For Simple Storage Service (S3) buckets, the channel path is a concatenation of the dest_site and dest_channel values. For example, if you were mirroring to an S3 bucket, your dest_site would be set to <bucket_name>/full/path/to/ and the full channel path is interpreted as:
Authentication to an S3 source is currently controlled entirely by the environment. For example, you can use the aws CLI tool to configure the target region and authenticate. You might want to use the AWS_PROFILE environment variable to select among multiple configurations.

Local

Much like the S3 bucket, the local repository channel path consists of a concatenation of the dest_site and dest_channel values. No authentication is necessary for local repositories.

anaconda-enterprise-cli

The dest_site value defaults to the <SITE_NAME> value established when you configure the workbench CLI. If you have only configured the CLI to be able to access one site (that is, your Workbench instance), there is no need to specify this value. Authentication is handled when you log in to the CLI.

Example conda and R mirrors

Here are some example mirror .yaml files you can use to mirror some common repositories:

Mirroring a PyPI repository

The full PyPI mirror size is currently close to 10TB, so ensure that your file storage location has sufficient disk space before proceeding. Because anaconda-mirror does not handle .pip package formatting, mirrors for PyPI repositories containing such packages are managed by the anaconda-enterprise-cli tool. The steps are identical to creating a conda mirror:
  1. Prepare your mirror configuration file.
  2. Log in to the Workbench CLI.
  3. If necessary, create a channel in the internal Workbench repository.
  4. Initiate the mirror by running the following command:
This command loads the packages on https://pypi.org into the user’s account. Mirrored packages can be viewed at https://<FQDN>/repository/pypi/pypi/simple/, replacing <FQDN> with the fully qualified domain name of your installation of Workbench. (The second pypi in the url should match the user configuration value described below.) PyPI configurations: PyPI mirror .yaml configuration values consist of the following:
All mirrored PyPI-like channels are publicly available to pull packages from both inside and outside Workbench (no authentication is required).

Configuring pip

To configure pip to use this new mirror, create pip.conf as follows:
To configure Workbench sessions and deployments to automatically use the pip.conf, run the following command.
For more specific information on configuring pip, see the official pip documentation.