IBM Cloud Satellite を 自宅のPCで動かしたメモ

IBM Cloud Satellite　管理機能の日本GAは7月末となっているが、ワシントンDCの管理機能を利用して、自宅のハイパーバイザー環境で、利用できることを試したので、以下にメモを残しておく。

#### 検証した環境の概要
![スクリーンショット 2021-05-19 21.18.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42829/a3f3af14-6b01-d477-8121-17ba881ab1f3.png)

#### 仮想サーバーのリスト
![スクリーンショット 2021-05-19 21.22.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42829/88e0dc2f-a647-16e4-f701-062de1b254ff.png)

#### OpenShiftノード一覧
![スクリーンショット 2021-05-19 21.28.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42829/baa17877-7ba7-ce69-28ae-b0a0713c3e0f.png)



## 前提条件

IBM Cloud Satelliteは、企業向けのサービスであり、リソースの要求量やベースOSのサブスクリプション費用など、個人が手軽に利用するといったものではない。

* IBM Cloud の アカウントを持っていること。
* RHEL をサブスクリプションありで利用できること。
* 3台以上の ハイパーバイザーが動作するPCサーバーがあること。
* vCPU x4, RAM 16G, HDD 100GB の仮想マシンを 6機起動できる リソースがあること。
* ブロードバンドなインターネット接続があり、プライベートLANからNATでインターネットをアクセスできること。
* 仮想マシンからパブリックのDNSを参照できること。DNSがひけないと Satellite のエンドポイントのIPが取得できないので、動かない。



## セットアップの概要

ドキュイメントに詳細に書かれているが、全体感を掴みにくいので、以下に手順をリストする。

1. IBM Cloud のメニューから Satellite に進み、ロケーションを作成する。
1. 仮想サーバー vCPU x4, RAM 16G のRHEL仮想マシンを6台起動する。
1. 仮想マシンが起動したら、ホスト名、IPアドレスを設定して、再起動する。
1. RHELサブスクリプションの登録
1. RHELリポジトリ追加
1. Satellite ロケーションのWeb画面から、アタッチするためのシェルをダウンロード
1. シェルを実行すると、IBM Cloud Satellite ホスト画面にノードが表示される。全ノードをアタッチする。
1. 6ノード の内、3ノードをコントロールプレーンに割り当てる。
1. コントロールプレーンのノードへのデプロイが完了したら、Satellite 概要画面を確認する。
1. 「デプロイメントの準備完了」の項目が「はい」になれば、OpenShiftのデプロイを開始する

~~~
# RHELサブスクリプションの登録
subscription-manager register --username <username> --password <password> 
subscription-manager attach --auto
subscription-manager refresh

# RHELリポジトリ追加
subscription-manager repos --enable rhel-server-rhscl-7-rpms
subscription-manager repos --enable rhel-7-server-optional-rpms
subscription-manager repos --enable rhel-7-server-rh-common-rpms
subscription-manager repos --enable rhel-7-server-supplementary-rpms
subscription-manager repos --enable rhel-7-server-extras-rpms

# シェルのダウンロードの後、アタッチするためのシェル実行
sudo nohup bash /tmp/attach.sh &
journalctl -f -u ibm-host-attach
~~~


参考リンク
https://cloud.ibm.com/docs/satellite?topic=satellite-getting-started



## RHEL KVMマシンイメージについて

環境に依存するので、参考程度に書いておく。筆者の環境は、Ubuntu 20.04 で QEMU/KVMを動作させている。その上で、RHELの仮想マシンを起動した。

### 初期パスワードの設定方法

https://access.redhat.com/solutions/641193 に記載された方法で qcow2 にパスワードをセットする。

~~~
# virt-customize -a <qcow2 image file name> --root-password password:<password>
~~~

### qcow2 ディスクイメージの拡張

RHELから入手できる RHEL 7.x のqcow2 イメージは、816MBしかなく、仮想マシンを起動してもOpenShiftをインストールできない。そこで、以下の方法で、 100Gのブートイメージを作る

~~~
qemu-img create -f raw node1.qcow2 100G
virt-resize --expand /dev/sda1 rhel-base.qcow2 node1.qcow2
~~~

参考: https://www.cyberithub.com/resize-qcow2-image-with-virt-resize-kvm-tools/


### KVMの仮想マシン起動方法

仮想マシンを起動するには、次のコマンドを実行する。ネットワークの環境に合わせて変更する。
ノード数だけ、繰り返す。

~~~
virt-install \
  --name node1 \
  --memory 16384 \
  --vcpus 4 \
  --cpu kvm64 --hvm \
  --os-variant rhel7.8 \
  --network network=default,model=virtio --network network=private --network network=public \
  --import --graphics none --noautoconsole \
  --disk /home/images/node1.qcow2
~~~


### RHEL IPアドレス、DNSの設定変更

仮想マシンのIPアドレス、DNS、設定例

~~~
vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE="eth2"
BOOTPROTO="none"
BOOTPROTOv6="none"
ONBOOT="yes"
TYPE="Ethernet"
USERCTL="yes"
PEERDNS="yes"
IPV6INIT="yes"
PREFIX=24
IPADDR=10.0.0.51
GATEWAY=10.0.0.1
DNS1=10.0.0.220
~~~

ホスト名の変更例

~~~
vi /etc/hostname
node1.labo.local
~~~


## 注意事項

IBM Cloud Satellite は、必ず 3つのゾーンに コントロールプレーンの仮想マシンを配置しなければならない。しかし、エッジロケーションやホームオフィスでは、そのような事はできない。

ここでのゾーンは、ハイパーバイザーのホストに読み替えることができる。3つのハイパーバイザーホストをゾーン1、ゾーン2、ゾーン3 と読み替えて設定する。

3ゾーンに、コントロールプレーンの3ノードが、分散して配置されていない限り、OpenShiftのインストールを開始できない。



## まとめ と 感想

最小 3台のパソコンがあれば、IBM Cloud Satelliteが利用できることが判った。 3台のパソコンでは、1台あたり、2ノードを起動する必要があるので、vCPU 8、RAM 32GB が必要となる。

手軽かどうかについては、OSS の KVM/QUMU を設定している場合は、相応のスキルが必要である。しかし、Windows Hyper-V や VMware ESXi などを利用するのであれば簡単に利用できると思われる。

OpenShiftのインストールや構成については、IBM Cloud Satelliteのサービスがすべて実施してくれるので、OpenShiftのスキルは必要としない。

時間課金でOpenShiftを利用できて、エッジ環境、ホームオフィスのパソコンにデプロイできるというのは、これまでのIBMには無い画期的なサービスだと思う。