Managing file type content
In orcharhino, you might require methods of managing and distributing SSH keys and source code files or larger files such as virtual machine images and ISO files. To achieve this, products in orcharhino include repositories for file types. This provides a generic method to incorporate arbitrary files in a product.
You can upload files to the repository and synchronize files from an upstream orcharhino Server.
When you add files to a file type repository, you can use the normal orcharhino management functions such as adding a specific version to a content view to provide version control and making the repository of files available on various orcharhino Proxy Servers.
You must download the files on clients over HTTP or HTTPS using curl -O
.
You can create a file type repository in orcharhino Server only in a product, but there is flexibility in how you create the repository source. You can create an independent repository source in a directory on orcharhino Server, or on a remote HTTP server, and then synchronize the contents of that directory into orcharhino. This method is useful when you have multiple files to add to a orcharhino repository.
Creating a local source for a file type repository
You can create a file type repository source, from a directory of files, on the base system where orcharhino is installed using Pulp Manifest. You can then synchronize the files into a repository and manage the file type content like any other content type.
Use this procedure to configure a repository in a directory on the base system where orcharhino is installed. To create a file type repository in a directory on a remote server, see Creating a Remote Source for a Custom File Type Repository.
-
Install the Pulp Manifest package:
# dnf install pulp-manifest
-
Create a directory that you want to use as the file type repository, such as:
# mkdir -p /var/lib/pulp/local_repos/my_file_repo
-
Add the parent folder into allowed import paths:
# orcharhino-installer --foreman-proxy-content-pulpcore-additional-import-paths /var/lib/pulp/local_repos
-
Add files to the directory or create a test file:
# touch /var/lib/pulp/local_repos/my_file_repo/test.txt
-
Run the Pulp Manifest command to create the manifest:
# pulp-manifest /var/lib/pulp/local_repos/my_file_repo
-
Verify the manifest was created:
# ls /var/lib/pulp/local_repos/my_file_repo PULP_MANIFEST test.txt
Now, you can import your local source as a file type repository.
Use the file://
URL scheme and the name of the directory to specify an Upstream URL, such as file:///var/lib/pulp/local_repos/my_file_repo
.
For more information, see Creating a Custom File Type Repository.
If you update the contents of your directory, re-run Pulp Manifest and sync the repository in orcharhino. For more information, see Synchronizing Repositories.
If you use local file repositories on your orcharhino Server, ensure to add the path to the allowed paths Pulp can import repositories from.
Run |
Creating a remote source for a file type repository
You can create a file type repository source from a directory of files that is external to orcharhino Server using Pulp Manifest. You can then synchronize the files into a repository on orcharhino Server over HTTP or HTTPS and manage the file type content like any other content type.
Use this procedure to configure a repository in a directory on a remote server. To create a file type repository in a directory on the base system where orcharhino Server is installed, see Creating a Local Source for a Custom File Type Repository.
-
You have a server running AlmaLinux 8 registered to your orcharhino.
-
You have installed an HTTP server.
-
Install the Pulp Manifest package:
# dnf install pulp-manifest
-
Create a directory that you want to use as the file type repository in the HTTP server’s public folder:
# mkdir /var/www/html/pub/my_file_repo
-
Add files to the directory or create a test file:
# touch /var/www/html/pub/my_file_repo/test.txt
-
Run the Pulp Manifest command to create the manifest:
# pulp-manifest /var/www/html/pub/my_file_repo
-
Verify the manifest was created:
# ls /var/www/html/pub/my_file_repo PULP_MANIFEST test.txt
Now, you can import your remote source as a file type repository.
Use the path to the directory to specify an Upstream URL, such as http://server.example.com/my_file_repo
.
For more information, see Creating a Custom File Type Repository.
If you update the contents of your directory, re-run Pulp Manifest and sync the repository in orcharhino. For more information, see Synchronizing Repositories.
Creating a file type repository
The procedure for creating a file type repository is the same as the procedure for creating any content, except that when you create the repository, you select the file type. You must create a product and then add a repository.
To use the CLI instead of the orcharhino management UI, see the CLI procedure.
-
In the orcharhino management UI, navigate to Content > Products.
-
Select a product that you want to create a repository for.
-
On the Repositories tab, click New Repository.
-
In the Name field, enter a name for the repository. orcharhino automatically completes the Label field based on the name.
-
Optional: In the Description field, enter a description for the repository.
-
From the Type list, select
file
as type of repository. -
Optional: In the Upstream URL field, enter the URL of the upstream repository to use as a source. If you do not enter an upstream URL, you can manually upload packages. For more information, see Uploading Files To a Custom File Type Repository.
-
Select Verify SSL to verify that the SSL certificates of the repository are signed by a trusted CA.
-
Optional: In the Upstream Username field, enter the user name for the upstream repository if required for authentication. Clear this field if the repository does not require authentication.
-
Optional: In the Upstream Password field, enter the corresponding password for the upstream repository. Clear this field if the repository does not require authentication.
-
Optional: In the Upstream Authentication Token field, provide the token of the upstream repository user for authentication. Leave this field empty if the repository does not require authentication.
-
From the Mirroring Policy list, select the type of content synchronization orcharhino Server performs. For more information, see Mirroring Policies Overview.
-
Optional: In the HTTP Proxy Policy field, select an HTTP proxy. By default, it uses the
Global Default
HTTP proxy. -
Optional: You can clear the Unprotected checkbox to require a subscription entitlement certificate for accessing this repository. By default, the repository is published through HTTP.
-
Optional: In the SSL CA Cert field, select the SSL CA Certificate for the repository.
-
Optional: In the SSL Client Cert field, select the SSL Client Certificate for the repository.
-
Optional: In the SSL Client Key field, select the SSL Client Key for the repository.
-
Click Save to create the repository.
-
Create a product:
# hammer product create \ --description "My_Files" \ --name "My_File_Product" \ --organization "My_Organization" \ --sync-plan "My_Sync_Plan"
Table 1. Optional parameters for the hammer product create
commandOption Description --gpg-key-id
gpg_key_idGPG key numeric identifier
--sync-plan-id
sync_plan_idSync plan numeric identifier
--sync-plan
sync_plan_nameSync plan name to search by
-
Create a
file
type repository:# hammer repository create \ --content-type "file" \ --name "My_Files" \ --organization "My_Organization" \ --product "My_File_Product"
Table 2. Optional parameters for the hammer repository create
commandOption Description --checksum-type
sha_versionRepository checksum (either
sha1
orsha256
)--download-policy
policy_nameDownload policy for repositories (either
immediate
oron_demand
)--gpg-key-id
gpg_key_idGPG key numeric identifier
--gpg-key
gpg_key_nameKey name to search by
--mirror-on-sync
booleanMust this repo be mirrored from the source, and stale packages removed, when synced? Set to
true
orfalse
,yes
orno
,1
or0
.--publish-via-http
booleanMust this also be published using HTTP? Set to
true
orfalse
,yes
orno
,1
or0
.--upstream-password
repository_passwordPassword for the upstream repository user
--upstream-username
repository_usernameUpstream repository user, if required for authentication
--url
My_Repository_URLURL of the remote repository
--verify-ssl-on-sync
booleanVerify that the upstream SSL certificates of the remote repository are signed by a trusted CA? Set to
true
orfalse
,yes
orno
,1
or0
.
Uploading files to a file type repository
Use this procedure to upload files to a file type repository.
-
In the orcharhino management UI, navigate to Content > Products.
-
Select a product by name.
-
Select a file type repository by name.
-
Click Browse to search and select the file you want to upload.
-
Click Upload to upload the selected file to orcharhino Server.
-
Visit the URL where the repository is published to see the file.
# hammer repository upload-content \ --id repo_ID \ --organization "My_Organization" \ --path example_file
The --path
option can indicate a file, a directory of files, or a glob expression of files.
Globs must be escaped by single or double quotes.
Downloading files to a host from a file type repository
You can download files to a client over HTTPS using curl -O
, and optionally over HTTP if the Unprotected option for repositories is selected.
-
You have a file type repository. For more information, see Creating a Custom File Type Repository.
-
You know the name of the file you want to download to clients from the file type repository.
-
To use HTTPS you require the following certificates on the client:
-
The
katello-server-ca.crt
. For more information, see Importing the Katello Root CA Certificate in Administering orcharhino. -
An Organization Debug Certificate. For more information, see Creating an Organization Debug Certificate in Managing Organizations and Locations.
-
-
In the orcharhino management UI, navigate to Content > Products.
-
Select a product by name.
-
Select a file type repository by name.
-
Ensure to select the Unprotected checkbox to access the repository published through HTTP.
-
Copy the Published At URL.
-
On your client, download the file from orcharhino Server:
-
For HTTPS:
# curl \ --cacert ./_katello-server-ca.crt \ --cert ./_My_Organization_key-cert.pem \ --remote-name \ https://orcharhino.example.com/pulp/content/My_Organization_Label/Library/custom/My_Product_Label/My_Repository_Label/My_File
-
For HTTP:
# curl \ --remote-name \ http://orcharhino.example.com/pulp/content/My_Organization_Label/Library/custom/My_Product_Label/My_Repository_Label/My_File
-
-
List the file type repositories.
# hammer repository list --content-type file ---|------------|-------------------|--------------|---- ID | NAME | PRODUCT | CONTENT TYPE | URL ---|------------|-------------------|--------------|---- 7 | My_Files | My_File_Product | file | ---|------------|-------------------|--------------|----
-
Display the repository information.
# hammer repository info \ --name "My_Files" \ --organization-id My_Organization_ID \ --product "My_File_Product"
If Unprotected is enabled, the output is similar to this:
Publish Via HTTP: yes Published At: https://orcharhino.example.com/pulp/content/My_Organization_Label/Library/custom/My_File_Product_Label/My_Files_Label/
If Unprotected is not enabled, the output is similar to this:
Publish Via HTTP: no Published At: https://orcharhino.example.com/pulp/content/My_Organization_Label/Library/custom/My_File_Product_Label/My_Files_Label/
-
On your client, download the file from orcharhino Server:
-
For HTTPS:
# curl \ --cacert ./_katello-server-ca.crt \ --cert ./_My_Organization_key-cert.pem \ --remote-name \ https://orcharhino.example.com/pulp/content/My_Organization_Label/Library/custom/My_Product_Label/My_Repository_Label/My_File
-
For HTTP:
# curl \ --remote-name \ http://orcharhino.example.com/pulp/content/My_Organization_Label/Library/custom/My_Product_Label/My_Repository_Label/My_File
-
Importing Kickstart repositories for AlmaLinux 9
Use this procedure to import Kickstart repositories for AlmaLinux 9.
-
Download the AlmaLinux 9 ISO to your orcharhino Server.
-
On orcharhino Server, create a mount point and temporarily mount the ISO image at that location:
# mkdir /mnt/iso # mount -o loop rhel-binary-dvd.iso /mnt/iso
Replace rhel-binary-dvd.iso with the name of your ISO image.
-
Create directories for AlmaLinux 9 AppStream and BaseOS Kickstart repositories:
# mkdir --parents /var/www/html/pub/orcharhino-import/content/dist/rhel9/9.1/x86_64/appstream/kickstart # mkdir --parents /var/www/html/pub/orcharhino-import/content/dist/rhel9/9.1/x86_64/baseos/kickstart
-
Copy the
kickstart
files from the ISO image:# cp -a /mnt/iso/AppStream/* /var/www/html/pub/orcharhino-import/content/dist/rhel9/9.1/x86_64/appstream/kickstart # cp -a /mnt/iso/BaseOS/* /mnt/iso/images/ /var/www/html/pub/orcharhino-import/content/dist/rhel9/9.1/x86_64/baseos/kickstart
Note that for BaseOS, you must also copy the contents of the
/mnt/iso/images/
directory. -
Add the following entries to the listing files:
To the
/var/www/html/pub/orcharhino-import/content/dist/rhel9/9.1/x86_64/appstream/listing
file, appendkickstart
with a new line.To the
/var/www/html/pub/orcharhino-import/content/dist/rhel9/9.1/x86_64/baseos/listing
file, appendkickstart
with a new line.To the
/var/www/html/pub/orcharhino-import/content/dist/rhel8/listing
file, append the version number with a new line. For example, for the AlmaLinux 9.1 binary ISO, append9.1
. -
Copy the
.treeinfo
files from the ISO image:# cp /mnt/iso/.treeinfo /var/www/html/pub/orcharhino-import/content/dist/rhel9/9.1/x86_64/appstream/kickstart/treeinfo # cp /mnt/iso/.treeinfo /var/www/html/pub/orcharhino-import/content/dist/rhel9/9.1/x86_64/baseos/kickstart/treeinfo
-
Open the
/var/www/html/pub/orcharhino-import/content/dist/rhel9/9.1/x86_64/baseos/kickstart/treeinfo
file for editing. -
In the
[general]
section, make the following changes:-
Change
packagedir = AppStream/Packages
topackagedir = Packages
-
Change
repository = AppStream
torepository = .
-
Change
variant = AppStream
tovariant = BaseOS
-
Change
variants = AppStream,BaseOS
tovariants = BaseOS
-
-
In the
[tree]
section, changevariants = AppStream,BaseOS
tovariants = BaseOS
. -
In the
[variant-BaseOS]
section, make the following changes:-
Change
packages = BaseOS/Packages
topackages = Packages
-
Change
repository = BaseOS
torepository = .
-
-
Delete the
[media]
and[variant-AppStream]
sections. -
Save and close the file.
-
Verify that the
/var/www/html/pub/orcharhino-import/content/dist/rhel9/9.1/x86_64/baseos/kickstart/treeinfo
file has the following format:[checksums] images/efiboot.img = sha256:c01c18acc6778d6e66c8d0872bac59bfd7219ccf3cfa70a5c605c0fb37f33a83 images/install.img = sha256:ddd08e5a5d92edee150f91ff4f12f39253eae72ff496465cf1b2766fe4a4df49 images/pxeboot/initrd.img = sha256:a09a8ec89d485d71ed1bdad83584d6d816e67448221172d9aad97886cd70adca images/pxeboot/vmlinuz = sha256:6e523d7c3266e26c695923ab12b2873b16b0c61fb2e48ade608ad8998821584b [general] ; WARNING.0 = This section provides compatibility with pre-productmd treeinfos. ; WARNING.1 = Read productmd documentation for details about new format. arch = x86_64 family = AlmaLinux name = AlmaLinux 9.1.0 packagedir = Packages platforms = x86_64,xen repository = . timestamp = 1571146127 variant = BaseOS variants = BaseOS version = 9.1.0 [header] type = productmd.treeinfo version = 1.2 [images-x86_64] efiboot.img = images/efiboot.img initrd = images/pxeboot/initrd.img kernel = images/pxeboot/vmlinuz [images-xen] initrd = images/pxeboot/initrd.img kernel = images/pxeboot/vmlinuz [release] name = AlmaLinux short = RHEL version = 9.1.0 [stage2] mainimage = images/install.img [tree] arch = x86_64 build_timestamp = 1571146127 platforms = x86_64,xen variants = BaseOS [variant-BaseOS] id = BaseOS name = BaseOS packages = Packages repository = . type = variant uid = BaseOS
-
Open the
/var/www/html/pub/orcharhino-import/content/dist/rhel9/9.1/x86_64/appstream/kickstart/treeinfo
file for editing. -
In the
[general]
section, make the following changes:-
Change
packagedir = AppStream/Packages
topackagedir = Packages
-
Change
repository = AppStream
torepository = .
-
Change
variants = AppStream,BaseOS
tovariants = AppStream
-
-
In the
[tree]
section, changevariants = AppStream,BaseOS
tovariants = AppStream
-
In the
[variant-AppStream]
section, make the following changes:-
Change
packages = AppStream/Packages
topackages = Packages
-
Change
repository = AppStream
torepository = .
-
-
Delete the following sections from the file:
[checksums]
,[images-x86_64]
,[images-xen]
,[media]
,[stage2]
,[variant-BaseOS]
. -
Save and close the file.
-
Verify that the
/var/www/html/pub/orcharhino-import/content/dist/rhel9/9.1/x86_64/appstream/kickstart/treeinfo
file has the following format:[general] ; WARNING.0 = This section provides compatibility with pre-productmd treeinfos. ; WARNING.1 = Read productmd documentation for details about new format. arch = x86_64 family = AlmaLinux name = AlmaLinux 9.1.0 packagedir = Packages platforms = x86_64,xen repository = . timestamp = 1571146127 variant = AppStream variants = AppStream version = 9.1.0 [header] type = productmd.treeinfo version = 1.2 [release] name = AlmaLinux short = RHEL version = 9.1.0 [tree] arch = x86_64 build_timestamp = 1571146127 platforms = x86_64,xen variants = AppStream [variant-AppStream] id = AppStream name = AppStream packages = Packages repository = . type = variant uid = AppStream
-
If you do not plan to use the mounted binary DVD ISO image, unmount and remove the directory:
# umount /mnt/iso # rmdir /mnt/iso
-
In the orcharhino management UI, enable the Kickstart repositories.
Importing Kickstart repositories for AlmaLinux 8
Use this procedure to import Kickstart repositories for AlmaLinux 8.
-
Download the AlmaLinux 8 ISO to your orcharhino Server.
-
On orcharhino Server, create a mount point and temporarily mount the ISO image at that location:
# mkdir /mnt/iso # mount -o loop rhel-binary-dvd.iso /mnt/iso
Replace rhel-binary-dvd.iso with the name of your ISO image.
-
Create directories for AlmaLinux 8 AppStream and BaseOS Kickstart repositories:
# mkdir --parents /var/www/html/pub/orcharhino-import/content/dist/rhel8/8.9/x86_64/appstream/kickstart # mkdir --parents /var/www/html/pub/orcharhino-import/content/dist/rhel8/8.9/x86_64/baseos/kickstart
-
Copy the
kickstart
files from the ISO image:# cp -a /mnt/iso/AppStream/* /var/www/html/pub/orcharhino-import/content/dist/rhel8/8.9/x86_64/appstream/kickstart # cp -a /mnt/iso/BaseOS/* /mnt/iso/images/ /var/www/html/pub/orcharhino-import/content/dist/rhel8/8.9/x86_64/baseos/kickstart
Note that for BaseOS, you must also copy the contents of the
/mnt/iso/images/
directory. -
Add the following entries to the listing files:
To the
/var/www/html/pub/orcharhino-import/content/dist/rhel8/8.9/x86_64/appstream/listing
file, appendkickstart
with a new line.To the
/var/www/html/pub/orcharhino-import/content/dist/rhel8/8.9/x86_64/baseos/listing
file, appendkickstart
with a new line.To the
/var/www/html/pub/orcharhino-import/content/dist/rhel8/listing
file, append the version number with a new line. For example, for the AlmaLinux 8.9 binary ISO, append8.9
. -
Copy the
.treeinfo
files from the ISO image:# cp /mnt/iso/.treeinfo /var/www/html/pub/orcharhino-import/content/dist/rhel8/8.9/x86_64/appstream/kickstart/treeinfo # cp /mnt/iso/.treeinfo /var/www/html/pub/orcharhino-import/content/dist/rhel8/8.9/x86_64/baseos/kickstart/treeinfo
-
Open the
/var/www/html/pub/orcharhino-import/content/dist/rhel8/8.9/x86_64/baseos/kickstart/treeinfo
file for editing. -
In the
[general]
section, make the following changes:-
Change
packagedir = AppStream/Packages
topackagedir = Packages
-
Change
repository = AppStream
torepository = .
-
Change
variant = AppStream
tovariant = BaseOS
-
Change
variants = AppStream,BaseOS
tovariants = BaseOS
-
-
In the
[tree]
section, changevariants = AppStream,BaseOS
tovariants = BaseOS
. -
In the
[variant-BaseOS]
section, make the following changes:-
Change
packages = BaseOS/Packages
topackages = Packages
-
Change
repository = BaseOS
torepository = .
-
-
Delete the
[media]
and[variant-AppStream]
sections. -
Save and close the file.
-
Verify that the
/var/www/html/pub/orcharhino-import/content/dist/rhel8/8.9/x86_64/baseos/kickstart/treeinfo
file has the following format:[checksums] images/efiboot.img = sha256:c01c18acc6778d6e66c8d0872bac59bfd7219ccf3cfa70a5c605c0fb37f33a83 images/install.img = sha256:ddd08e5a5d92edee150f91ff4f12f39253eae72ff496465cf1b2766fe4a4df49 images/pxeboot/initrd.img = sha256:a09a8ec89d485d71ed1bdad83584d6d816e67448221172d9aad97886cd70adca images/pxeboot/vmlinuz = sha256:6e523d7c3266e26c695923ab12b2873b16b0c61fb2e48ade608ad8998821584b [general] ; WARNING.0 = This section provides compatibility with pre-productmd treeinfos. ; WARNING.1 = Read productmd documentation for details about new format. arch = x86_64 family = AlmaLinux name = AlmaLinux 8.9.0 packagedir = Packages platforms = x86_64,xen repository = . timestamp = 1571146127 variant = BaseOS variants = BaseOS version = 8.9.0 [header] type = productmd.treeinfo version = 1.2 [images-x86_64] efiboot.img = images/efiboot.img initrd = images/pxeboot/initrd.img kernel = images/pxeboot/vmlinuz [images-xen] initrd = images/pxeboot/initrd.img kernel = images/pxeboot/vmlinuz [release] name = AlmaLinux short = RHEL version = 8.9.0 [stage2] mainimage = images/install.img [tree] arch = x86_64 build_timestamp = 1571146127 platforms = x86_64,xen variants = BaseOS [variant-BaseOS] id = BaseOS name = BaseOS packages = Packages repository = . type = variant uid = BaseOS
-
Open the
/var/www/html/pub/orcharhino-import/content/dist/rhel8/8.9/x86_64/appstream/kickstart/treeinfo
file for editing. -
In the
[general]
section, make the following changes:-
Change
packagedir = AppStream/Packages
topackagedir = Packages
-
Change
repository = AppStream
torepository = .
-
Change
variants = AppStream,BaseOS
tovariants = AppStream
-
-
In the
[tree]
section, changevariants = AppStream,BaseOS
tovariants = AppStream
-
In the
[variant-AppStream]
section, make the following changes:-
Change
packages = AppStream/Packages
topackages = Packages
-
Change
repository = AppStream
torepository = .
-
-
Delete the following sections from the file:
[checksums]
,[images-x86_64]
,[images-xen]
,[media]
,[stage2]
,[variant-BaseOS]
. -
Save and close the file.
-
Verify that the
/var/www/html/pub/orcharhino-import/content/dist/rhel8/8.9/x86_64/appstream/kickstart/treeinfo
file has the following format:[general] ; WARNING.0 = This section provides compatibility with pre-productmd treeinfos. ; WARNING.1 = Read productmd documentation for details about new format. arch = x86_64 family = AlmaLinux name = AlmaLinux 8.9.0 packagedir = Packages platforms = x86_64,xen repository = . timestamp = 1571146127 variant = AppStream variants = AppStream version = 8.9.0 [header] type = productmd.treeinfo version = 1.2 [release] name = AlmaLinux short = RHEL version = 8.9.0 [tree] arch = x86_64 build_timestamp = 1571146127 platforms = x86_64,xen variants = AppStream [variant-AppStream] id = AppStream name = AppStream packages = Packages repository = . type = variant uid = AppStream
-
If you do not plan to use the mounted binary DVD ISO image, unmount and remove the directory:
# umount /mnt/iso # rmdir /mnt/iso
-
In the orcharhino management UI, enable the Kickstart repositories.
The text and illustrations on this page are licensed by ATIX AG under a Creative Commons Attribution Share Alike 4.0 International ("CC BY-SA 4.0") license. This page also contains text from the official Foreman documentation which uses the same license ("CC BY-SA 4.0"). |