Agent-based Installerを利用したOpenShift構築

# はじめに

OCP（OpenShift Container Platform）をオンプレ環境に導入してくれ、と言われ焦る自分。
OCPインストールのためにBastionサーバーにDNS、HAProxy、Webサーバー等々を立てて、おまけにBootstrapなる構築時のみ必要なノードのリソースも見積もって、という作業が大変な記憶が蘇る。

クラウドのマネージドサービス使えばポチポチっとOpenShiftが使える環境が準備できる時代なのに。
ちがう、そうじゃない。クラウド上ではダメなのだ。やりたいことはオンプレにあるのだ。

現在OCPの構築方法はバージョンアップを重ねるごとどんどん容易になってきており、4.12からはエージェントベースのインストール方式がGAされました。
本記事ではエージェントベースのインストールを、IBM CloudのVPCベアメタルサーバーのESXi上をオンプレと見立てた構成で行った際の設定について紹介します。


# エージェントベースインストーラーの利用

OpenShift v4.12でGAされた新しいインストール方式で、オンプレ環境への導入を容易に実現できます。
以前はインストール時にインストールに必要なファイルや設定情報を配信するWebサーバーを立てる必要があったり（それに付随してiPXEの仕組みを準備したり）と、事前準備がなかなか手間がかかっていました。（Red HatとしてはAnsibleでヘルパーノードを簡単に準備できる仕組みを作るという取り組みもなされていたようです。）また、インストールの処理の中でMasterノードを構築してからWorkerノードをという順番があったりとお作法もありました。
エージェントベースインストーラーを利用することで、事前準備からインストール実行までが大幅にラクになります。

## エージェントベースインストーラーを利用したインストールの流れ

エージェントベースインストーラーを利用したインストールの流れをザックリ簡単に記載すると、以下のようになります。VMを利用したベアメタル方式の例となります。

1. DNS,DHCPサーバー準備（本記事ではIBM Cloudのサービスを利用）
2. openshift-installバイナリ準備
3. ノード用VMを準備
4. クラスターの構成情報（install-config.yaml）、エージェントの構成情報（agent-config.yaml）の2ファイルを準備
5. openshift-installを実行して上記2ファイルをもとにISOファイルを作成
6. ISOファイルを全VMにマウントして起動
7. 待つ
8. インストール完了

はい、簡単です。

次章より実際にインストールした際の設定情報について紹介します。


# 検証環境

今回はIBM CloudのVPCベアメタルサーバーのサービスを利用して、ESXi上にOCPの各ノードをVMとして立てるベアメタル方式（vCenterを使わない）で構築をおこないました。VPCベアメタルサーバーの利用については別記事にて紹介できればと思います。
ネットワーク環境については、VMが直接インターネットにアクセスできる構成とProxyを経由する構成の2パターンを試しました。

本記事では直接インターネットにアクセスできる構成の紹介です。
システム構成図は以下のようになります。公式マニュアルには具体的なyaml記載例のなかったMaster/Workerノードのマルチノード構成となります。

![構成図-Direct構成.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142407/73555a36-d042-99ba-462a-cc36d95bb239.png)


作業簡略化のため、IBM CloudのDNSサービスを利用し、IPはVPCのサブネットから払い出されたIPを利用します。VPCサブネットからベアメタルサーバー上のVMへのIP払い出しについては[こちら](https://qiita.com/testnin2/items/198019d564829138ebed)の記事が参考になります。



# 構築検証

## 事前準備

IBM CloudのDNSサーバーに以下情報を設定します。

|タイプ  |名前    |値         |
|---    |---     |---       |
|A      |master1 |10.240.1.12|
|A      |master2 |10.240.1.13|
|A      |master3 |10.240.1.14|
|A      |worker1 |10.240.1.15|
|A      |worker2 |10.240.1.16|
|A      |worker3 |10.240.1.17|
|A      |api     |10.240.1.20|
|A      |api.ocpcluster |10.240.1.20|
|A      |api-int |10.240.1.20|
|A      |api-int.ocpcluster |10.240.1.20|
|A      |console-openshift-console.apps.ocpcluster |10.240.1.21|
|A      |oauth-openshift.apps.ocpcluster |10.240.1.21|


## 構成ファイル準備

openshift-installコマンドを下記のようにダウンロードします。
今回はバージョンOCPの上に載せる製品の制約でバージョン4.12を選択しています。

```
$ curl -OL https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable-4.12/openshift-install-linux-4.12.30.tar.gz
$ tar xzvf openshift-install-linux-4.12.30.tar.gz
```
ocコマンドのダウンロード、ssh-key作成についての記載は割愛します。

続いて、OCPクラスターの構成情報としてinstall-config.yamlファイルを作成します。

```install-config.yaml
apiVersion: v1
baseDomain: ocptest.com
compute:
- architecture: amd64
  hyperthreading: Enabled
  name: worker
  replicas: 3
controlPlane:
  architecture: amd64
  hyperthreading: Enabled
  name: master
  replicas: 3
metadata:
  name: ocpcluster
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  machineNetwork:
  - cidr: 10.240.1.0/24
  networkType: OVNKubernetes
  serviceNetwork:
  - 172.30.0.0/16
platform:
  baremetal:
    apiVIPs:
    - 10.240.1.20
    ingressVIPs:
    - 10.240.1.21
pullSecret: '{"auths":{"cloud.openshift.com":{"auth":xxxxx}}}'
sshKey: 'ssh-ed25519 AAAAxxxxx user01@proxy.ocptest.com'
```

platformはbaremetalを指定し、apiVIP、ingressVIPを指定します。今回は同一サブネットの使用していないIPを指定しました。OCPのインストールが完了するとMasterノードのいずれかにVIP用のPodが作成され、Podが稼働するノードにVIPが紐づきます。

次にエージェントの設定であるagent-config.yamlファイルを作成します。

```agent-config.yaml
apiVersion: v1alpha1
kind: AgentConfig
metadata:
  name: ocpcluster
rendezvousIP: 10.240.1.12
hosts:
  - hostname: master1.ocptest.com
    role: master
    interfaces:
      - name: ens192
        macAddress: 02:00:16:62:8B:4F
    rootDeviceHints:
      deviceName: /dev/sda
    networkConfig:
      interfaces:
        - name: ens192
          type: ethernet
          state: up
          mac-address: 02:00:16:62:8B:4F
          ipv4:
            enabled: true
            address:
              - ip: 10.240.1.12
                prefix-length: 24
            dhcp: false
      dns-resolver:
        config:
          server:
            - 161.26.0.7
      routes:
        config:
          - destination: 0.0.0.0/0
            next-hop-address: 10.240.1.1
            next-hop-interface: ens192
            table-id: 254
  - hostname: master2.ocptest.com
    role: master
    interfaces:
      - name: ens192
        macAddress: 02:00:18:62:8B:4F
    rootDeviceHints:
      deviceName: /dev/sda
    networkConfig:
      interfaces:
        - name: ens192
          type: ethernet
          state: up
          mac-address: 02:00:18:62:8B:4F
          ipv4:
            enabled: true
            address:
              - ip: 10.240.1.13
                prefix-length: 24
            dhcp: false
      dns-resolver:
        config:
          server:
            - 161.26.0.7
      routes:
        config:
          - destination: 0.0.0.0/0
            next-hop-address: 10.240.1.1
            next-hop-interface: ens192
            table-id: 254
  - hostname: master3.ocptest.com
    role: master
    interfaces:
      - name: ens192
        macAddress: 02:00:1A:62:8B:4F
    rootDeviceHints:
      deviceName: /dev/sda
    networkConfig:
      interfaces:
        - name: ens192
          type: ethernet
          state: up
          mac-address: 02:00:1A:62:8B:4F
          ipv4:
            enabled: true
            address:
              - ip: 10.240.1.14
                prefix-length: 24
            dhcp: false
      dns-resolver:
        config:
          server:
            - 161.26.0.7
      routes:
        config:
          - destination: 0.0.0.0/0
            next-hop-address: 10.240.1.1
            next-hop-interface: ens192
            table-id: 254
  - hostname: worker1.ocptest.com
    role: worker
    interfaces:
      - name: ens192
        macAddress: 02:00:1C:62:8B:4F
    rootDeviceHints:
      deviceName: /dev/sda
    networkConfig:
      interfaces:
        - name: ens192
          type: ethernet
          state: up
          mac-address: 02:00:1C:62:8B:4F
          ipv4:
            enabled: true
            address:
              - ip: 10.240.1.15
                prefix-length: 24
            dhcp: false
      dns-resolver:
        config:
          server:
            - 161.26.0.7
      routes:
        config:
          - destination: 0.0.0.0/0
            next-hop-address: 10.240.1.1
            next-hop-interface: ens192
            table-id: 254
  - hostname: worker2.ocptest.com
    role: worker
    interfaces:
      - name: ens192
        macAddress: 02:00:1E:62:8B:4F
    rootDeviceHints:
      deviceName: /dev/sda
    networkConfig:
      interfaces:
        - name: ens192
          type: ethernet
          state: up
          mac-address: 02:00:1E:62:8B:4F
          ipv4:
            enabled: true
            address:
              - ip: 10.240.1.16
                prefix-length: 24
            dhcp: false
      dns-resolver:
        config:
          server:
            - 161.26.0.7
      routes:
        config:
          - destination: 0.0.0.0/0
            next-hop-address: 10.240.1.1
            next-hop-interface: ens192
            table-id: 254
  - hostname: worker3.ocptest.com
    role: worker
    interfaces:
      - name: ens192
        macAddress: 02:00:20:62:8B:4F
    rootDeviceHints:
      deviceName: /dev/sda
    networkConfig:
      interfaces:
        - name: ens192
          type: ethernet
          state: up
          mac-address: 02:00:20:62:8B:4F
          ipv4:
            enabled: true
            address:
              - ip: 10.240.1.17
                prefix-length: 24
            dhcp: false
      dns-resolver:
        config:
          server:
            - 161.26.0.7
      routes:
        config:
          - destination: 0.0.0.0/0
            next-hop-address: 10.240.1.1
            next-hop-interface: ens192
            table-id: 254
```

agent-config.yamlの内容の説明を以下に記載します。

```agent-config.yaml（抜粋）
apiVersion: v1alpha1
kind: AgentConfig
metadata:
  name: ocpcluster　→ クラスター名を指定。install-config.yamlの設定と合わせる
rendezvousIP: 10.240.1.12　→ ランデブーノードのIPを指定する、今回はMaster1を指定
hosts:
  - hostname: master1.ocptest.com
    role: master　→ roleとしてMaster/Workerを指定する
    interfaces:
      - name: ens192　→ OSが認識するデバイス名を記載する、ISOファイルから起動して確認する
        macAddress: 02:00:16:62:8B:4F
    rootDeviceHints:
      deviceName: /dev/sda　→ OSが認識するデバイス名を記載する、ISOファイルから起動して確認する
    networkConfig:
      interfaces:
        - name: ens192
          type: ethernet
          state: up
          mac-address: 02:00:16:62:8B:4F
          ipv4:
            enabled: true
            address:
              - ip: 10.240.1.12　→ IPを指定
                prefix-length: 24
            dhcp: false
      dns-resolver:
        config:
          server:
            - 161.26.0.7　→ 利用するDNSを指定、今回はIBM CloudのDNSのIPを指定
      routes:
        config:
          - destination: 0.0.0.0/0
            next-hop-address: 10.240.1.1
            next-hop-interface: ens192
            table-id: 254
：
（後略）
```

## ISOファイル作成

install-config.yaml、agent-config.yamlの2ファイルをディレクトリを作成し、その中にコピーします。

```
$ mkdir installer
$ cp install-config.yaml installer/
$ cp agent-config.yaml installer/
```

下記コマンドを実行し、ISOファイルを作成します。

```
$ ./openshift-install --dir installer agent create image
INFO The rendezvous host IP (node0 IP) is 10.240.1.12
INFO Extracting base ISO from release payload
INFO Verifying cached file
INFO Using cached Base ISO /home/user01/.cache/agent/image_cache/coreos-x86_64.iso
INFO Consuming Install Config from target directory
INFO Consuming Agent Config from target directory
```

installerディレクトリ内にISOファイルが作成されます。

```
$ ls -l installer/
total 1177600
-rw-rw-r--. 1 user01 user01 1205862400 Sep  8 20:06 agent.x86_64.iso
drwxr-x---. 2 user01 user01         50 Sep  8 20:06 auth
```

作成したISOファイルをVMにマウントするため、ESXiのデータストア内にscpでコピーします。

```
$ scp installer/agent.x86_64.iso root@10.240.0.4:/vmfs/volumes/datastore1/iso/
Password:
agent.x86_64.iso                                       100% 1150MB  46.2MB/s   00:24
```

これでISOファイルの準備は完了です。

## インストール実行

ISOファイルをESXi上のVMにマウントして起動するだけでインストールが開始されます。

VMの詳細設定によりISOファイルをマウントします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142407/3f64e011-8f29-01c9-76d0-f3a5d838220d.png)

ISOファイルから起動するようBIOS/EFI設定画面に入るようにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142407/f88379d7-9457-366b-235b-dfa4a1fc7ba0.png)

VM起動後、EFIの画面でCDROMを選択して、Enterを押下しISOファイルから起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142407/c8d0b52e-f6d7-7046-7759-b19726967bee.png)

コンソール画面に、agent-config.yamlファイルで指定したVM/ノードが起動しインストールの準備ができたかのステータスが表示され、全台が準備完了になると、`Cluster installation in progresss` が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142407/b2686e61-62cd-720b-a220-677e25dae64e.png)

:::note info
上記はOCPのバージョン4.12.32で実施したときのキャプチャです。バージョン4.13ではquay.ioなどインストールに必要なイメージを格納するイメージレジストリへの疎通確認画面がISOファイルからの起動時に表示されます。（更に機能が充実してきています！インターネットへの疎通確認は毎回困るところなので助かります。）
:::

## インストールの進捗確認

VMのコンソール画面ではインストールの進捗の詳細は分かりませんので、下記コマンドを実行して進捗の詳細を確認します。（ログレベルは適宜変更してください。）

```
$ ./openshift-install --dir installer agent wait-for install-complete --log-level=debug
```


参考までにインストール時のdebugログを貼っておきます。

<details><summary>デバッグログ</summary>



```log
[user01@proxy ocpinstall]$ ./openshift-install --dir installer agent wait-for install-complete --log-level=debug
DEBUG asset directory: installer
DEBUG Loading Agent Config...
DEBUG Using Agent Config loaded from state file
DEBUG Loading Agent Manifests...
DEBUG   Loading Agent PullSecret...
DEBUG     Loading Install Config...
DEBUG     Using Install Config loaded from state file
DEBUG   Using Agent PullSecret loaded from state file
DEBUG   Loading InfraEnv Config...
DEBUG     Loading Install Config...
DEBUG     Loading Agent Config...
DEBUG   Using InfraEnv Config loaded from state file
DEBUG   Loading NMState Config...
DEBUG     Loading Agent Config...
DEBUG     Loading Install Config...
DEBUG   Using NMState Config loaded from state file
DEBUG   Loading AgentClusterInstall Config...
DEBUG     Loading Install Config...
DEBUG   Using AgentClusterInstall Config loaded from state file
DEBUG   Loading ClusterDeployment Config...
DEBUG     Loading Install Config...
DEBUG   Using ClusterDeployment Config loaded from state file
DEBUG   Loading ClusterImageSet Config...
DEBUG     Loading Release Image Pull Spec...
DEBUG     Using Release Image Pull Spec loaded from state file
DEBUG     Loading Install Config...
DEBUG   Using ClusterImageSet Config loaded from state file
DEBUG Using Agent Manifests loaded from state file
DEBUG RendezvousIP from the AgentConfig 10.240.1.12
DEBUG Agent Rest API Initialized
INFO Cluster is not ready for install. Check validations
DEBUG Cluster validation: The pull secret is set.
WARNING Cluster validation: The cluster has hosts that are not ready to install.
DEBUG Cluster validation: The cluster has a sufficient number of master candidates.
DEBUG Cluster validation: The API virtual IP is defined.
DEBUG Cluster validation: api vip 10.240.1.20 belongs to the Machine CIDR and is not in use.
DEBUG Cluster validation: The Cluster Network CIDR is defined.
DEBUG Cluster validation: The base domain is defined.
DEBUG Cluster validation: The Ingress virtual IP is defined.
DEBUG Cluster validation: ingress vip 10.240.1.21 belongs to the Machine CIDR and is not in use.
DEBUG Cluster validation: The Machine Network CIDR is defined.
DEBUG Cluster validation: The Cluster Machine CIDR is equivalent to the calculated CIDR.
DEBUG Cluster validation: The Cluster Network prefix is valid.
DEBUG Cluster validation: The cluster has a valid network type
DEBUG Cluster validation: Same address families for all networks.
DEBUG Cluster validation: No CIDRS are overlapping.
DEBUG Cluster validation: No ntp problems found
DEBUG Cluster validation: The Service Network CIDR is defined.
DEBUG Cluster validation: cnv is disabled
DEBUG Cluster validation: lso is disabled
DEBUG Cluster validation: lvm is disabled
DEBUG Cluster validation: odf is disabled
DEBUG Host worker2.ocptest.com validation: cnv is disabled
DEBUG Host worker2.ocptest.com validation: lso is disabled
DEBUG Host worker2.ocptest.com validation: lvm is disabled
DEBUG Host worker2.ocptest.com validation: odf is disabled
DEBUG Host worker2.ocptest.com validation: Valid inventory exists for the host
DEBUG Host worker2.ocptest.com validation: Sufficient CPU cores
DEBUG Host worker2.ocptest.com validation: Sufficient minimum RAM
DEBUG Host worker2.ocptest.com validation: Sufficient disk capacity
DEBUG Host worker2.ocptest.com validation: Sufficient CPU cores for role worker
DEBUG Host worker2.ocptest.com validation: Sufficient RAM for role worker
DEBUG Host worker2.ocptest.com validation: Hostname worker2.ocptest.com is unique in cluster
DEBUG Host worker2.ocptest.com validation: Hostname worker2.ocptest.com is allowed
DEBUG Host worker2.ocptest.com validation: Speed of installation disk has not yet been measured
DEBUG Host worker2.ocptest.com validation: Host is compatible with cluster platform baremetal
DEBUG Host worker2.ocptest.com validation: VSphere disk.EnableUUID is enabled for this virtual machine
DEBUG Host worker2.ocptest.com validation: Host agent compatibility checking is disabled
DEBUG Host worker2.ocptest.com validation: No request to skip formatting of the installation disk
DEBUG Host worker2.ocptest.com validation: All disks that have skipped formatting are present in the host inventory
DEBUG Host worker2.ocptest.com validation: Host is connected
DEBUG Host worker2.ocptest.com validation: Media device is connected
DEBUG Host worker2.ocptest.com validation: Machine Network CIDR is defined
DEBUG Host worker2.ocptest.com validation: Host belongs to all machine network CIDRs
WARNING Host worker2.ocptest.com validation: No connectivity to the majority of hosts in the cluster
DEBUG Host worker2.ocptest.com validation: Platform VMware7,1 is allowed
DEBUG Host worker2.ocptest.com validation: Host NTP is synced
DEBUG Host worker2.ocptest.com validation: Host clock is synchronized with service
DEBUG Host worker2.ocptest.com validation: All required container images were either pulled successfully or no attempt was made to pull them
DEBUG Host worker2.ocptest.com validation: Network latency requirement has been satisfied.
DEBUG Host worker2.ocptest.com validation: Packet loss requirement has been satisfied.
DEBUG Host worker2.ocptest.com validation: Host has been configured with at least one default route.
DEBUG Host worker2.ocptest.com validation: Domain name resolution for the api.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host worker2.ocptest.com validation: Domain name resolution for the api-int.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host worker2.ocptest.com validation: Domain name resolution for the *.apps.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host worker2.ocptest.com validation: DNS wildcard check was successful
DEBUG Host worker2.ocptest.com validation: Host subnets are not overlapping
DEBUG Host worker3.ocptest.com validation: Valid inventory exists for the host
DEBUG Host worker3.ocptest.com validation: Sufficient CPU cores
DEBUG Host worker3.ocptest.com validation: Sufficient minimum RAM
DEBUG Host worker3.ocptest.com validation: Sufficient disk capacity
DEBUG Host worker3.ocptest.com validation: Sufficient CPU cores for role worker
DEBUG Host worker3.ocptest.com validation: Sufficient RAM for role worker
DEBUG Host worker3.ocptest.com validation: Hostname worker3.ocptest.com is unique in cluster
DEBUG Host worker3.ocptest.com validation: Hostname worker3.ocptest.com is allowed
DEBUG Host worker3.ocptest.com validation: Speed of installation disk has not yet been measured
DEBUG Host worker3.ocptest.com validation: Host is compatible with cluster platform baremetal
DEBUG Host worker3.ocptest.com validation: VSphere disk.EnableUUID is enabled for this virtual machine
DEBUG Host worker3.ocptest.com validation: Host agent compatibility checking is disabled
DEBUG Host worker3.ocptest.com validation: No request to skip formatting of the installation disk
DEBUG Host worker3.ocptest.com validation: All disks that have skipped formatting are present in the host inventory
DEBUG Host worker3.ocptest.com validation: Host is connected
DEBUG Host worker3.ocptest.com validation: Media device is connected
DEBUG Host worker3.ocptest.com validation: Machine Network CIDR is defined
DEBUG Host worker3.ocptest.com validation: Host belongs to all machine network CIDRs
WARNING Host worker3.ocptest.com validation: No connectivity to the majority of hosts in the cluster
DEBUG Host worker3.ocptest.com validation: Platform VMware7,1 is allowed
WARNING Host worker3.ocptest.com validation: Host couldn't synchronize with any NTP server
DEBUG Host worker3.ocptest.com validation: Host clock is synchronized with service
DEBUG Host worker3.ocptest.com validation: All required container images were either pulled successfully or no attempt was made to pull them
DEBUG Host worker3.ocptest.com validation: Host has been configured with at least one default route.
DEBUG Host worker3.ocptest.com validation: Domain name resolution for the api.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host worker3.ocptest.com validation: Domain name resolution for the api-int.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host worker3.ocptest.com validation: Domain name resolution for the *.apps.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host worker3.ocptest.com validation: Host subnets are not overlapping
DEBUG Host worker3.ocptest.com validation: cnv is disabled
DEBUG Host worker3.ocptest.com validation: lso is disabled
DEBUG Host worker3.ocptest.com validation: lvm is disabled
DEBUG Host worker3.ocptest.com validation: odf is disabled
DEBUG Host master3.ocptest.com validation: Valid inventory exists for the host
DEBUG Host master3.ocptest.com validation: Sufficient CPU cores
DEBUG Host master3.ocptest.com validation: Sufficient minimum RAM
DEBUG Host master3.ocptest.com validation: Sufficient disk capacity
DEBUG Host master3.ocptest.com validation: Sufficient CPU cores for role master
DEBUG Host master3.ocptest.com validation: Sufficient RAM for role master
DEBUG Host master3.ocptest.com validation: Hostname master3.ocptest.com is unique in cluster
DEBUG Host master3.ocptest.com validation: Hostname master3.ocptest.com is allowed
DEBUG Host master3.ocptest.com validation: Speed of installation disk has not yet been measured
DEBUG Host master3.ocptest.com validation: Host is compatible with cluster platform baremetal
DEBUG Host master3.ocptest.com validation: VSphere disk.EnableUUID is enabled for this virtual machine
DEBUG Host master3.ocptest.com validation: Host agent compatibility checking is disabled
DEBUG Host master3.ocptest.com validation: No request to skip formatting of the installation disk
DEBUG Host master3.ocptest.com validation: All disks that have skipped formatting are present in the host inventory
DEBUG Host master3.ocptest.com validation: Host is connected
DEBUG Host master3.ocptest.com validation: Media device is connected
DEBUG Host master3.ocptest.com validation: Machine Network CIDR is defined
DEBUG Host master3.ocptest.com validation: Host belongs to all machine network CIDRs
DEBUG Host master3.ocptest.com validation: Host has connectivity to the majority of hosts in the cluster
DEBUG Host master3.ocptest.com validation: Platform VMware7,1 is allowed
DEBUG Host master3.ocptest.com validation: Host NTP is synced
DEBUG Host master3.ocptest.com validation: Host clock is synchronized with service
DEBUG Host master3.ocptest.com validation: All required container images were either pulled successfully or no attempt was made to pull them
DEBUG Host master3.ocptest.com validation: Network latency requirement has been satisfied.
DEBUG Host master3.ocptest.com validation: Packet loss requirement has been satisfied.
DEBUG Host master3.ocptest.com validation: Host has been configured with at least one default route.
DEBUG Host master3.ocptest.com validation: Domain name resolution for the api.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host master3.ocptest.com validation: Domain name resolution for the api-int.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host master3.ocptest.com validation: Domain name resolution for the *.apps.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host master3.ocptest.com validation: DNS wildcard check was successful
DEBUG Host master3.ocptest.com validation: Host subnets are not overlapping
DEBUG Host master3.ocptest.com validation: cnv is disabled
DEBUG Host master3.ocptest.com validation: lso is disabled
DEBUG Host master3.ocptest.com validation: lvm is disabled
DEBUG Host master3.ocptest.com validation: odf is disabled
DEBUG Host worker1.ocptest.com validation: Valid inventory exists for the host
DEBUG Host worker1.ocptest.com validation: Sufficient CPU cores
DEBUG Host worker1.ocptest.com validation: Sufficient minimum RAM
DEBUG Host worker1.ocptest.com validation: Sufficient disk capacity
DEBUG Host worker1.ocptest.com validation: Sufficient CPU cores for role worker
DEBUG Host worker1.ocptest.com validation: Sufficient RAM for role worker
DEBUG Host worker1.ocptest.com validation: Hostname worker1.ocptest.com is unique in cluster
DEBUG Host worker1.ocptest.com validation: Hostname worker1.ocptest.com is allowed
DEBUG Host worker1.ocptest.com validation: Speed of installation disk has not yet been measured
DEBUG Host worker1.ocptest.com validation: Host is compatible with cluster platform baremetal
DEBUG Host worker1.ocptest.com validation: VSphere disk.EnableUUID is enabled for this virtual machine
DEBUG Host worker1.ocptest.com validation: Host agent compatibility checking is disabled
DEBUG Host worker1.ocptest.com validation: No request to skip formatting of the installation disk
DEBUG Host worker1.ocptest.com validation: All disks that have skipped formatting are present in the host inventory
DEBUG Host worker1.ocptest.com validation: Host is connected
DEBUG Host worker1.ocptest.com validation: Media device is connected
DEBUG Host worker1.ocptest.com validation: Machine Network CIDR is defined
DEBUG Host worker1.ocptest.com validation: Host belongs to all machine network CIDRs
DEBUG Host worker1.ocptest.com validation: Host has connectivity to the majority of hosts in the cluster
DEBUG Host worker1.ocptest.com validation: Platform VMware7,1 is allowed
DEBUG Host worker1.ocptest.com validation: Host NTP is synced
DEBUG Host worker1.ocptest.com validation: Host clock is synchronized with service
DEBUG Host worker1.ocptest.com validation: All required container images were either pulled successfully or no attempt was made to pull them
DEBUG Host worker1.ocptest.com validation: Network latency requirement has been satisfied.
DEBUG Host worker1.ocptest.com validation: Packet loss requirement has been satisfied.
DEBUG Host worker1.ocptest.com validation: Host has been configured with at least one default route.
DEBUG Host worker1.ocptest.com validation: Domain name resolution for the api.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host worker1.ocptest.com validation: Domain name resolution for the api-int.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host worker1.ocptest.com validation: Domain name resolution for the *.apps.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host worker1.ocptest.com validation: DNS wildcard check was successful
DEBUG Host worker1.ocptest.com validation: Host subnets are not overlapping
DEBUG Host worker1.ocptest.com validation: cnv is disabled
DEBUG Host worker1.ocptest.com validation: lso is disabled
DEBUG Host worker1.ocptest.com validation: lvm is disabled
DEBUG Host worker1.ocptest.com validation: odf is disabled
DEBUG Host master1.ocptest.com validation: cnv is disabled
DEBUG Host master1.ocptest.com validation: lso is disabled
DEBUG Host master1.ocptest.com validation: lvm is disabled
DEBUG Host master1.ocptest.com validation: odf is disabled
DEBUG Host master1.ocptest.com validation: Valid inventory exists for the host
DEBUG Host master1.ocptest.com validation: Sufficient CPU cores
DEBUG Host master1.ocptest.com validation: Sufficient minimum RAM
DEBUG Host master1.ocptest.com validation: Sufficient disk capacity
DEBUG Host master1.ocptest.com validation: Sufficient CPU cores for role master
DEBUG Host master1.ocptest.com validation: Sufficient RAM for role master
DEBUG Host master1.ocptest.com validation: Hostname master1.ocptest.com is unique in cluster
DEBUG Host master1.ocptest.com validation: Hostname master1.ocptest.com is allowed
DEBUG Host master1.ocptest.com validation: Speed of installation disk has not yet been measured
DEBUG Host master1.ocptest.com validation: Host is compatible with cluster platform baremetal
DEBUG Host master1.ocptest.com validation: VSphere disk.EnableUUID is enabled for this virtual machine
DEBUG Host master1.ocptest.com validation: Host agent compatibility checking is disabled
DEBUG Host master1.ocptest.com validation: No request to skip formatting of the installation disk
DEBUG Host master1.ocptest.com validation: All disks that have skipped formatting are present in the host inventory
DEBUG Host master1.ocptest.com validation: Host is connected
DEBUG Host master1.ocptest.com validation: Media device is connected
DEBUG Host master1.ocptest.com validation: Machine Network CIDR is defined
DEBUG Host master1.ocptest.com validation: Host belongs to all machine network CIDRs
DEBUG Host master1.ocptest.com validation: Host has connectivity to the majority of hosts in the cluster
DEBUG Host master1.ocptest.com validation: Platform VMware7,1 is allowed
DEBUG Host master1.ocptest.com validation: Host NTP is synced
DEBUG Host master1.ocptest.com validation: Host clock is synchronized with service
DEBUG Host master1.ocptest.com validation: All required container images were either pulled successfully or no attempt was made to pull them
DEBUG Host master1.ocptest.com validation: Network latency requirement has been satisfied.
DEBUG Host master1.ocptest.com validation: Packet loss requirement has been satisfied.
DEBUG Host master1.ocptest.com validation: Host has been configured with at least one default route.
DEBUG Host master1.ocptest.com validation: Domain name resolution for the api.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host master1.ocptest.com validation: Domain name resolution for the api-int.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host master1.ocptest.com validation: Domain name resolution for the *.apps.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host master1.ocptest.com validation: DNS wildcard check was successful
DEBUG Host master1.ocptest.com validation: Host subnets are not overlapping
DEBUG Host master2.ocptest.com validation: Valid inventory exists for the host
DEBUG Host master2.ocptest.com validation: Sufficient CPU cores
DEBUG Host master2.ocptest.com validation: Sufficient minimum RAM
DEBUG Host master2.ocptest.com validation: Sufficient disk capacity
DEBUG Host master2.ocptest.com validation: Sufficient CPU cores for role master
DEBUG Host master2.ocptest.com validation: Sufficient RAM for role master
DEBUG Host master2.ocptest.com validation: Hostname master2.ocptest.com is unique in cluster
DEBUG Host master2.ocptest.com validation: Hostname master2.ocptest.com is allowed
DEBUG Host master2.ocptest.com validation: Speed of installation disk has not yet been measured
DEBUG Host master2.ocptest.com validation: Host is compatible with cluster platform baremetal
DEBUG Host master2.ocptest.com validation: VSphere disk.EnableUUID is enabled for this virtual machine
DEBUG Host master2.ocptest.com validation: Host agent compatibility checking is disabled
DEBUG Host master2.ocptest.com validation: No request to skip formatting of the installation disk
DEBUG Host master2.ocptest.com validation: All disks that have skipped formatting are present in the host inventory
DEBUG Host master2.ocptest.com validation: Host is connected
DEBUG Host master2.ocptest.com validation: Media device is connected
DEBUG Host master2.ocptest.com validation: Machine Network CIDR is defined
DEBUG Host master2.ocptest.com validation: Host belongs to all machine network CIDRs
DEBUG Host master2.ocptest.com validation: Host has connectivity to the majority of hosts in the cluster
DEBUG Host master2.ocptest.com validation: Platform VMware7,1 is allowed
DEBUG Host master2.ocptest.com validation: Host NTP is synced
DEBUG Host master2.ocptest.com validation: Host clock is synchronized with service
DEBUG Host master2.ocptest.com validation: All required container images were either pulled successfully or no attempt was made to pull them
DEBUG Host master2.ocptest.com validation: Network latency requirement has been satisfied.
DEBUG Host master2.ocptest.com validation: Packet loss requirement has been satisfied.
DEBUG Host master2.ocptest.com validation: Host has been configured with at least one default route.
DEBUG Host master2.ocptest.com validation: Domain name resolution for the api.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host master2.ocptest.com validation: Domain name resolution for the api-int.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host master2.ocptest.com validation: Domain name resolution for the *.apps.ocpcluster.ocptest.com domain was successful or not required
DEBUG Host master2.ocptest.com validation: DNS wildcard check was successful
DEBUG Host master2.ocptest.com validation: Host subnets are not overlapping
DEBUG Host master2.ocptest.com validation: cnv is disabled
DEBUG Host master2.ocptest.com validation: lso is disabled
DEBUG Host master2.ocptest.com validation: lvm is disabled
DEBUG Host master2.ocptest.com validation: odf is disabled
INFO Host worker2.ocptest.com: updated status from insufficient to known (Host is ready to be installed)
INFO Host worker2.ocptest.com validation: Host has connectivity to the majority of hosts in the cluster
INFO Host worker3.ocptest.com validation: Host NTP is synced
INFO Host worker3.ocptest.com: validation 'ntp-synced' is now fixed
INFO Host worker3.ocptest.com validation: Host has connectivity to the majority of hosts in the cluster
INFO Host worker3.ocptest.com: updated status from insufficient to known (Host is ready to be installed)
INFO Cluster is ready for install
INFO Cluster validation: All hosts in the cluster are ready to install.
INFO Preparing cluster for installation
INFO Host worker3.ocptest.com: updated status from known to preparing-for-installation (Host finished successfully to prepare for installation)
INFO Host worker2.ocptest.com: New image status quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:ba6a74e8078a3e15351da962a09d71ba26fab18d60cddd7c7ea2a14e9a732d1d. result: success. time: 3.50 seconds; size: 449.51 Megabytes; download rate: 134.85 MBps
INFO Host master2.ocptest.com: New image status quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:ba6a74e8078a3e15351da962a09d71ba26fab18d60cddd7c7ea2a14e9a732d1d. result: success. time: 3.50 seconds; size: 449.51 Megabytes; download rate: 134.56 MBps
INFO Host master1.ocptest.com: New image status quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:ba6a74e8078a3e15351da962a09d71ba26fab18d60cddd7c7ea2a14e9a732d1d. result: success. time: 1.83 seconds; size: 449.51 Megabytes; download rate: 257.81 MBps
INFO Host master1.ocptest.com: updated status from preparing-for-installation to preparing-successful (Host finished successfully to prepare for installation)
INFO Host worker3.ocptest.com: New image status quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:ba6a74e8078a3e15351da962a09d71ba26fab18d60cddd7c7ea2a14e9a732d1d. result: success. time: 1.65 seconds; size: 449.51 Megabytes; download rate: 284.92 MBps
INFO Host master3.ocptest.com: New image status quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:ba6a74e8078a3e15351da962a09d71ba26fab18d60cddd7c7ea2a14e9a732d1d. result: success. time: 3.42 seconds; size: 449.51 Megabytes; download rate: 137.94 MBps
INFO Host master3.ocptest.com: updated status from preparing-for-installation to preparing-successful (Host finished successfully to prepare for installation)
INFO Cluster installation in progress
INFO Host worker1.ocptest.com: updated status from preparing-for-installation to preparing-successful (Host finished successfully to prepare for installation)
INFO Host worker1.ocptest.com: updated status from preparing-successful to installing (Installation is in progress)
INFO Host: worker2.ocptest.com, reached installation stage Writing image to disk
INFO Host: master2.ocptest.com, reached installation stage Writing image to disk
INFO Host: master2.ocptest.com, reached installation stage Writing image to disk: 6%
INFO Host: worker2.ocptest.com, reached installation stage Writing image to disk: 32%
INFO Host: master2.ocptest.com, reached installation stage Writing image to disk: 30%
INFO Host: worker3.ocptest.com, reached installation stage Writing image to disk
INFO Host: worker3.ocptest.com, reached installation stage Writing image to disk: 14%
INFO Host: worker3.ocptest.com, reached installation stage Writing image to disk: 23%
INFO Host: master2.ocptest.com, reached installation stage Writing image to disk: 46%
INFO Host: worker2.ocptest.com, reached installation stage Writing image to disk: 61%
INFO Host: worker3.ocptest.com, reached installation stage Writing image to disk: 42%
INFO Host: worker2.ocptest.com, reached installation stage Writing image to disk: 77%
INFO Host: master1.ocptest.com, reached installation stage Writing image to disk: 59%
INFO Host: master2.ocptest.com, reached installation stage Writing image to disk: 82%
INFO Host: master1.ocptest.com, reached installation stage Writing image to disk: 72%
INFO Host: master2.ocptest.com, reached installation stage Writing image to disk: 93%
INFO Host: master1.ocptest.com, reached installation stage Writing image to disk: 87%
INFO Host: master1.ocptest.com, reached installation stage Writing image to disk: 92%
INFO Host: worker3.ocptest.com, reached installation stage Writing image to disk: 93%
INFO Host: master1.ocptest.com, reached installation stage Writing image to disk: 100%
INFO Host: worker3.ocptest.com, reached installation stage Writing image to disk: 100%
INFO Host: worker1.ocptest.com, reached installation stage Writing image to disk: 56%
INFO Host: master3.ocptest.com, reached installation stage Writing image to disk: 100%
INFO Host: master3.ocptest.com, reached installation stage Rebooting
INFO Host: worker1.ocptest.com, reached installation stage Writing image to disk: 67%
INFO Host: worker1.ocptest.com, reached installation stage Writing image to disk: 84%
INFO Bootstrap Kube API Initialized
INFO Host: worker1.ocptest.com, reached installation stage Writing image to disk: 90%
INFO Host: worker1.ocptest.com, reached installation stage Writing image to disk: 95%
INFO Host: worker1.ocptest.com, reached installation stage Waiting for control plane
INFO Host: master2.ocptest.com, reached installation stage Configuring
INFO Host: master3.ocptest.com, reached installation stage Configuring
INFO Host: master3.ocptest.com, reached installation stage Joined
INFO Host: master1.ocptest.com, reached installation stage Waiting for bootkube
INFO Uploaded logs for host worker1.ocptest.com cluster dfc2ee48-a4dd-4331-b7da-2659ef9e64cb
INFO Host: worker3.ocptest.com, reached installation stage Rebooting
INFO Host: worker2.ocptest.com, reached installation stage Rebooting
INFO Host: worker3.ocptest.com, reached installation stage Waiting for ignition
INFO Host: master1.ocptest.com, reached installation stage Waiting for controller: waiting for controller pod ready event
INFO Unable to retrieve cluster metadata from Agent Rest API: Get "http://10.240.1.12:8090/api/assisted-install/v2/clusters/dfc2ee48-a4dd-4331-b7da-2659ef9e64cb": dial tcp 10.240.1.12:8090: connect: connection refused
INFO Bootstrap configMap status is complete
INFO cluster bootstrap is complete
DEBUG Still waiting for the cluster to initialize: Multiple errors are preventing progress:
DEBUG * Cluster operators authentication, image-registry, ingress, insights, kube-apiserver, kube-controller-manager, kube-scheduler, machine-api, monitoring, openshift-apiserver, openshift-controller-manager, openshift-samples, operator-lifecycle-manager-packageserver are not available
DEBUG * Could not update imagestream "openshift/driver-toolkit" (572 of 831): the server is down or not responding
DEBUG * Could not update oauthclient "console" (515 of 831): the server does not recognize this resource, check extension API servers
DEBUG * Could not update role "openshift-console-operator/prometheus-k8s" (748 of 831): resource may have been deleted
DEBUG * Could not update role "openshift-console/prometheus-k8s" (751 of 831): resource may have been deleted
DEBUG Still waiting for the cluster to initialize: Working towards 4.12.32
DEBUG Still waiting for the cluster to initialize: Working towards 4.12.32: 586 of 831 done (70% complete)
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Still waiting for the cluster to initialize: Cluster operators authentication, console, ingress, insights, machine-api, monitoring are not available
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Still waiting for the cluster to initialize: Cluster operators authentication, console, ingress, machine-api, monitoring are not available
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG Route found in openshift-console namespace: console
DEBUG OpenShift console route is admitted
DEBUG Still waiting for the cluster to initialize: Working towards 4.12.32: 27 of 831 done (3% complete)
DEBUG Still waiting for the cluster to initialize: Working towards 4.12.32: 611 of 831 done (73% complete)
DEBUG Still waiting for the cluster to initialize: Cluster operators authentication, console, ingress, monitoring are not available
DEBUG Still waiting for the cluster to initialize: Cluster operators authentication, console, monitoring are not available
DEBUG Still waiting for the cluster to initialize: Cluster operators authentication, console are not available
DEBUG Still waiting for the cluster to initialize: Cluster operator authentication is not available
INFO Cluster is installed
INFO Install complete!
INFO To access the cluster as the system:admin user when using 'oc', run
INFO     export KUBECONFIG=/home/user01/ocpinstall/installer/auth/kubeconfig
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.ocpcluster.ocptest.com
INFO Login to the console with user: "kubeadmin", and password: "4JQLu-Msa4o-jAk5d-Hrr9w"
```
</details>


:::note info
ISOファイルをマウントしてVM起動後は見守るだけで特に何も操作をする必要はありません。お手軽です。途中再起動が入ったり、ログが出力されない時間帯もありますが、待っていれば大丈夫です。
インストールが成功すれば、コンソールのURL、kubeadminユーザーのパスワードが表示されます。
今回利用した環境では40分ほどでインストールが完了しました。
:::

参考までに、インストールが途中で止まってしまった時のキャプチャも貼っておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142407/9f55ace8-65e9-6712-8e31-fd8233affced.png)


## インストール完了をCLIで確認

クラースターバージョン確認。

```
[user01@proxy ocpinstall]$ oc get clusterversion
NAME      VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.12.32   True        False         24m     Cluster version is 4.12.32
```

クラスターオペレーター確認。

```
[user01@proxy ocpinstall]$ oc get clusteroperator
NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
authentication                             4.12.32   True        False         False      24m
baremetal                                  4.12.32   True        False         False      50m
cloud-controller-manager                   4.12.32   True        False         False      59m
cloud-credential                           4.12.32   True        False         False      63m
cluster-autoscaler                         4.12.32   True        False         False      49m
config-operator                            4.12.32   True        False         False      51m
console                                    4.12.32   True        False         False      29m
control-plane-machine-set                  4.12.32   True        False         False      50m
csi-snapshot-controller                    4.12.32   True        False         False      50m
dns                                        4.12.32   True        False         False      50m
etcd                                       4.12.32   True        False         False      49m
image-registry                             4.12.32   True        False         False      37m
ingress                                    4.12.32   True        False         False      36m
insights                                   4.12.32   True        False         False      44m
kube-apiserver                             4.12.32   True        False         False      47m
kube-controller-manager                    4.12.32   True        False         False      48m
kube-scheduler                             4.12.32   True        False         False      47m
kube-storage-version-migrator              4.12.32   True        False         False      51m
machine-api                                4.12.32   True        False         False      37m
machine-approver                           4.12.32   True        False         False      50m
machine-config                             4.12.32   True        False         False      50m
marketplace                                4.12.32   True        False         False      50m
monitoring                                 4.12.32   True        False         False      31m
network                                    4.12.32   True        False         False      50m
node-tuning                                4.12.32   True        False         False      50m
openshift-apiserver                        4.12.32   True        False         False      45m
openshift-controller-manager               4.12.32   True        False         False      47m
openshift-samples                          4.12.32   True        False         False      45m
operator-lifecycle-manager                 4.12.32   True        False         False      50m
operator-lifecycle-manager-catalog         4.12.32   True        False         False      50m
operator-lifecycle-manager-packageserver   4.12.32   True        False         False      45m
service-ca                                 4.12.32   True        False         False      51m
storage                                    4.12.32   True        False         False      51m
```

ノード情報確認。

```
[user01@proxy ocpinstall]$ oc get node -o wide
NAME                  STATUS   ROLES                  AGE   VERSION            INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                                                        KERNEL-VERSION                 CONTAINER-RUNTIME
master1.ocptest.com   Ready    control-plane,master   38m   v1.25.12+26bab08   10.240.1.12   <none>        Red Hat Enterprise Linux CoreOS 412.86.202308300700-0 (Ootpa)   4.18.0-372.71.1.el8_6.x86_64   cri-o://1.25.4-4.rhaos4.12.gitb9319a2.el8
master2.ocptest.com   Ready    control-plane,master   59m   v1.25.12+26bab08   10.240.1.13   <none>        Red Hat Enterprise Linux CoreOS 412.86.202308300700-0 (Ootpa)   4.18.0-372.71.1.el8_6.x86_64   cri-o://1.25.4-4.rhaos4.12.gitb9319a2.el8
master3.ocptest.com   Ready    control-plane,master   59m   v1.25.12+26bab08   10.240.1.14   <none>        Red Hat Enterprise Linux CoreOS 412.86.202308300700-0 (Ootpa)   4.18.0-372.71.1.el8_6.x86_64   cri-o://1.25.4-4.rhaos4.12.gitb9319a2.el8
worker1.ocptest.com   Ready    worker                 41m   v1.25.12+26bab08   10.240.1.15   <none>        Red Hat Enterprise Linux CoreOS 412.86.202308300700-0 (Ootpa)   4.18.0-372.71.1.el8_6.x86_64   cri-o://1.25.4-4.rhaos4.12.gitb9319a2.el8
worker2.ocptest.com   Ready    worker                 41m   v1.25.12+26bab08   10.240.1.16   <none>        Red Hat Enterprise Linux CoreOS 412.86.202308300700-0 (Ootpa)   4.18.0-372.71.1.el8_6.x86_64   cri-o://1.25.4-4.rhaos4.12.gitb9319a2.el8
worker3.ocptest.com   Ready    worker                 41m   v1.25.12+26bab08   10.240.1.17   <none>        Red Hat Enterprise Linux CoreOS 412.86.202308300700-0 (Ootpa)   4.18.0-372.71.1.el8_6.x86_64   cri-o://1.25.4-4.rhaos4.12.gitb9319a2.el8
```

マシンプール確認。

```
[user01@proxy ocpinstall]$ oc get mcp
NAME     CONFIG                                             UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
master   rendered-master-13cfb44d8a570b1841362ab6df628bba   True      False      False      3              3                   3                     0                      124m
worker   rendered-worker-59149c74da4a5bd551d2a90b7a8b5d5d   True      False      False      3              3                   3                     0                      124m
```



# まとめ

エージェントベースのインストール方式はバージョン4.x台の初期のころと比較して事前準備をはじめ作業が大きく簡素化されており、オンプレへのOCP導入のハードルが更に下がったイメージです。是非みなさまもチャレンジしていただければと思います。
あまり利用機会は多くないかもしれませんが、みなさまの参考になれば幸いです。

なお、Proxy構成でのインストールも検証していますので、そちらは別記事で紹介いたします。

# 参考

[Meet The New Agent-Based OpenShift Installer](https://cloud.redhat.com/blog/meet-the-new-agent-based-openshift-installer-1)

[エージェントベースのインストーラーを使用したオンプレミスクラスターのインストール](https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.12/html/installing/installing-an-on-premise-cluster-with-the-agent-based-installer)