Project

General

Profile

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.