Project

General

Profile

Actions

Pulp 3 Integration » History » Revision 61

« Previous | Revision 61/86 (diff) | Next »
Samir Jha, 09/23/2020 07:55 PM


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 swig3
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

Adding the certguard plugin:
sudo pip3 install pulp_certguard
sudo pip3 install python-dateutil
sudo pip3 install rhsm
sudo systemctl restart pulpcore*

  • 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
  • Enable Katello Applicability
    1. Add the following to ~/foreman/config/settings.plugins.d/katello.yaml:
:katello_applicability: true

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 :

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 swig3

sudo pip3 install "git+https://github.com/pulp/pulpcore.git" \
  "git+https://github.com/pulp/pulp_file.git" \
  "git+https://github.com/pulp/pulp_rpm.git" \
  "git+https://github.com/pulp/pulp_container.git" \
  "git+https://github.com/pulp/pulp-2to3-migration.git" 

cd /tmp
sudo -u pulp PULP_SETTINGS='/etc/pulp/settings.py'  /usr/local/bin/pulpcore-manager migrate

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

Next update your box following steps to enable pulp-certguard:

sudo pip3 install pulp_certguard
sudo pip3 install python-dateutil
sudo pip3 install rhsm

Ensure you have dynaconf >=3.1 on your proxy under /usr/local/lib/pulp/lib/python3.6/site-packages and update /etc/pulp/settings.py to add the following 2 settings:

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

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

  • sudo systemctl stop pulpcore*
  • sudo su - postgres
  • dropdb pulp -p 7878
  • createdb pulp -p 7878
  • exit
  • cd /usr/local/lib/pulp/src/pulpcore/
  • sudo -u pulp PULP_SETTINGS='/etc/pulp/settings.py' DJANGO_SETTINGS_MODULE='pulpcore.app.settings' /usr/local/lib/pulp/bin/django-admin migrate --no-input
  • sudo -u pulp PULP_SETTINGS='/etc/pulp/settings.py' DJANGO_SETTINGS_MODULE='pulpcore.app.settings' /usr/local/lib/pulp/bin/django-admin reset-admin-password --password password
  • Copy /etc/httpd/conf.d/05-foreman-ssl.d/pulpcore.conf from your dev box to proxy
  • sudo systemctl restart pulpcore*

Example for querying the Pulp 3 API in a development environment:
curl https://`hostname`/pulp/api/v3/status/   --cert /etc/pki/katello/certs/pulp-client.crt  --key /etc/pki/katello/private/pulp-client.key

Other Resources

Updated by Samir Jha about 4 years ago · 86 revisions