Project

General

Profile

Pulp 3 Integration » History » Revision 69

Revision 68 (Ian Ballou, 02/08/2021 06:16 PM) → Revision 69/86 (Samir Jha, 03/24/2021 01:41 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: 

 Dev boxes are deployed with pulp3 by default, via an rpm installation 
 * vagrant up katello-dev-box 
 * vagrant ssh katello-dev-box 

 


 h2. Katello Dev box with pulp3 on master: 

 Dev boxes come installed and configured to use yum, docker and files on pulp3.  
 To enable ansible collection content type, you need to perform the following On a devel box provisioned with steps on the devel box: above, run : 

 #    <pre> 
 #    sudo pip3 install pulp-ansible==0.5.8 scikit-build nose 
 #    sudo mv /usr/local/lib/python3.6/site-packages/pulp_ansibl* /usr/local/lib/python3.6/site-packages/ 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> 
 #    In file ~/foreman/config/settings.plugins.d/katello.yaml,  
 #    Add :ansible_collection: true to the dict of content types. 
 #    Restart foreman server and refresh smart proxy features.  

 


 h2. Updating to a New Pulp Version in master & nightly: 

 1.    Request build of new version from build team unless its already built: http://yum.theforeman.org/pulpcore/    (https://github.com/theforeman/pulpcore-packaging) 
 2.    Install new version locally on top of existing version with a pip3 install command, or use rpms if they are built 
 3.    Identify any installer changes, open installer PRs 
 4.    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 

 5. Update katello-repos in https://github.com/theforeman/foreman-packaging to point to the new version 
 6. Update forklift to deploy with the new version: https://github.com/theforeman/forklift/blob/master/vagrant/config/versions.yaml 

 5. Update client binding rpms at foreman-packaging 

 h2. Installing on a smart proxy:    The old (ansible-based) way to deploy pulp3: 

 * vagrant up centos7-proxy-devel 
 * Install the following packages in your dev box:  
 * checkout this forklift pr: 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> 

 * if this fails, run on the capsule: 
 <pre> 
 rm -rf /usr/lib/python3.6/site-packages/setuptools* -rf 
 </pre> 
  and re-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 

 *To revert to pulp2 on smart proxy:* 

 vi /etc/foreman-proxy/settings.d/pulpcore.yml  
 set enabled to false 
 sudo systemctl restart foreman-proxy 
 Refresh features of proxy 

 h2. Reset the Katello Pulp 3 Dev Environment 
 From within the Foreman directory this will take care of it: 
 <pre>bundle exec rake katello:reset</pre> 

 To ONLY reset the pulp3 db (if you know what your doing): 
 <pre> 
 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* 
 </pre> 

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

 Recommendation: try the pulp-cli: https://github.com/pulp/pulp-cli#katello 

 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