Pulp 3 Integration » History » Version 86
Samir Jha, 10/04/2022 04:12 PM
1 | 1 | Justin Sherrill | h1. Pulp 3 Integration |
---|---|---|---|
2 | |||
3 | This page is meant to capture links to various resources around pulp3 integration |
||
4 | |||
5 | * Initial Integration Document: https://docs.google.com/document/d/1eFM4H9BteA_nTDbUkRJgEiqSttXfAtB9-51a_OuwVJw/edit?usp=sharing |
||
6 | * Initial Community Post: https://community.theforeman.org/t/pulp-3-migration/10474 |
||
7 | * Youtube Videos: https://www.youtube.com/playlist?list=PL59WSIBtIpv7tbjnsEAWNcdiOKAmjjgqE |
||
8 | * Tasks List: https://docs.google.com/spreadsheets/d/1PFx-VAEXlivlqDYR9INMW26AUWtuMS_XtEnwhFVP5Rc/edit?usp=sharing |
||
9 | 17 | John Mitsch | * Main Tracker: https://projects.theforeman.org/issues/26987 |
10 | 2 | Justin Sherrill | |
11 | 41 | Justin Sherrill | h2. Katello Dev box with pulp3: |
12 | 40 | Samir Jha | |
13 | 62 | Justin Sherrill | Dev boxes are deployed with pulp3 by default, via an rpm installation |
14 | 40 | Samir Jha | * vagrant up katello-dev-box |
15 | 1 | Justin Sherrill | * vagrant ssh katello-dev-box |
16 | 40 | Samir Jha | |
17 | 44 | Samir Jha | h2. Katello Dev box with pulp3 on master: |
18 | 1 | Justin Sherrill | |
19 | 69 | Samir Jha | Dev boxes come installed and configured to use yum, docker and files on pulp3. |
20 | To enable ansible collection content type, you need to perform the following steps on the devel box: |
||
21 | 1 | Justin Sherrill | |
22 | 69 | Samir Jha | # <pre> |
23 | 71 | Samir Jha | # sudo pip3 install pulp-ansible==0.7.0 |
24 | 72 | Samir Jha | # sudo mv /usr/local/lib/python3.6/site-packages/pulp_ansibl* /usr/lib/python3.6/site-packages/ |
25 | 70 | Samir Jha | # sudo -u pulp PULP_SETTINGS='/etc/pulp/settings.py' DJANGO_SETTINGS_MODULE='pulpcore.app.settings' python3-django-admin migrate --no-input |
26 | 69 | Samir Jha | # </pre> |
27 | # In file ~/foreman/config/settings.plugins.d/katello.yaml, |
||
28 | # Add :ansible_collection: true to the dict of content types. |
||
29 | 70 | Samir Jha | # Restart foreman server and refresh smart proxy features. |
30 | 1 | Justin Sherrill | |
31 | h2. Updating to a New Pulp Version in master & nightly: |
||
32 | |||
33 | 81 | Justin Sherrill | 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 This command can help you get the list: |
34 | <pre> |
||
35 | 82 | Justin Sherrill | for i in pulpcore pulp-file pulp-rpm pulp-cli pulp-container pulp-ansible pulp-certguard pulp-deb pulp-python; do echo $i `curl -s https://pypi.org/pypi/$i/json |jq .info.version`; done |
36 | 81 | Justin Sherrill | </pre> |
37 | 73 | Justin Sherrill | 1. Send an email to satellite-delivery@redhat.com and link to the discourse thread. |
38 | 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. |
||
39 | 85 | Ian Ballou | 3. Add the new Pulp version to puppet-pulpcore if it isn't there already |
40 | * Example commit: https://github.com/theforeman/puppet-pulpcore/commit/6f09c2ff328fac9fcaf1388d9112a5130db3e2d7 |
||
41 | |||
42 | 4. Identify any installer changes, open installer PRs |
||
43 | 5. Identify katello updates: |
||
44 | 1 | Justin Sherrill | * Updating pulp client gem bindings in katello.gemspec |
45 | 86 | Samir Jha | * re-record vcr cassettes: |
46 | Add following to your foreman/config/settings.yaml.test file. |
||
47 | <pre> |
||
48 | # SSL settings |
||
49 | :ssl_ca_file: /home/vagrant/foreman-certs/proxy_ca.pem |
||
50 | :ssl_certificate: /home/vagrant/foreman-certs/client_cert.pem |
||
51 | :ssl_priv_key: /home/vagrant/foreman-certs/client_key.pem |
||
52 | </pre> |
||
53 | Run mode=all bundle exec rails test:katello:test:pulpcore |
||
54 | 1 | Justin Sherrill | * Identify any katello code changes needed to fix test cases |
55 | * Open katello PR with changes but do not merge yet |
||
56 | |||
57 | 85 | Ian Ballou | 6. Update katello-repos in https://github.com/theforeman/foreman-packaging to point to the new version |
58 | * If the new bindings are required for whatever reason, get them merged first. |
||
59 | |||
60 | 7. Update forklift to deploy with the new version: https://github.com/theforeman/forklift/blob/master/vagrant/config/versions.yaml |
||
61 | 8. Open a PR to update the client binding RPMs at foreman-packaging (but don't merge yet) |
||
62 | 9. Merge the Katello gemspec update PR first, and then the client bindings packaging PR |
||
63 | 10. Update rubygem-katello at foreman-packaging to have the new bindings requirements: |
||
64 | 84 | Ian Ballou | <pre> |
65 | # First, build a gem of the Katello version in question |
||
66 | # Then, cd into the foreman-packaging directory |
||
67 | gem2rpm -t gem2rpm/foreman_plugin.spec.erb /path/to/katello.gem | ./update-requirements specfile - packages/katello/rubygem-katello/rubygem-katello.spec |
||
68 | # Now, open up a PR with the rubygem-katello.spec updates |
||
69 | </pre> |
||
70 | 63 | Justin Sherrill | |
71 | |||
72 | 1 | Justin Sherrill | |
73 | 75 | Justin Sherrill | h2. Using a 2nd server as a pulp server, for use in development. |
74 | 76 | Justin Sherrill | |
75 | 75 | Justin Sherrill | If you have a devel environment and want to spin up a 2nd 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. |
76 | |||
77 | 1. Spinup a fresh dev environment, or reset your old one with 'bundle exec rake katello:reset' |
||
78 | 2. On your hypervisor, setup pulp-installer: |
||
79 | 1 | Justin Sherrill | <pre> |
80 | 75 | Justin Sherrill | git clone https://github.com/pulp/pulp_installer |
81 | cd pulp_installer |
||
82 | git clone https://github.com/theforeman/forklift.git |
||
83 | 1 | Justin Sherrill | </pre> |
84 | 75 | Justin Sherrill | 3. edit pulp_installer/example.user-config.yml uncomment plugins to install |
85 | 4. Spin up PULP3 Box: |
||
86 | 1 | Justin Sherrill | <pre> |
87 | 75 | Justin Sherrill | vagrant up pulp3-sandbox-centos7 |
88 | vagant ssh pulp3-sandbox-centos7 |
||
89 | 1 | Justin Sherrill | </pre> |
90 | 75 | Justin Sherrill | 5. grab the ip address and hostname of the PULP3 box: |
91 | 1 | Justin Sherrill | <pre> |
92 | 75 | Justin Sherrill | sudo yum install net-tools |
93 | hostname |
||
94 | ifconfig |
||
95 | 1 | Justin Sherrill | </pre> |
96 | 75 | Justin Sherrill | 6. Add hostname/ipaddress to /etc/hosts on the KATELLO server, as root: |
97 | 60 | Samir Jha | <pre> |
98 | 75 | Justin Sherrill | echo "192.168.0.8 pulp3-sandbox-centos7.example.com" >> /etc/hosts |
99 | </pre> |
||
100 | 80 | Justin Sherrill | 7. Reset the admin password on the PULP3 Box (as root, run): |
101 | 75 | Justin Sherrill | <pre> |
102 | 80 | Justin Sherrill | DJANGO_SETTINGS_MODULE='pulpcore.app.settings' PULP_SETTINGS='/etc/pulp/settings.py' /usr/local/lib/pulp/bin/pulpcore-manager reset-admin-password --password password |
103 | 64 | Samir Jha | </pre> |
104 | |||
105 | 75 | Justin Sherrill | 8. copy contents of /etc/pulp/certs/root.crt on PULP box to the KATELLO box in file: /etc/pki/ca-trust/source/anchors/pulpcore.crt |
106 | 9. Update ca trust: |
||
107 | <pre> |
||
108 | update-ca-trust |
||
109 | </pre> |
||
110 | 62 | Justin Sherrill | |
111 | 75 | Justin Sherrill | 10. On the KATELLO box, reconfigure the smart proxy plugin, edit /etc/foreman-proxy/settings.d/pulpcore.yml replace contents with (Substituting correct hostname): |
112 | <pre> |
||
113 | --- |
||
114 | :enabled: https |
||
115 | :pulp_url: https://pulp3-sandbox-centos7.balmora.example.com |
||
116 | :content_app_url: https://pulp3-sandbox-centos7.balmora.example.com/pulp/content |
||
117 | :mirror: false |
||
118 | :username: admin |
||
119 | 1 | Justin Sherrill | :password: password |
120 | </pre> |
||
121 | |||
122 | 11. restart the foreman-proxy: |
||
123 | <pre> |
||
124 | systemctl restart foreman-proxy |
||
125 | </pre> |
||
126 | 12. Navigate to Infrastructure > Smart proxies and refresh the smart proxy features |
||
127 | 78 | Ryan Verdile | |
128 | 79 | Ryan Verdile | h3. To pip install a pulp plugin on the new pulp server: |
129 | 78 | Ryan Verdile | |
130 | Make sure to use the pip executable found in the same bin directory that the pulp service executables are found. For example, '/usr/local/lib/pulp/bin/pip'. |
||
131 | |||
132 | To find this location run: |
||
133 | <pre> |
||
134 | systemctl status "pulp*" |
||
135 | </pre> |
||
136 | Then look under the CGroup of one of the pulp services. |
||
137 | 59 | Ian Ballou | |
138 | h2. Example for querying the Pulp 3 API in a development environment: |
||
139 | 68 | Ian Ballou | <pre> |
140 | curl https://`hostname`/pulp/api/v3/status/ --cert /etc/pki/katello/certs/pulp-client.crt --key /etc/pki/katello/private/pulp-client.key |
||
141 | 25 | Justin Sherrill | </pre> |
142 | |||
143 | Recommendation: try the pulp-cli: https://github.com/pulp/pulp-cli#katello |
||
144 | |||
145 | h3. Other Resources |
||
146 | 1 | Justin Sherrill | |
147 | * pulp3 gap analysis wiki https://projects.theforeman.org/projects/katello/wiki/PulpV3GapAnalysis |
||
148 | * pulp3 gap analysis etherpad https://etherpad.net/p/pulp3_container |
||
149 | * pulp3 docker roadmap https://pulp.plan.io/projects/pulp/wiki/Pulp_Docker_Roadmap |
||
150 | 83 | James Jeffers | |
151 | h1. OSTree Content (Centos8) |
||
152 | |||
153 | h2. Centos8 required! The foreman-installer option "--foreman-proxy-content-enable-ostree" must be used. |
||
154 | |||
155 | h2. Adding ostree content |
||
156 | |||
157 | h3. Testing the content after upload or sync |
||
158 | |||
159 | There are 2 primary scenarios for adding ostree content to Katello - uploading ostree archives or syncing a remote ostree repository. |
||
160 | |||
161 | Katello v4.3 is required for either of these scenarios. |
||
162 | |||
163 | Verifying Content Units |
||
164 | In both scenarios you may verify content units by querying via hammer-cli or through the UI. |
||
165 | |||
166 | <pre> |
||
167 | $ hammer content-units list --content-type ostree_refs |
||
168 | ---|---------|------------------------------------------------------------------|--------- |
||
169 | ID | NAME | VERSION | FILENAME |
||
170 | ---|---------|------------------------------------------------------------------|--------- |
||
171 | 14 | rawhide | b8a587c1a2aa3db2993101e2f8cd1eee48d130032a21d9493b89be1272eecdd0 | |
||
172 | 13 | stable | 7dfa2caf98286074e6e79eb7aa2f0e18978c233a95a908118138b7b4f18752a7 | |
||
173 | ---|---------|------------------------------------------------------------------|--------- |
||
174 | </pre> |
||
175 | |||
176 | Navigating to the repository info details URL, such as: |
||
177 | http://<katello host>/products/>product iod>/repositories/<repository id>/content/ostree_refs?page=1&per_page=20 |
||
178 | |||
179 | The commit refs associated with the ostree repository will be shown: |
||
180 | |||
181 | |||
182 | h3. Syncing Remote OStree Repository |
||
183 | |||
184 | A user creates a new repository of type “ostree”. The “Upstream URL” field may be left blank or it may be populated before sync actions with a remote repository URL. |
||
185 | |||
186 | Example for testing purposes: https://fixtures.pulpproject.org/ostree/small/ |
||
187 | |||
188 | If using hammer-cli (with the hammer-cli-katello plugin enabled): |
||
189 | hammer repository upload-content --id <repostory_id> --content-type ostree_ref --path <path to fixtures_small_repo.tar file> --ostree-repository-name small |
||
190 | |||
191 | Not that the “--ostree-repository-name” is required for ostree content uploads. |
||
192 | |||
193 | <pre> |
||
194 | $ hammer repository upload-content --path ~/projects/2efad613-fb5e-4485-b67c-10f8ebed27e8-commit.tar --id 1 |
||
195 | Could not upload the content: |
||
196 | OSTree commit ref uploads require a repository name. |
||
197 | </pre> |
||
198 | |||
199 | This repository name refers to the repository within the uploaded archive itself. Creating archive images is detailed below. |
||
200 | |||
201 | If using the UI, invoke the sync action on the repository. The UI presents a sync action progress indicator showing the sync action summary, updated as it completes. |
||
202 | |||
203 | h3. Creating An Image Builder Archive for Testing |
||
204 | |||
205 | A user may create a test image in a couple of ways. |
||
206 | |||
207 | From an existing pulp fixture URL: |
||
208 | <pre> |
||
209 | wget --no-parent -r https://fixtures.pulpproject.org/ostree/small/ |
||
210 | tar --exclude="index.html" -cvf "fixtures_small_repo.tar" -C fixtures.pulpproject.org/ostree "small"\ |
||
211 | </pre> |
||
212 | |||
213 | This produces the archive “fixtures_small_repo.tar”. |
||
214 | |||
215 | Alternately, a user may use the os-builder command line tools, as outlined in |
||
216 | https://www.osbuild.org/guides/user-guide/building-ostree-images.html. |
||
217 | |||
218 | The images produced through the osbuild command line tools are typically quite large compared to the pulp fixture archive mentioned above (nearly 1GB vs 30KB). The osbuild images are much closer to realistic images and should be used to test handling of large files. |