×

在 IBM Cloud® 裸机 (经典) 基础架构上准备供应程序节点

执行以下步骤以准备供应程序节点。

步骤
  1. 通过 ssh 登录到供应程序节点。

  2. 创建一个非 root 用户 (kni) 并为该用户提供 sudo 权限

    # useradd kni
    # passwd kni
    # echo "kni ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/kni
    # chmod 0440 /etc/sudoers.d/kni
  3. 为新用户创建一个 ssh 密钥

    # su - kni -c "ssh-keygen -f /home/kni/.ssh/id_rsa -N ''"
  4. 以新用户身份登录到供应程序节点

    # su - kni
  5. 使用 Red Hat Subscription Manager 注册供应程序节点

    $ sudo subscription-manager register --username=<user> --password=<pass> --auto-attach
    $ sudo subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms \
                                      --enable=rhel-8-for-x86_64-baseos-rpms

    有关 Red Hat Subscription Manager 的更多信息,请参见 使用和配置 Red Hat Subscription Manager

  6. 安装以下软件包

    $ sudo dnf install -y libvirt qemu-kvm mkisofs python3-devel jq ipmitool
  7. 修改用户以将 libvirt 组添加到新创建的用户

    $ sudo usermod --append --groups libvirt kni
  8. 启动 firewalld

    $ sudo systemctl start firewalld
  9. 启用 firewalld

    $ sudo systemctl enable firewalld
  10. 启动 http 服务

    $ sudo firewall-cmd --zone=public --add-service=http --permanent
    $ sudo firewall-cmd --reload
  11. 启动并启用 libvirtd 服务

    $ sudo systemctl enable libvirtd --now
  12. 设置供应程序节点的 ID

    $ PRVN_HOST_ID=<ID>

    您可以使用以下ibmcloud命令查看ID

    $ ibmcloud sl hardware list
  13. 设置公有子网的ID

    $ PUBLICSUBNETID=<ID>

    您可以使用以下ibmcloud命令查看ID

    $ ibmcloud sl subnet list
  14. 设置私有子网的ID

    $ PRIVSUBNETID=<ID>

    您可以使用以下ibmcloud命令查看ID

    $ ibmcloud sl subnet list
  15. 设置供应节点的公有IP地址

    $ PRVN_PUB_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | jq .primaryIpAddress -r)
  16. 设置公有网络的CIDR

    $ PUBLICCIDR=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .cidr)
  17. 设置公有网络的IP地址和CIDR

    $ PUB_IP_CIDR=$PRVN_PUB_IP/$PUBLICCIDR
  18. 设置公有网络的网关

    $ PUB_GATEWAY=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .gateway -r)
  19. 设置供应节点的私有IP地址

    $ PRVN_PRIV_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | \
                     jq .primaryBackendIpAddress -r)
  20. 设置私有网络的CIDR

    $ PRIVCIDR=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .cidr)
  21. 设置私有网络的IP地址和CIDR

    $ PRIV_IP_CIDR=$PRVN_PRIV_IP/$PRIVCIDR
  22. 设置私有网络的网关

    $ PRIV_GATEWAY=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .gateway -r)
  23. 设置baremetalprovisioning网络的桥接

    $ sudo nohup bash -c "
        nmcli --get-values UUID con show | xargs -n 1 nmcli con delete
        nmcli connection add ifname provisioning type bridge con-name provisioning
        nmcli con add type bridge-slave ifname eth1 master provisioning
        nmcli connection add ifname baremetal type bridge con-name baremetal
        nmcli con add type bridge-slave ifname eth2 master baremetal
        nmcli connection modify baremetal ipv4.addresses $PUB_IP_CIDR ipv4.method manual ipv4.gateway $PUB_GATEWAY
        nmcli connection modify provisioning ipv4.addresses 172.22.0.1/24,$PRIV_IP_CIDR ipv4.method manual
        nmcli connection modify provisioning +ipv4.routes \"10.0.0.0/8 $PRIV_GATEWAY\"
        nmcli con down baremetal
        nmcli con up baremetal
        nmcli con down provisioning
        nmcli con up provisioning
        init 6
    "

    根据需要,将eth1eth2替换为相应的接口名称。

  24. 如果需要,SSH回到provisioner节点

    # ssh kni@provisioner.<cluster-name>.<domain>
  25. 验证连接桥是否已正确创建

    $ sudo nmcli con show
    示例输出
    NAME               UUID                                  TYPE      DEVICE
    baremetal          4d5133a5-8351-4bb9-bfd4-3af264801530  bridge    baremetal
    provisioning       43942805-017f-4d7d-a2c2-7cb3324482ed  bridge    provisioning
    virbr0             d9bca40f-eee1-410b-8879-a2d4bb0465e7  bridge    virbr0
    bridge-slave-eth1  76a8ed50-c7e5-4999-b4f6-6d9014dd0812  ethernet  eth1
    bridge-slave-eth2  f31c3353-54b7-48de-893a-02d2b34c4736  ethernet  eth2
  26. 创建一个pull-secret.txt文件

    $ vim pull-secret.txt

    在网页浏览器中,导航到使用用户预配的基础设施在裸机上安装。在步骤1中,点击下载拉取密钥。将内容粘贴到pull-secret.txt文件中,并将内容保存到kni用户的home目录。

配置公有子网

所有OpenShift Container Platform集群节点都必须位于公有子网中。IBM Cloud® Bare Metal (Classic)在子网上不提供DHCP服务器。请在供应节点上单独设置它。

您必须重置在准备供应节点时定义的BASH变量。准备供应节点后重新启动它将删除先前设置的BASH变量。

步骤
  1. 安装dnsmasq

    $ sudo dnf install dnsmasq
  2. 打开dnsmasq配置文件

    $ sudo vi /etc/dnsmasq.conf
  3. 将以下配置添加到dnsmasq配置文件

    interface=baremetal
    except-interface=lo
    bind-dynamic
    log-dhcp
    
    dhcp-range=<ip_addr>,<ip_addr>,<pub_cidr> (1)
    dhcp-option=baremetal,121,0.0.0.0/0,<pub_gateway>,<prvn_priv_ip>,<prvn_pub_ip> (2)
    
    dhcp-hostsfile=/var/lib/dnsmasq/dnsmasq.hostsfile
    1 设置DHCP范围。将两个<ip_addr>实例替换为公有子网中一个未使用的IP地址,以便baremetal网络的dhcp-range以相同的IP地址开头和结尾。将<pub_cidr>替换为公有子网的CIDR。
    2 设置DHCP选项。将<pub_gateway>替换为baremetal网络网关的IP地址。将<prvn_priv_ip>替换为供应节点在provisioning网络上的私有IP地址。将<prvn_pub_ip>替换为供应节点在baremetal网络上的公有IP地址。

    要检索<pub_cidr>的值,请执行

    $ ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .cidr

    <publicsubnetid>替换为公有子网的ID。

    要检索<pub_gateway>的值,请执行

    $ ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .gateway -r

    <publicsubnetid>替换为公有子网的ID。

    要检索<prvn_priv_ip>的值,请执行

    $ ibmcloud  sl hardware detail <id> --output JSON | \
                jq .primaryBackendIpAddress -r

    <id>替换为供应节点的ID。

    要检索<prvn_pub_ip>的值,请执行

    $ ibmcloud sl hardware detail <id> --output JSON | jq .primaryIpAddress -r

    <id>替换为供应节点的ID。

  4. 获取集群的硬件列表

    $ ibmcloud sl hardware list
  5. 获取每个节点的MAC地址和IP地址

    $ ibmcloud sl hardware detail <id> --output JSON | \
      jq '.networkComponents[] | \
      "\(.primaryIpAddress) \(.macAddress)"' | grep -v null

    <id>替换为节点的ID。

    示例输出
    "10.196.130.144 00:e0:ed:6a:ca:b4"
    "141.125.65.215 00:e0:ed:6a:ca:b5"

    记下公有网络的MAC地址和IP地址。分别记下私有网络的MAC地址,稍后您将在install-config.yaml文件中使用它。对每个节点重复此过程,直到您拥有公有baremetal网络的所有公有MAC和IP地址,以及私有provisioning网络的MAC地址。

  6. 将每个节点的公有baremetal网络的MAC和IP地址对添加到dnsmasq.hostsfile文件中

    $ sudo vim /var/lib/dnsmasq/dnsmasq.hostsfile
    示例输入
    00:e0:ed:6a:ca:b5,141.125.65.215,master-0
    <mac>,<ip>,master-1
    <mac>,<ip>,master-2
    <mac>,<ip>,worker-0
    <mac>,<ip>,worker-1
    ...

    <mac>,<ip>替换为相应节点名称的公有MAC地址和公有IP地址。

  7. 启动dnsmasq

    $ sudo systemctl start dnsmasq
  8. 启用dnsmasq,使其在节点启动时启动

    $ sudo systemctl enable dnsmasq
  9. 验证dnsmasq是否正在运行

    $ sudo systemctl status dnsmasq
    示例输出
    ● dnsmasq.service - DNS caching server.
    Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
    Active: active (running) since Tue 2021-10-05 05:04:14 CDT; 49s ago
    Main PID: 3101 (dnsmasq)
    Tasks: 1 (limit: 204038)
    Memory: 732.0K
    CGroup: /system.slice/dnsmasq.service
    └─3101 /usr/sbin/dnsmasq -k
  10. 使用UDP协议打开端口5367

    $ sudo firewall-cmd --add-port 53/udp --permanent
    $ sudo firewall-cmd --add-port 67/udp --permanent
  11. 使用伪装将provisioning添加到外部区域

    $ sudo firewall-cmd --change-zone=provisioning --zone=external --permanent

    此步骤可确保对管理子网的IPMI调用的网络地址转换。

  12. 重新加载firewalld配置

    $ sudo firewall-cmd --reload

检索OpenShift Container Platform安装程序

使用安装程序的stable-4.x版本和您选择的架构来部署OpenShift Container Platform的普遍可用的稳定版本

$ export VERSION=stable-4.17
$ export RELEASE_ARCH=<architecture>
$ export RELEASE_IMAGE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/$RELEASE_ARCH/clients/ocp/$VERSION/release.txt | grep 'Pull From: quay.io' | awk -F ' ' '{print $3}')

解压OpenShift Container Platform安装程序

检索安装程序后,下一步是解压它。

步骤
  1. 设置环境变量

    $ export cmd=openshift-baremetal-install
    $ export pullsecret_file=~/pull-secret.txt
    $ export extract_dir=$(pwd)
  2. 获取oc二进制文件

    $ curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/openshift-client-linux.tar.gz | tar zxvf - oc
  3. 解压安装程序

    $ sudo cp oc /usr/local/bin
    $ oc adm release extract --registry-config "${pullsecret_file}" --command=$cmd --to "${extract_dir}" ${RELEASE_IMAGE}
    $ sudo cp openshift-baremetal-install /usr/local/bin

配置install-config.yaml文件

install-config.yaml文件需要一些额外的详细信息。大部分信息是教安装程序和生成的集群足够了解可用的IBM Cloud® Bare Metal (Classic)硬件,以便它能够完全管理它。在裸机上安装和在IBM Cloud® Bare Metal (Classic)上安装之间的主要区别在于,您必须在install-config.yaml文件的BMC部分显式设置IPMI的权限级别。

步骤
  1. 配置install-config.yaml。更改相应的变量以匹配环境,包括pullSecretsshKey

    apiVersion: v1
    baseDomain: <domain>
    metadata:
      name: <cluster_name>
    networking:
      machineNetwork:
      - cidr: <public-cidr>
      networkType: OVNKubernetes
    compute:
    - name: worker
      replicas: 2
    controlPlane:
      name: master
      replicas: 3
      platform:
        baremetal: {}
    platform:
      baremetal:
        apiVIP: <api_ip>
        ingressVIP: <wildcard_ip>
        provisioningNetworkInterface: <NIC1>
        provisioningNetworkCIDR: <CIDR>
        hosts:
          - name: openshift-master-0
            role: master
            bmc:
              address: ipmi://10.196.130.145?privilegelevel=OPERATOR (1)
              username: root
              password: <password>
            bootMACAddress: 00:e0:ed:6a:ca:b4 (2)
            rootDeviceHints:
              deviceName: "/dev/sda"
          - name: openshift-worker-0
            role: worker
            bmc:
              address: ipmi://<out-of-band-ip>?privilegelevel=OPERATOR (1)
              username: <user>
              password: <password>
            bootMACAddress: <NIC1_mac_address> (2)
            rootDeviceHints:
              deviceName: "/dev/sda"
    pullSecret: '<pull_secret>'
    sshKey: '<ssh_pub_key>'
    1 bmc.address提供了一个privilegelevel配置设置,其值为OPERATOR。这是IBM Cloud® Bare Metal (Classic)基础设施所必需的。
    2 添加相应节点的私有provisioning网络NIC的MAC地址。

    您可以使用ibmcloud命令行实用程序来检索密码。

    $ ibmcloud sl hardware detail <id> --output JSON | \
      jq '"(.networkManagementIpAddress) (.remoteManagementAccounts[0].password)"'

    <id>替换为节点的ID。

  2. 创建一个目录来存储集群配置

    $ mkdir ~/clusterconfigs
  3. install-config.yaml文件复制到该目录

    $ cp install-config.yaml ~/clusterconfigs
  4. 确保在安装OpenShift Container Platform集群之前关闭所有裸机节点的电源

    $ ipmitool -I lanplus -U <user> -P <password> -H <management_server_ip> power off
  5. 如果以前部署尝试中遗留了旧的引导资源,请将其删除

    for i in $(sudo virsh list | tail -n +3 | grep bootstrap | awk {'print $2'});
    do
      sudo virsh destroy $i;
      sudo virsh undefine $i;
      sudo virsh vol-delete $i --pool $i;
      sudo virsh vol-delete $i.ign --pool $i;
      sudo virsh pool-destroy $i;
      sudo virsh pool-undefine $i;
    done

其他install-config参数

有关install-config.yaml文件的必需参数、hosts参数和bmc参数,请参见下表。

表1. 必需参数
参数 默认值 描述

baseDomain

集群的域名。例如,example.com

bootMode

UEFI

节点的启动模式。选项包括legacyUEFIUEFISecureBoot。如果未设置bootMode,Ironic会在检查节点时设置它。

bootstrapExternalStaticDNS

引导节点的静态网络 DNS。在裸机网络上没有动态主机配置协议 (DHCP) 服务器时,使用静态 IP 地址部署集群时,必须设置此值。如果不设置此值,安装程序将使用bootstrapExternalStaticGateway中的值,当网关和 DNS 的 IP 地址值不同时,这会导致问题。

bootstrapExternalStaticIP

引导虚拟机的静态 IP 地址。在裸机网络上没有 DHCP 服务器时,使用静态 IP 地址部署集群时,必须设置此值。

bootstrapExternalStaticGateway

引导虚拟机的网关的静态 IP 地址。在裸机网络上没有 DHCP 服务器时,使用静态 IP 地址部署集群时,必须设置此值。

sshKey

sshKey配置设置包含访问控制平面节点和计算节点所需的~/.ssh/id_rsa.pub文件中的密钥。通常,此密钥来自provisioner节点。

pullSecret

pullSecret配置设置包含在准备 provisioner 节点时从在裸机上安装 OpenShift页面下载的拉取密钥的副本。

metadata:
    name:

要赋予 OpenShift Container Platform 集群的名称。例如,openshift

networking:
    machineNetwork:
    - cidr:

外部网络的公共 CIDR(无类别域间路由)。例如,10.0.0.0/24

compute:
  - name: worker

即使没有节点,OpenShift Container Platform 集群也需要为计算节点提供名称。

compute:
    replicas: 2

Replicas 设置 OpenShift Container Platform 集群中计算节点的数量。

controlPlane:
    name: master

OpenShift Container Platform 集群需要为控制平面节点提供名称。

controlPlane:
    replicas: 3

Replicas 设置作为 OpenShift Container Platform 集群一部分包含的控制平面节点的数量。

provisioningNetworkInterface

连接到预配网络的节点上的网络接口名称。对于 OpenShift Container Platform 4.9 及更高版本,请使用bootMACAddress配置设置启用 Ironic 来识别 NIC 的 IP 地址,而不是使用provisioningNetworkInterface配置设置来识别 NIC 的名称。

defaultMachinePlatform

用于没有平台配置的机器池的默认配置。

apiVIPs

(可选) Kubernetes API 通信的虚拟 IP 地址。

此设置必须在install-config.yaml文件中作为 MachineNetwork 中的保留 IP 提供,或者在 DNS 中预先配置,以便默认名称能够正确解析。在install-config.yaml文件中向apiVIPs配置设置添加值时,请使用虚拟 IP 地址,而不是 FQDN。使用双栈网络时,主 IP 地址必须来自 IPv4 网络。如果未设置,安装程序将使用api.<cluster_name>.<base_domain>从 DNS 中获取 IP 地址。

在 OpenShift Container Platform 4.12 之前,集群安装程序仅接受apiVIP配置设置的 IPv4 地址或 IPv6 地址。从 OpenShift Container Platform 4.12 或更高版本开始,apiVIP配置设置已弃用。请改用apiVIPs配置设置的列表格式来指定 IPv4 地址、IPv6 地址或两种 IP 地址格式。

disableCertificateVerification

False

redfishredfish-virtualmedia需要此参数来管理 BMC 地址。当使用自签名证书来管理BMC地址时,此值应为True

ingressVIPs

(可选) 入口流量的虚拟 IP 地址。

此设置必须在install-config.yaml文件中作为 MachineNetwork 中的保留 IP 提供,或者在 DNS 中预先配置,以便默认名称能够正确解析。在install-config.yaml文件中向ingressVIPs配置设置添加值时,请使用虚拟 IP 地址,而不是 FQDN。使用双栈网络时,主 IP 地址必须来自 IPv4 网络。如果未设置,安装程序将使用test.apps.<cluster_name>.<base_domain>从 DNS 中获取 IP 地址。

在 OpenShift Container Platform 4.12 之前,集群安装程序仅接受ingressVIP配置设置的 IPv4 地址或 IPv6 地址。在 OpenShift Container Platform 4.12 及更高版本中,ingressVIP配置设置已弃用。请改用ingressVIPs配置设置的列表格式来指定 IPv4 地址、IPv6 地址或两种 IP 地址格式。

表 2. 可选参数
参数 默认值 描述

provisioningDHCPRange

172.22.0.10,172.22.0.100

定义预配网络上节点的 IP 范围。

provisioningNetworkCIDR

172.22.0.0/24

用于预配的网络的 CIDR。在不使用预配网络上的默认地址范围时,此选项是必需的。

clusterProvisioningIP

provisioningNetworkCIDR的第三个 IP 地址。

集群中运行预配服务的 IP 地址。默认为预配子网的第三个 IP 地址。例如,172.22.0.3

bootstrapProvisioningIP

provisioningNetworkCIDR的第二个 IP 地址。

安装程序部署控制平面(主)节点时,引导虚拟机上运行预配服务的 IP 地址。默认为预配子网的第二个 IP 地址。例如,172.22.0.22620:52:0:1307::2

externalBridge

baremetal

连接到裸机网络的虚拟机的裸机桥的名称。

provisioningBridge

provisioning

连接到预配网络的provisioner主机上的预配桥的名称。

architecture

定义集群的主机架构。有效值为amd64arm64

defaultMachinePlatform

用于没有平台配置的机器池的默认配置。

bootstrapOSImage

用于覆盖引导节点默认操作系统的镜像的 URL。URL 必须包含镜像的 SHA-256 哈希值。例如:https://mirror.openshift.com/rhcos-<version>-qemu.qcow2.gz?sha256=<uncompressed_sha256>;

provisioningNetwork

provisioningNetwork配置设置决定集群是否使用预配网络。如果使用,该配置设置还决定集群是否管理网络。

Disabled:将此参数设置为Disabled以禁用对预配网络的要求。设置为Disabled时,您只能使用基于虚拟介质的预配,或使用辅助安装程序启动集群。如果为Disabled并且使用电源管理,则必须从裸机网络访问 BMC。如果为Disabled,则必须在裸机网络上提供两个用于预配服务的 IP 地址。

Managed:将此参数设置为Managed(默认为此值)以完全管理预配网络,包括 DHCP、TFTP 等。

Unmanaged:将此参数设置为Unmanaged以启用预配网络,但需要手动配置 DHCP。建议使用虚拟介质预配,但如果需要,仍然可以使用 PXE。

httpProxy

将此参数设置为环境中使用的相应 HTTP 代理。

httpsProxy

将此参数设置为环境中使用的相应 HTTPS 代理。

noProxy

将此参数设置为环境中代理使用的适当排除列表。

主机

hosts 参数是用于构建集群的独立裸机资产列表。

表 3. 主机
名称 默认值 描述

name

要与详细信息关联的BareMetalHost 资源的名称。例如,openshift-master-0

角色

裸机节点的角色。master(控制平面节点)或worker(计算节点)。

bmc

基板管理控制器的连接详细信息。有关更多详细信息,请参阅 BMC寻址部分。

bootMACAddress

主机用于预配网络的网卡的 MAC 地址。Ironic 使用bootMACAddress配置设置检索 IP 地址。然后,它绑定到主机。

如果禁用了预配网络,则必须提供主机上的有效 MAC 地址。

networkConfig

设置此可选参数以配置主机的网络接口。有关更多详细信息,请参阅“(可选)配置主机网络接口”。

根设备提示

rootDeviceHints 参数使安装程序能够将 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像预配到特定设备。安装程序按照发现设备的顺序检查设备,并将发现的值与提示值进行比较。安装程序使用第一个与提示值匹配的已发现设备。配置可以组合多个提示,但设备必须匹配所有提示才能使安装程序选择它。

表 4. 子字段
子字段 描述

deviceName

包含 Linux 设备名称(例如/dev/vda/dev/disk/by-path/)的字符串。建议使用指向存储位置的/dev/disk/by-path/<device_path>链接。提示必须与实际值完全匹配。

hctl

包含 SCSI 总线地址(如0:0:0:0)的字符串。提示必须与实际值完全匹配。

model

包含特定于供应商的设备标识符的字符串。提示可以是实际值的子字符串。

vendor

包含设备供应商或制造商名称的字符串。提示可以是实际值的子字符串。

serialNumber

包含设备序列号的字符串。提示必须与实际值完全匹配。

minSizeGigabytes

表示设备以千兆字节为单位的最小大小的整数。

wwn

包含唯一存储标识符的字符串。提示必须与实际值完全匹配。

wwnWithExtension

包含唯一存储标识符(附加了供应商扩展名)的字符串。提示必须与实际值完全匹配。

wwnVendorExtension

包含唯一的供应商存储标识符的字符串。提示必须与实际值完全匹配。

rotational

布尔值,指示设备是否应为旋转磁盘 (true) 或非旋转磁盘 (false)。

示例用法
     - name: master-0
       role: master
       bmc:
         address: ipmi://10.10.0.3:6203
         username: admin
         password: redhat
       bootMACAddress: de:ad:be:ef:00:40
       rootDeviceHints:
         deviceName: "/dev/sda"

创建 OpenShift Container Platform 清单

  1. 创建 OpenShift Container Platform 清单。

    $ ./openshift-baremetal-install --dir ~/clusterconfigs create manifests
    INFO Consuming Install Config from target directory
    WARNING Making control-plane schedulable by setting MastersSchedulable to true for Scheduler cluster settings
    WARNING Discarding the OpenShift Manifest that was provided in the target directory because its dependencies are dirty and it needs to be regenerated

通过 OpenShift Container Platform 安装程序部署集群

运行 OpenShift Container Platform 安装程序

$ ./openshift-baremetal-install --dir ~/clusterconfigs --log-level debug create cluster

跟踪安装进度

在部署过程中,您可以通过对安装目录文件夹中的.openshift_install.log日志文件发出tail命令来检查安装的总体状态

$ tail -f /path/to/install-dir/.openshift_install.log