Project

General

Profile

Pulp 3 Integration » History » Revision 75

Revision 74 (Justin Sherrill, 06/03/2021 03:06 PM) → Revision 75/86 (Justin Sherrill, 09/08/2021 12:29 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 steps on the devel box: 

 #    <pre> 
 #    sudo pip3 install pulp-ansible==0.7.0 
 #    sudo mv /usr/local/lib/python3.6/site-packages/pulp_ansibl* /usr/lib/python3.6/site-packages/ 
 #    sudo -u pulp PULP_SETTINGS='/etc/pulp/settings.py' DJANGO_SETTINGS_MODULE='pulpcore.app.settings' python3-django-admin migrate --no-input 
 #    </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 via the discourse Development discussion unless its already built: http://yum.theforeman.org/pulpcore/    (https://github.com/theforeman/pulpcore-packaging).    List the plugin versions you would like (usually the latest of them all) and request a time frame (try to give ~2 weeks). Example: https://community.theforeman.org/t/request-for-pulpcore-3-13-builds/23855 
 1.    Send an email to satellite-delivery@redhat.com and link to the discourse thread. 
 2.    Once the new yum repo is available, update your pulp packages locally on your devel environment.    If you are wanting to jump ahead, try to pip3 install the new versions and pray. 
 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. Using Installing on a 2nd server as a pulp server, for use in development. 
 If you have a devel environment and want smart proxy:    The old (ansible-based) way to spin deploy pulp3: 

 * vagrant up a 2nd centos7-proxy-devel 
 * Install the following packages in your dev box via pulp_installer to test with, for example to dev or test against a pulp version that doesn't have rpm builds yet. 

 1.    Spinup a fresh dev environment, or reset your old one with 'bundle exec rake katello:reset' box:  
 * checkout this forklift pr: https://github.com/theforeman/forklift/pull/980 
 2.    On your hypervisor, * setup pulp-installer: ansible-pulp: 
 <pre> 
 git clone https://github.com/pulp/pulp_installer 
 cd pulp_installer forklift 
 git clone    https://github.com/theforeman/forklift.git https://github.com/pulp/ansible-pulp.git 
 </pre> cd ansible-pulp 
 3.    edit pulp_installer/example.user-config.yml    uncomment plugins to ansible-galaxy install -r requirements.yml -p ./roles 
 4.    Spin up PULP3 Box: ansible-galaxy install pulp.pulp_rpm_prerequisites -p ./roles 
 <pre> 
 vagrant up pulp3-sandbox-centos7 
 vagant ssh pulp3-sandbox-centos7 
 </pre> 


 * within forkflift run: 
 5.    grab the ip address and hostname of the PULP3 box: 
 <pre> 
 sudo yum install net-tools ansible-playbook ./playbooks/katello_pulp3.yml -l centos7-katello-devel 
 hostname 
 ifconfig 
 </pre> 
 6.    Add hostname/ipaddress to /etc/hosts 

 * if this fails, run on the KATELLO server, as root: capsule: 
 <pre> 
    echo "192.168.0.8    pulp3-sandbox-centos7.example.com" >> /etc/hosts 
 rm -rf /usr/lib/python3.6/site-packages/setuptools* -rf 
 </pre>  
 7.    Reset the admin password on the PULP3 Box: 
  and re-run: 
 <pre> 
 sudo pulpcore-manager reset-admin-password --password password ansible-playbook ./playbooks/katello_pulp3.yml -l centos7-katello-devel 
 </pre> 

 8.    copy contents * Refresh the smart proxy:  

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

 *To revert to pulp2 on PULP box smart proxy:* 

 vi /etc/foreman-proxy/settings.d/pulpcore.yml  
 set enabled to the KATELLO box in file: /etc/pki/ca-trust/source/anchors/pulpcore.crt false 
 9.    Update ca trust: sudo systemctl restart foreman-proxy 
 <pre> Refresh features of proxy 

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

 10. On To ONLY reset the KATELLO box, reconfigure the smart proxy plugin, edit    /etc/foreman-proxy/settings.d/pulpcore.yml    replace contents with (Substituting correct hostname): pulp3 db (if you know what your doing): 
 <pre> 
 --- sudo systemctl stop pulpcore* 
 :enabled: https sudo su - postgres 
 :pulp_url: https://pulp3-sandbox-centos7.balmora.example.com dropdb pulp -p 7878 
 :content_app_url: https://pulp3-sandbox-centos7.balmora.example.com/pulp/content createdb pulp -p 7878 
 :mirror: false exit 
 :username: admin cd /usr/local/lib/pulp/src/pulpcore/ 
 :password: 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 
 </pre> 

 11. Copy /etc/httpd/conf.d/05-foreman-ssl.d/pulpcore.conf    restart the foreman-proxy: from your dev box to proxy 
 <pre> 
 sudo systemctl restart foreman-proxy pulpcore* 
 </pre> 
 12.    Navigate to Infrastructure > Smart proxies and refresh the smart proxy features 

 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