Menu Close
Chapter 8. Deploying a RHEL for Edge image in a network-base environment
You can deploy a RHEL for Edge image using the RHEL installer graphical user interface or a Kickstart file. The overall process for deploying a RHEL for Edge image depends on whether your deployment environment is network-based or non-network-based.
To deploy the images on bare metal, use a Kickstart file.
Network-based deployments
Deploying a RHEL for Edge image in a network-based environment involves the following high-level steps:
- Extract the image file contents.
- Set up a web server
- Install the image
8.1. Extracting RHEL for Edge image commit
After you download the commit, extract the .tar file and note the ref name and the commit ID.
The downloaded commit file consists of a .tar
file with an OSTree repository. The OSTree repository contains a commit and a compose.json
file.
The compose.json file contains information metadata about the commit with information such as the “Ref” (reference ID) and the commit ID. The commit contains the rpm packages.
To extract the package contents, perform the following the steps:
Prerequisites
- Create a kickstart file or use an existing one.
Procedure
Extract the downloaded image tar file:
# tar xvf <UUID>-commit.tar
Navigate to the directory where you have extracted the
.tar
file.It contains a
compose.json
file and an OSTree directory. Thecompose.json
file contains the commit number and the OSTree directory contains the rpm packages.Open the
compose.json
file and note the commit ID number. You need this number handy when you proceed to set up a web server.If you have the
jq
JSON processor installed, you can also retrieve the commit hash ID using thejq
tool:# jq '.["ostree-commit"]' < compose.json
List the
rpm
packages in the commit.# rpm-ostree db list rhel/8/x86_64/edge --repo=repo
Use a Kickstart file to run the RHEL installer. You can either use any existing file or can create one using the Kickstart Generator tool.
In the Kickstart file, ensure that you include the details about how to provision the file system, create a user, and how to fetch and deploy the RHEL for Edge image. The RHEL installer uses this information during the installation process.
The following is a Kickstart file example:
lang en_US.UTF-8 keyboard us timezone Etc/UTC --isUtc text zerombr clearpart --all --initlabel autopart reboot user --name=core --group=wheel sshkey --username=core "ssh-rsa AAAA3Nza...." ostreesetup --nogpg --osname=rhel --remote=edge --url=https://mirror.example.com/repo/ --ref=rhel/8/x86_64/edge
The
ostreesetup
command is used to set up OStree-based installations. It fetches the OSTree commit, by using the following flags:- --nogpg - Disable GPG key verification.
- --osname - Management root for OS installation.
- --remote - Management root for OS installation
- --url - URL of the repository to install from.
- --ref - Name of the branch from the repository to be used for installation.
--url=https://mirror.example.com/repo/ is the address of the host system where you extracted the edge commit and served over nginx. You can use the address to reach the host system from the guest machine.
For example, if you extract the commit image in the
/var/www/html
directory and serve the commit over nginx on a machine whose hostname iswww.example.com
, the value of the --url parameter ishttp://www.example.com/repo
.NoteUse the http protocol to start a service to serve the commit, because https is not enabled on the Apache HTTP Server.
Additional resources
8.2. Setting up a web server to install RHEL for Edge images
After you have extracted the RHEL for Edge image contents, set up a web server to provide the image commit details to the RHEL installer via HTTP.
The following example provides the steps to set up a web server using a container.
Prerequisites
- You have installed Podman on your system. See How do I install podman in RHEL
Procedure
Create the
nginx
configuration file with the following instructions:events { } http { server{ listen 8080; root /usr/share/nginx/html; } } pid /run/nginx.pid; daemon off;
-
Copy the
nginx
configuration file to the/etc/nginx.conf
directory. Create a dockerfile with the following instructions:
FROM registry.access.redhat.com/ubi8/ubi RUN dnf -y install nginx && dnf clean all COPY kickstart.ks /var/www/html/ COPY repo /usr/share/nginx/html/ EXPOSE 8080 CMD ["/usr/sbin/nginx", "-c", "/etc/nginx.conf"] ARG commit ADD ${commit} /usr/share/nginx/html/
Where,
kickstart.ks is the name of the Kickstart file from the RHEL for Edge image. The kickstart file includes directive information. To help you manage the images later, it is advisable to include the checks and settings for Greenboot checks. To do so, you can update the Kickstart file to include the following settings:
lang en_US.UTF-8 keyboard us timezone Etc/UTC --isUtc text zerombr clearpart --all --initlabel autopart reboot user --name=core --group=wheel sshkey --username=core "ssh-rsa AAAA3Nza...." ostreesetup --nogpg --osname=rhel --remote=edge --url=https://mirror.example.com/repo/ --ref=rhel/8/x86_64/edge %post cat << EOF > /etc/greenboot/check/required.d/check-dns.sh #!/bin/bash DNS_SERVER=$(grep nameserver /etc/resolv.conf | cut -f2 -d" ") COUNT=0 # check DNS server is available ping -c1 $DNS_SERVER while [ $? != '0' ] && [ $COUNT -lt 10 ]; do ((COUNT++)) echo "Checking for DNS: Attempt $COUNT ." sleep 10 ping -c 1 $DNS_SERVER done EOF %end
The OSTree repository can be hosted from any HTTP service, and the example, using a container, is just an option for how to do this. The docker file performs the following tasks:
- Uses the latest Universal Base Image (ubi)
- Installs the web server (nginx)
- Adds the kickstart file to the server
- Adds the RHEL for Edge image commit to the server
Build a docker container
# podman build -t name-of-container-image --build-arg commit=uuid-commit.tar .
Run the container
# podman run --rm -d -p port:8080 localhost/name-of-container-image
As a result, the server is set up and ready to launch the RHEL installer using the
commit.tar
repository and the kickstart file.
8.3. Downloading RHEL Boot.iso image
You can download a Red Hat Boot ISO image from the Red Hat Customer Portal. The Red Hat Boot ISO image is used to launch the RHEL installer. The installer fetches the Kickstart file that you provide for installing RHEL for Edge images.
Prerequisites
- You have an active Red Hat subscription.
- You are logged in to the Product Downloads section of the Red Hat Customer Portal at https://access.redhat.com/downloads.
Procedure
- Open a browser and access https://access.redhat.com/downloads.
-
Under Infrastructure Management, click the
Red Hat Enterprise Linux 9
Product. - Click the Download Now button for the option "Red Hat Enterprise Linux 9 Boot ISO"
Additional resources
8.4. Installing the RHEL for Edge image using a Kickstart file
To install the RHEL for Edge image using a Kickstart file, use the web server. The web server uses the RHEL for Edge image commit.tar repository and the kickstart file to launch the RHEL installer.
Prerequisites
- The server to fetch the commit in the Installer is available and running.
- A disk image to install the commit you created.
Procedure
Run the Anaconda Installer using the libvirt virt-install:
virt-install \ --name rhel-edge-test-1 --memory 2048 \ --vcpus 2 \ --disk size=8 \ --disk path=prepared_disk_image.qcow2,format=qcow2 \ --os-variant rhel8.6 --cdrom /home/username/Downloads/rhel-8.6-x86_64-boot.iso
On the installation screen, press TAB to specify an additional kernel parameter:
inst.ks=http://edge_device_ip:port/kickstart.ks
The kernel parameter specifies that you want to install RHEL using the Kickstart file and not the RHEL image contained in the RHEL Installer.
The RHEL Installer starts, fetches the Kickstart file from the server (HTTP) endpoint and executes the commands, including the command to install the RHEL for Edge image commit from the HTTP endpoint. Once the installation is complete, the installer prompts for login details.
- On the Login screen, specify your user account credentials and click Enter.
Verify whether the RHEL for Edge image is successfully installed.
$ rpm-ostree status
The command output provides the image commit ID and shows that the installation is successful.
Following is a sample output:
State: idle Deployments: * ostree://edge:rhel/8/x86_64/edge Timestamp: 2020-09-18T20:06:54Z Commit: 836e637095554e0b634a0a48ea05c75280519dd6576a392635e6fa7d4d5e96