Pulp 3 Integration » History » Revision 57
Revision 56 (Justin Sherrill, 04/21/2020 08:35 PM) → Revision 57/86 (Samir Jha, 06/03/2020 08:39 PM)
h1. Pulp 3 Integration
This page is meant to capture links to various resources around pulp3 integration
* Initial Integration Document: https://docs.google.com/document/d/1eFM4H9BteA_nTDbUkRJgEiqSttXfAtB9-51a_OuwVJw/edit?usp=sharing
* Initial Community Post: https://community.theforeman.org/t/pulp-3-migration/10474
* Youtube Videos: https://www.youtube.com/playlist?list=PL59WSIBtIpv7tbjnsEAWNcdiOKAmjjgqE
* Tasks List: https://docs.google.com/spreadsheets/d/1PFx-VAEXlivlqDYR9INMW26AUWtuMS_XtEnwhFVP5Rc/edit?usp=sharing
* Main Tracker: https://projects.theforeman.org/issues/26987
h2. Katello Dev box with pulp3:
* vagrant up katello-dev-box
* vagrant ssh katello-dev-box
h2. Adding the yum plugin:
<pre>
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
</pre>
h2. Adding the certguard plugin:
<pre>
sudo pip3 install pulp_certguard
sudo pip3 install python-dateutil
sudo pip3 install rhsm
sudo systemctl restart pulpcore*
</pre>
* Refresh the smart proxy
# login to katello/foreman
# navigate to infrastructure > smart proxies
# 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*
h2. Katello Dev box with pulp3 on master:
On a devel box provisioned with steps above, run :
<pre>
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
</pre>
Add the following to your /etc/pulp/settings.py
<pre>
AUTHENTICATION_BACKENDS = ['pulpcore.app.authentication.PulpNoCreateRemoteUserBackend']
REST_FRAMEWORK__DEFAULT_AUTHENTICATION_CLASSES = (
'rest_framework.authentication.SessionAuthentication',
'pulpcore.app.authentication.PulpRemoteUserAuthentication'
)
</pre>
h2. 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 satellite6-build@redhat.com or open a pr ourselves: https://github.com/evgeni/pulpcore-packaging#build
h2. Old (ansible-based) way to deploy pulp3:
* Install a katello dev environment with forklift
* Install the following packages in your dev box:
<pre>sudo yum -y install https://people.redhat.com/iballou/libcomps-0.1.12-1.git.0.937a666.el7.x86_64.rpm</pre>
<pre>sudo yum -y install https://people.redhat.com/iballou/python3-libcomps-0.1.12-1.git.0.937a666.el7.x86_64.rpm</pre>
* checkout this forklift pr if its not merged: https://github.com/theforeman/forklift/pull/980
* setup ansible-pulp:
<pre>
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
</pre>
* within forkflift run:
<pre>
ansible-playbook ./playbooks/katello_pulp3.yml -l centos7-katello-devel
</pre>
* 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.
<pre>
sudo chmod -R 777 /etc/pki/pulp/
sudo systemctl restart pulpcore-api.service
</pre>
* Reset the Katello Pulp 3 Dev Environment
From within the Foreman directory:
<pre>bundle exec rake katello:reset</pre>
h2. 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
h3. Other Resources
* pulp3 gap analysis wiki https://projects.theforeman.org/projects/katello/wiki/PulpV3GapAnalysis
* pulp3 gap analysis etherpad https://etherpad.net/p/pulp3_container
* pulp3 docker roadmap https://pulp.plan.io/projects/pulp/wiki/Pulp_Docker_Roadmap