Skip to content

SNO-Installer role

This role contains playbooks to deploy OCP SNO in a very opinionated fashion. This might not correspond to the official or recommended way to deploy SNO. For SNO on libvirt it uses a livecd image to bootstrap a VM, and for baremetal it uses dnsmasq as TFTP/DNS/DHCP server and bootstrap a physical node.

NOTE: Disconnected support only available on Baremetal SNO, virtual SNO still requires connected environment

Minimum Required variables

For any type of SNO installation, these variables are always required

  • pull secret # pull secret content
  • domain # FQDN to use
  • cluster # name of the cluster
  • dir # directory to store deployment files
  • extcidrnet # CIDR of the network to use
  • install_type # DCI use only, options: ipi (default), sno
  • pull_image # The "Pull From" ocp_release image to use from the release.txt file. In DCI this is provided in the OCP component.

SNO Virtual

Steps and playbooks to help you setup your environment are documented here

SNO Baremetal

Provisioner node setup

  • Install latest RHEL 8 release
  • Subscribe the node to Base, Appstream, and EPEL repositories
  • Create kni user and set sudo privileges without password
  • Generate a ssh key for the kni user

Required variables for SNO Baremetal

The variables below are required in the inventory

sno_install_type == baremetal sno_extnet_ip # IP address to use on the SNO node from "extcidrnet" - installation_disk # Disk path (default /dev/sda) - ipmi_address # IP address of the BMC interface - ipmi_user # User with administrator privileges - ipmi_password # Password of the BMC user - ipmi_port # Port of the BMC console - baremetal_mac # MAC address of the Baremetal NIC - extcidrrouter # define the gateway to use - extcidrdns # IP address of the DNS server

DNS Entries Required

The following DNS entries will be configured in the dnsmasq service, but if using a corporate DNS then add API, Apps and SNO records there.

  • api.{{ cluster }}.{{ domain }} => {{ sno_extnet_ip }} # IP of the SNO node
  • apps.{{ cluster }}.{{ domain }} => {{ sno_extnet_ip }} # IP of the SNO node
  • sno.{{ cluster }}.{{ domain }} => {{ sno_extnet_ip }} # DNS Name of the SNO node

Disable cache

Cache can be disabled with the variable cache_enabled=false, but the following variables with their values need to be defined with the URLs where the files can be downloaded. Example:

  • coreos_pxe_rootfs_url=http:///rhcos-48.84.202109241901-0-live-rootfs.x86_64.img
  • coreos_sno_ignition_url=http://:8080/4.8.15/sno.ign

TFTP

To specify a server for hosting the dnsmasq service, include a tftp_host group in the inventory. If not defined, the provisioner node will be chosen. See example in roles/sno-node-prep/tests/inventory-baremetal.

NOTE: if using a corporate DHCP and decide to use the SNO dnsmasq TFTP: - blacklist MAC of SNO Baremetal interface - make sure there is no service listening on port 53/udp in TFTP host that could interfere with dnsmasq service of the SNO baremetal deployment.

Also, if you setup dnsmasq_enabled = false (default is true) no dnsmasq service will be configure, and you can setup manually and choose the TFTP/DHCP/DNS services of your preference.

Finally if you do not want to leave the SNO deployment to download the kernel and initramfs images, you can previously downloaded them and and pass the variables of kernel and initramfs images with the path of the file in the tftp server. Example:

  • coreos_pxe_kernel_path=/images/rhcos-48.84.202109241901-0-live-kernel-x86_64
  • coreos_pxe_initramfs_path=/images/rhcos-48.84.202109241901-0-live-initramfs.x86_64.img

Registry

To specify a server hosting the registry include registry_host group in the inventory. Only required in disconnected mode. SNO roles do not configure a registry service, only make use of a provisioned registry. See registry variables in the inventory example in roles/sno-node-prep/tests/inventory-baremetal

Prepare the jumpbox CI and start a deployment

Note: This applies to DCI deployments only