This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Use

Operation instructions.

    Build an image

    Images can be built on Red Hat Console or locally. Follow the instructions to perform build on your own hardware.

    Install composer and composer CLI and start the build service:

    sudo dnf install osbuild-composer composer-cli
    sudo systemctl enable --now osbuild-composer.socket
    

    For more information on how to setup permissions for non-root accounts, read the project documentation.

    Create a blueprint file named base-image-with-vim.toml with the following contents:

    name = "base-image-with-vim"
    description = "A base system with vim"
    version = "0.0.1"
    [[packages]]
    name = "vim"
    version = "*"
    

    Read the osbuild documentation for more information on customization of the image. Now, upload the blueprint file into the service:

    composer-cli blueprints push base-image-with-vim.toml
    

    To build a Fedora/RHEL installation image:

    composer-cli compose start base-image-with-vim image-installer
    

    Wait until it is done and then download the result tarball:

    composer-cli compose results UUID
    

    You may proceed to the next chapter. To build a Fedora IoT (or RHEL for Edge) installation image, create a blueprint file named empty.toml with the following contents:

    cat empty.toml
    name = "empty"
    description = "Empty blueprint"
    version = "0.0.1"
    

    Push the empty blueprint:

    composer-cli blueprints push empty.toml
    

    Build and download a new ostree repository:

    composer-cli compose start base-image-with-vim iot-commit
    composer-cli compose results UUID
    

    The ostree repository needs to be published over HTTP protocol, this is not part of this turorial.

    composer-cli compose start-ostree --ref "fedora/38/x86_64/iot" --url http://zzzap.tpb.lab.eng.brq.redhat.com/~lzap/f38-iot-commit/repo/ empty iot-installer
    composer-cli compose results UUID
    

    When building RHEL instead of Fedora, replace iot-installer with edge-installer. Also the ref will be different, typically rhel/8/x86_64/edge.

    Use the following command to watch the progress of the build:

    composer-cli compose info UUID
    

    Once the build is finished, download the ISO file with:

    composer-cli compose results UUID
    

    Composes can be deleted to save disk space using delete command.

    Upload an image

    The first step is to upload the image:

    forester-cli image upload --name Fedora37 f37-minimal-image.iso
    

    Check it:

    forester-cli image list
    Image ID  Image Name
    1         RHEL9
    2         Fedora37
    
    forester-cli image show Fedora37
    Attribute  Value
    ID         2
    Name       Fedora37
    

    Configure Redfish

    To create a Redfish appliance use kind named “redfish”:

    forester-cli appliance create --kind redfish --name dellr350 --uri https://root:calvin@dr350-a14.local
    

    To create appliance for hacking and development a good appliance type is libvirt through local UNIX socket, an example for system session:

    forester-cli appliance create --kind libvirt --name system --uri qemu:///system
    

    An example for user session (URI accepts both unix socket or qemu paths):

    sudo usermod -a -G libvirt $(whoami)
    forester-cli appliance create --kind libvirt --name session --uri qemu:///session
    

    Or via TCP connection (TLS is not supported):

    forester-cli appliance create --kind libvirt --name remote --uri tcp://host.containers.internal:16509
    

    Replace host.containers.internal with the Forester hostname, this is a special name that will work for Podman to access host system. To access libvirt over TCP, it must be configured to do so:

    grep '^[^#]' /etc/libvirt/libvirtd.conf
    auth_tcp = "none"
    

    And:

    systemctl enable --now libvirtd-tcp.socket
    

    It is possible to create no operation appliance which does nothing or redfish_manual appliance which performs detection of systems, however, it does not perform any power operations. With noop appliance, systems need to be registered manually whereas with redfish_manual systems can be detected automatically.

    Warning: username and password are currently stored as clear text and fully readable through the API.

    forester-cli appliance list
    ID  Name     Kind  URI
    1   system   1     unix:///var/run/libvirt/libvirt-sock
    2   session  1     qemu:///session
    3   dellr350 2     https://root:calvin@dr350-a14.local
    

    Discover systems

    Discover the system or multiple blades in chassis:

    forester-cli appliance enlist dellr350
    

    One or more systems are available now, each system has an unique ID, one or more MAC addresses and randomly generated name. A system can be referenced via both MAC address and random name:

    forester-cli system list
    ID  Name        Hw Addresses           Acquired  Facts
    1   Lynn Viers  6c:fe:54:70:60:10 (4)  false     Dell Inc. PowerEdge R350
    

    To show more details of a system:

    forester-cli system show Viers
    Attribute       Value
    ID              1
    Name            Lynn Viers
    Acquired        false
    Acquired at     Mon Sep  4 14:40:50 2023
    Image ID        1
    MAC             6c:fe:54:70:60:10
    MAC             c4:5a:b1:a0:f2:b5
    MAC             6c:fe:54:70:60:11
    MAC             c4:5a:b1:a0:f2:b4
    Appliance Name  dell
    Appliance Kind  2
    Appliance URI   https://root:calvin@dr350-a14.local
    UID             4c4c4544-004c-3510-804c-c4c04f435731
    
    Fact                     Value
    baseboard-asset-tag      
    baseboard-manufacturer   Dell Inc.
    baseboard-product-name   0MTYYT
    baseboard-serial-number  .DL5XXXX.MXWSG0000000HE.
    baseboard-version        A02
    bios-release-date        11/14/2022
    bios-revision            1.5
    bios-vendor              Dell Inc.
    bios-version             1.5.1
    chassis-asset-tag        Not Specified
    chassis-manufacturer     Dell Inc.
    chassis-serial-number    DL5XXXX
    chassis-type             Rack Mount Chassis
    chassis-version          Not Specified
    cpuinfo-processor-count  4
    firmware-revision        
    memory-bytes             8201367552
    processor-family         Xeon
    processor-frequency      2800 MHz
    processor-manufacturer   Intel
    processor-version        Intel(R) Xeon(R) E-2314 CPU @ 2.80GHz
    redfish_asset_tag        
    redfish_description      Computer System which represents a machine (physical or virtual) and the local resources such as memory, cpu and other devices that can be accessed from that machine.
    redfish_manufacturer     Dell Inc.
    redfish_memory_bytes     8589934592
    redfish_model            PowerEdge R350
    redfish_name             System
    redfish_oid              /redfish/v1/Systems/System.Embedded.1
    redfish_part_number      0MTYYTA02
    redfish_pcie_dev_count   9
    redfish_processor_cores  4
    redfish_processor_count  1
    redfish_processor_model  Intel(R) Xeon(R) E-2314 CPU @ 2.80GHz
    redfish_serial_number    MXWSJ0032100HI
    redfish_sku              DL5XXXX
    serial                   DL5XXXX
    system-family            PowerEdge
    system-manufacturer      Dell Inc.
    system-product-name      PowerEdge R350
    system-serial-number     DL5XXXX
    system-sku-number        SKU=0A94;ModelName=PowerEdge R350
    system-uuid              4c4c4544-004c-3510-804c-c4c04f435731
    system-version           Not Specified
    

    Facts which start with redfish were recognized via Redfish API, other facts can be discovered by booting the system into Anaconda in a released state:

    forester-cli appliance bootnet lynn
    

    Enter system manually

    An alternative way of registering systems is to enter them manually, this is useful for noop appliance:

    forester-cli system register --name my-system-13 --hwaddrs AA:BB:CC:DD:EE:FF --facts test=1 --appliance noop --uid unique_uuid
    

    Every system must have an appliance assigned, a noop (no operation) appliance can be used and unique string (typically UUID or random number).

    Customizing installation

    Installation can be further customized using Anaconda Kickstart syntax via snippets. There are several kinds of snippets which can be optionally associated with a system:

    • disk (partitioning layout snippet)
    • rootpw (root password snippet)
    • security (security-related snippet)
    • locale (locale-related snippet)
    • post (%post installation snippet)

    To list all snippets:

    forester-cli snippet list
    ID  Name           Kind
    1   SingleVolume   disk
    2   SharedPass     rootpw
    3   InstallAnsible post
    

    To create a snippet:

    forester-cli snippet create --name MySnippet --kind locale
    

    An editor (depending on the $EDITOR environment variable) is launched, when saved the snippet is uploaded to the service. An example content:

    lang cs_CZ.UTF-8
    keyboard 'cs'
    timezone Europe/Prague --utc
    

    To edit or delete snippet, use appropriate edit or delete CLI subcommands.

    A system can have zero to any number of snippets associated and one extra “custom snippet” which can be used to provide one or more ad-hoc Kickstart lines without storing anything into the database.

    Deploy images

    Deploying is done via deploy command:

    forester-cli system deploy lynn --image RHEL9
    

    To customize installation with snippets:

    forester-cli system deploy lynn --image RHEL9 --snippets SingleVolume SharedPass --customsnippet "%pre\necho Hello\n%end\n"
    

    Warning: There is no authentication or authorization in the API, anyone can deploy or even add new appliances.

    Troubleshooting

    Both hardware discovery and installation are handled by Anaconda which takes Kickstart as the input. To view current Kickstart of an existing system do:

    forester-cli system kickstart lynn
    

    Depending on the state of the system, it will be either discovery Kickstart, or installation kickstart. Kickstart can be validated using ksvalidator command for syntax errors.

    Anaconda installer is configured to send all logs via syslog protocol into Forester. To list all available logs of a system:

    forester-cli system logs lynn
    

    To view log contents of an installation:

    forester-cli system logs lynn -d f-1-06fe9588-b50e-4ee7-8e81-1f87a8-b265e1.log
    

    Logs can be viewed as they arrive in the service, there is no “watch” feature available tho.