Project

General

Profile

Pulp 3 Integration

This page is meant to capture links to various resources around pulp3 integration

Katello Dev box with pulp3:

  • vagrant up katello-dev-box
  • vagrant ssh katello-dev-box

Adding the yum plugin:
sudo yum install -y gcc make cmake bzip2-devel expat-devel file-devel glib2-devel libcurl-devel libmodulemd2-devel ninja-build libxml2-devel python36-devel python36-gobject rpm-devel openssl-devel sqlite-devel xz-devel zchunk-devel zlib-devel
sudo pip3 install scikit-build nose
sudo pip3 install pulp-rpm==3.0.0
cd /usr/lib/python3.6/site-packages/pulpcore
sudo -u pulp PULP_SETTINGS='/etc/pulp/settings.py' DJANGO_SETTINGS_MODULE='pulpcore.app.settings' python3-django-admin migrate --no-input
sudo systemctl restart pulpcore-resource-manager pulpcore-content pulpcore-api pulpcore-worker@1 pulpcore-worker@2

  • Refresh the smart proxy
    1. login to katello/foreman
    2. navigate to infrastructure > smart proxies
    3. click 'refresh' in the list of actions beside your smart proxy

You should now see file, docker and yum as supported content type under pulpcore in the Services tab

Katello Dev box with pulp3 on master:

On a devel box provisioned with steps above, run :

cd /usr/lib/python3.6/site-packages/
sudo pip3 install "git+https://github.com/pulp/pulpcore.git" 
sudo pip3 install scikit-build nose
sudo yum install -y gcc make cmake bzip2-devel expat-devel file-devel glib2-devel libcurl-devel libmodulemd2-devel ninja-build libxml2-devel python36-devel python36-gobject rpm-devel openssl-devel sqlite-devel xz-devel zchunk-devel zlib-devel
sudo pip3 install "git+https://github.com/pulp/pulp_file.git" 
sudo pip3 install "git+https://github.com/pulp/pulp_rpm.git" 
sudo pip3 install "git+https://github.com/pulp/pulp_container.git" 
sudo pip3 install "git+https://github.com/pulp/pulp-2to3-migration.git" 
sudo rm -rf pulpcore*
sudo rm -rf pulp_*
sudo rm -rf redis*
sudo mv /usr/local/lib/python3.6/site-packages/pulp* /usr/lib/python3.6/site-packages/
sudo mv /usr/local/lib/python3.6/site-packages/redis* /usr/lib/python3.6/site-packages/
cd ~/foreman
bundle exec rails katello:reset

Add the following to your /etc/pulp/settings.py

AUTHENTICATION_BACKENDS = ['pulpcore.app.authentication.PulpNoCreateRemoteUserBackend']

REST_FRAMEWORK__DEFAULT_AUTHENTICATION_CLASSES = (
    'rest_framework.authentication.SessionAuthentication',
    'pulpcore.app.authentication.PulpRemoteUserAuthentication'
)

Updating to a New Pulp Version in master & nightly:

1. Install new version locally ontop of existing version with a pip3 install command
2. Identify any installer changes, open installer PRs
3. Identify katello updates:
  • Updating pulp client gem bindings in katello.gemspec
  • re-record vcr cassettes
  • Identify any katello code changes needed to fix test cases
  • open katello PR with changes

4. Update client binding rpms at foreman-packaging
5. Request rpm builds email or open a pr ourselves: https://github.com/evgeni/pulpcore-packaging#build

Old (ansible-based) way to deploy pulp3:

  • Install a katello dev environment with forklift
  • Install the following packages in your dev box:
    sudo yum -y install https://people.redhat.com/iballou/libcomps-0.1.12-1.git.0.937a666.el7.x86_64.rpm

    sudo yum -y install https://people.redhat.com/iballou/python3-libcomps-0.1.12-1.git.0.937a666.el7.x86_64.rpm
  • checkout this forklift pr if its not merged: https://github.com/theforeman/forklift/pull/980
  • setup ansible-pulp:
    cd forklift
    git clone https://github.com/pulp/ansible-pulp.git
    cd ansible-pulp
    ansible-galaxy install -r requirements.yml -p ./roles
    ansible-galaxy install pulp.pulp_rpm_prerequisites -p ./roles
    
  • within forkflift run:
    ansible-playbook ./playbooks/katello_pulp3.yml -l centos7-katello-devel
    
  • Refresh the smart proxy:

    1. login to katello/foreman
    2. navigate to infrastructure > smart proxies
    3. click 'refresh' in the list of actions beside your smart proxy
    You're now rockin' Pulp3

  • Known Issue: Can't seem to use pulp3 on the box since pulp-api.service fails to start.
    sudo chmod -R 777 /etc/pki/pulp/
    sudo systemctl restart pulpcore-api.service
    
  • Reset the Katello Pulp 3 Dev Environment
    From within the Foreman directory:
    bundle exec rake katello:reset

Smart Proxy Setup:

  • Install a smart proxy to point to your pulp3_dev box
  • ssh into the smart proxy
  • sudo mkdir /etc/httpd/conf.d/05-foreman-ssl.d
  • sudo vi /etc/httpd/conf/httpd.conf
  • Add IncludeOptional "/etc/httpd/conf.d/05-foreman-ssl.d/*.conf to the end of the file and save
  • In forklift > Run ansible-playbook ./playbooks/katello_pulp3.yml -l centos7-proxy-devel

Other Resources