Quick Start

Login

The default admin password is “admin”.

$ pulp-admin login -u admin
Enter password:
Successfully logged in. Session certificate will expire at Dec 14 18:50:41 2012
GMT.

Create a Repository

This creates a basic repository that will fetch modules from Puppet Forge.

$ pulp-admin puppet repo create --repo-id=repo1 --description="Mirror of Puppet Forge" --display-name="Repo 1" --feed=http://forge.puppetlabs.com
Successfully created repository [repo1]

By default, Pulp will serve this repository over HTTP without SSL. Adding --serve-https=true would cause it to also be served over HTTPS. Non-SSL HTTP can similarly be disabled.

Update a Repository

Let’s add a query to limit the scope of how many modules get synced.

Note

The --query option was deprecated in version 2.1

$ pulp-admin puppet repo update --repo-id=repo1 --queries=libvirt
Repository [repo1] successfully updated

List Repositories

$ pulp-admin puppet repo list
+----------------------------------------------------------------------+
                          Puppet Repositories
+----------------------------------------------------------------------+

Id:                 repo1
Display Name:       Repo 1
Description:        Mirror of Puppet Forge
Content Unit Count: 0

To include more details, use the --details flag.

$ pulp-admin puppet repo list --details
+----------------------------------------------------------------------+
                          Puppet Repositories
+----------------------------------------------------------------------+

Id:                 repo1
Display Name:       Repo 1
Description:        Mirror of Puppet Forge
Content Unit Count: 0
Notes:
Importers:
  Config:
    Feed:    http://forge.puppetlabs.com
    Queries: libvirt
  Id:               puppet_importer
  Importer Type Id: puppet_importer
  Last Sync:        None
  Repo Id:          repo1
  Scheduled Syncs:
  Scratchpad:       None
Distributors:
  Auto Publish:        True
  Config:
  Distributor Type Id: puppet_distributor
  Id:                  puppet_distributor
  Last Publish:        None
  Repo Id:             repo1
  Scheduled Publishes:
  Scratchpad:          None

Search Repositories

This is a search for all repositories with more than 0 modules.

$ pulp-admin puppet repo search --gt='content_unit_count=0'
+----------------------------------------------------------------------+
                              Repositories
+----------------------------------------------------------------------+

Id:                 forge
Display Name:       forge
Description:        None
Content Unit Count: 669
Notes:
Scratchpad:

Id:                 repo1
Display Name:       Repo 1
Description:        Mirror of Puppet Forge
Content Unit Count: 2
Notes:
Scratchpad:

Sync a Repository

This process downloads content from an existing repository and places it into a repository hosted by Pulp. This allows you to make a local copy of all or part of a remote repository.

$ pulp-admin puppet repo sync run --repo-id=repo1
+----------------------------------------------------------------------+
                    Synchronizing Repository [repo1]
+----------------------------------------------------------------------+

This command may be exited by pressing ctrl+c without affecting the actual
operation on the server.

Downloading metadata...
[==================================================] 100%
Metadata Query: 1/1 items
... completed

Downloading new modules...
[==================================================] 100%
Module: 2/2 items
... completed

Publishing modules...
[==================================================] 100%
Module: 2/2 items
... completed

Generating repository metadata...
[-]
... completed

Publishing repository over HTTP...
... completed

Publishing repository over HTTPS...
... skipped

At this point, the repository has been published and is available via HTTP. You can see it at http://localhost/pulp/puppet/repo1/ (adjust the hostname as necessary).

List Modules in a Repository

$ pulp-admin puppet repo modules --repo-id=repo1
Name:         libvirt
Version:      0.0.1
Author:       thias
Dependencies:
Description:  Install, configure and enable libvirt.
License:      Apache 2.0
Project Page: http://glee.thias.es/puppet
Source:       git://github.com/thias/puppet-modules/modules/libvirt
Summary:      Libvirt virtualization API and capabilities
Tag List:     rhel, libvirt, kvm, CentOS
Types:

Name:         virt
Version:      1.0.0
Author:       carlasouza
Dependencies:
Description:  None
License:      GPLv3
Project Page: None
Source:
Summary:      None
Tag List:     virtualization, kvm, xen, openvz, libvirt
Types:

To be more specific, we can search by name.

$ pulp-admin puppet repo modules --repo-id=repo1 --str-eq='name=libvirt'
Name:         libvirt
Version:      0.0.1
Author:       thias
Dependencies:
Description:  Install, configure and enable libvirt.
License:      Apache 2.0
Project Page: http://glee.thias.es/puppet
Source:       git://github.com/thias/puppet-modules/modules/libvirt
Summary:      Libvirt virtualization API and capabilities
Tag List:     rhel, libvirt, kvm, CentOS
Types:

Or by license, and for fun let’s use a regex.

$ pulp-admin puppet repo modules --repo-id=repo1 --match='license=^GPL.*'
Name:         virt
Version:      1.0.0
Author:       carlasouza
Dependencies:
Description:  None
License:      GPLv3
Project Page: None
Source:
Summary:      None
Tag List:     virtualization, kvm, xen, openvz, libvirt
Types:

Copy Modules Between Repositories

Assuming we have repositories “repo1” and “repo2”, and “repo1” has two units as a result of the above sync.

$ pulp-admin puppet repo create --repo-id=repo2
Successfully created repository [repo2]

$ pulp-admin puppet repo copy --from-repo-id=repo1 --to-repo-id=repo2 --str-eq='name=libvirt'
Progress on this task can be viewed using the commands under "repo tasks".

$ pulp-admin repo tasks list --repo-id=repo1
+----------------------------------------------------------------------+
                                 Tasks
+----------------------------------------------------------------------+

Operations:  associate
Resources:   repo2 (repository), repo1 (repository)
State:       Successful
Start Time:  Unstarted
Finish Time: 2012-12-07T19:04:54Z
Result:      Incomplete
Task Id:     54459b2f-6ed9-4918-94c9-63e2b3370554

Upload a module

Assuming we have a repository with repo-id repo1 we can upload an archive containing a Puppet module. This operation does not auto publish the repository.

$ pulp-admin puppet repo uploads upload --file puppetlabs-apache-1.4.0.tar.gz --repo-id repo1
  +----------------------------------------------------------------------+
                                Unit Upload
  +----------------------------------------------------------------------+

  Extracting necessary metadata for each request...
  [==================================================] 100%
  Analyzing: puppetlabs-apache-1.4.0.tar.gz
  ... completed

  Creating upload requests on the server...
  [==================================================] 100%
  Initializing: puppetlabs-apache-1.4.0.tar.gz
  ... completed

  Starting upload of selected units. If this process is stopped through ctrl+c,
  the uploads will be paused and may be resumed later using the resume command or
  cancelled entirely using the cancel command.

  Uploading: puppetlabs-apache-1.4.0.tar.gz
  [==================================================] 100%
  147426/147426 bytes
  ... completed

  Importing into the repository...
  This command may be exited via ctrl+c without affecting the request.


  [\]
  Running...

  Task Succeeded


  Deleting the upload request...
  ... completed

Publish a Repository

By default, repositories are auto-published following a sync. However, if you create an new repository and populate it with content by copying and/or uploading modules, you will need to publish manually. Since that is the case for “repo2” into which we just copied a module, let’s publish that repo.

$ pulp-admin puppet repo publish run --repo-id=repo2
+----------------------------------------------------------------------+
                     Publishing Repository [repo2]
+----------------------------------------------------------------------+

This command may be exited by pressing ctrl+c without affecting the actual
operation on the server.

Publishing modules...
[==================================================] 100%
Module: 1/1 items
... completed

Generating repository metadata...
[-]
... completed

Publishing repository over HTTP...
... completed

Publishing repository over HTTPS...
... skipped

Delete a Repository

$ pulp-admin puppet repo delete --repo-id=repo1
Repository [repo1] successfully deleted