2022年11月に.NET 7のPower対応が発表され、WindowsアプリケーションとIBM iとの新たな連携に「新次元を拓く」期待が高まっている。特集では、IBM iとWindowsの連携技術の歩みを振り返り、.NET 7の導入、セットアップ、連携方法、利用メリットなどを整理し、今回の発表内容の意義とインパクトを探った。
text=水野 智之 日本IBM
Part2では.NET 7の提供機能をご紹介した。Part3では、実際に使用するためにはどのような手順が必要なのかを見ていきたい。とは言っても .NETの導入はとても簡単で手順も少なく、つまずくポイントはほとんどないと言ってよいだろう。
.NETのパッケージは、Red Hat Enterprises Linux(RHEL)で提供されているため、RHELのパッケージ管理マネージャーであるdnfやyumを使ってインストールすることができる。yumはIBM iでも利用されているパッケージ管理システムなので、IBM iユーザーにも馴染みがあるのではないだろうか。dnfも同じくパッケージ管理システムであり、yumの後続バージョンと言ってもよい。RHEL上では、yumコマンドも裏ではdnfを使うため実行結果は同じになるので安心していただきたい。詳細な手順は、後ほど実行結果と併せて記述するが、今回はdnfコマンドでの実行例と共に.NETのインストール方法をご紹介する。
.NETのインストール方法
RHELのパッケージ管理マネージャーからインストールできることは何を意味するのか。Red Hatはオープンソースのソフトウェアをパッケージしサポートを提供しているが、.NET on Powerもその仲間に入ったということである。昨年Powerでサポートされるようになったのは、.NET 7である。
.NET 7は、.NET Frameworkを元にオープンソースのプロジェクトとして立ち上がった.NETの7つ目のメジャーリリースとなっている。現在、RHELのバージョン8.7、同9.1でサポートが提供されている。
それでは、本題の導入手順に話を移す。前述の通り、dnfもしくはyumを使ってインストールが可能である。まずは、インストール可能な.NETのパッケージを確認する。
dnf search dotnet
実行結果には、いくつかのパッケージが表示されている。これらをインストールすれば.NETが開発・実行できるようになる(図表1)。いくつものパッケージがあり、どれをインストールするか悩むところではあるが、dnf install dotnet-sdk-7.0とすれば必要な依存関係をもつパッケージも同時にインストールされる(図表2)。
“y”を入力して“Enter”を押すことでインストールが開始され、インストール自体は数分で完了する。dotnet –info を実行することで、.NETのインストール状況や環境の情報が表示される(図表3)。
次に、コンテナでの利用方法をご紹介する。少しずつ馴染んできたと思われるコンテナ技術ではあるが、本番運用となるとまだ道半ばといった印象がある。ただ、開発や簡単な検証には、ホストとなるOSの環境を汚さずに必要なソフトウェアやライブラリを使用できるのでとても有用である。筆者もコンテナを使って手軽な開発・検証環境を立ち上げて使うことが多々ある。
.NETではRed Hatから公式のコンテナイメージが提供されているため、安心して利用できる。Red Hatでは、コンテナを操作するためにPodmanと呼ばれるツールが使われる。これは、Red Hatが開発、提供しているDocker互換のコンテナ管理ツールである。RHELでのコンテナ操作は、基本的にPodmanから行うことになる。PodmanはRed Hatに標準でインストールされているが、コマンドが見つからない場合はdnf もしくはyumでインストールすればよい。
Red Hatから提供されているコンテナイメージは現在、図表4のとおりとなっている。開発用のSDKを含むものとランタイムだけの2種類あり、4種類はそれぞれベースとなっているイメージが異なる。Ubi8と書かれているイメージは、通常のRHELに含まれるパッケージセットとは異なる。
起動~インストール、区画設定の準備
それでは、実際に起動してみる。
上記のコンテナイメージは、取得のために認証が必要となっている。Podmanのログインコマンドで“registry.redhat.io”にログインする必要がある。ログイン方法は複数あるが、Red Hatのサブスクリプションに紐付いているユーザー名とパスワードを入力するだけでよい。“podman login registry.redhat.io” をRHEL上で実行すると、ユーザー名とパスワードを入力するプロンプトが表示されるため、それに従い入力を行う。
今回は、簡単にイメージをダウンロードし起動するところまでを行うため、“podman run”コマンドを使用する方法を提示する。使用するイメージは、先程の図表4に表示されていた4つのイメージの中から“rhel8/dotnet-70:7.0-8”を利用する。細かなpodmanコマンドのオプションについては触れないが、次のコマンドでコンテナが起動し、シェルの操作が行えるようになる。
podman run -it registry.redhat.io/rhel8/dotnet-70:7.0-8 bash
実際にコマンドを実行した際の出力は図表5のようになる。Bashのプロンプトが表示されているため、“dotnet –info”などを実行すると、インストールされている.NETの情報を表示することができる。
コンテナは、RHELの区画が必要なことは変わりないが、開発や検証を行うためには有用な手段である。もちろん、本番用の環境としても利用できるため、利用における要件や社内のスキル、方針に合わせて使い分けるとよいだろう。
ここまで、.NETのインストール方法について触れてきたが、IBM iユーザーにとってLinux環境を別途準備することが障壁になることも考えられる。そこで、IBM i をホスト区画として使用し、クライアント区画にLinuxを構築する手順も合わせて紹介する。
IBM iには、Powerの仮想化で利用されるVIOSと同様の機能が存在している。ホスト区画に構成されているネットワークやディスクを仮想的にクライアント区画へ見せることができる。
区画の設定は以下の手順で実施する。
・クライアント区画の作成
・NWSSTG(ネットワーク・サーバー記憶スペース)の作成
・仮想SCSIアダプターの作成
・NWSD(ネットワーク・ストレージ記述)の作成
・NWSSTGとNWSDの紐付け、起動
・仮想イーサネット・アダプターの作成
・回線記述の作成、起動
これらの作業は、IBM i上もしくは、HMCから実施する。さっそく、詳細の手順を紹介していこう。
クライアント区画の作成
まずは、通常の区画作成を行う手順と同様に、HMCからクライアント区画を作成する。区画タイプをAIX/Linuxに設定し、任意のプロセッサ、メモリ数量を保つ区画を設定する(図表6)。
NWSSTG(ネットワーク・ストレージスペース)の作成
NWSSTGとは、いわば仮想ディスクのことである。IBM i上にあるASPからディスクを切り出し、クライアントで利用できる。IBM i にログインし、以下のコマンドを実行することでNWSSTGが作成される。
CRTNWSSTG NWSSTG(<ディスクの名前>) NWSSIZE(<ディスク容量 MB指定>) FORMAT(*OPEN)
ディスクの名前と容量を指定する必要があり、ディスク容量はMBでの指定となる。ディスク名“LCLIENT”、 ディスク容量“100GB”のNWSSTGを作成する場合は、以下のコマンドとなる。
CRTNWSSTG NWSSTG(LCLIENT) NWSSIZE(102400) FORMAT(*OPEN)
仮想SCSIアダプターの作成
IBM iホストからクライアント区画にディスクを見せるために、仮想SCSIアダプターが必要となる。ホスト区画のページから仮想ストレージを選択し、アダプター・ビューに変更する。
図表7の下部にある“アダプターの作成”を選択すると、図表8の作成画面が表示される。アダプター・タイプを“サーバー”に変更し、リモート区画を対象のクライアント区画に設定する。“リモート・アダプターを作成しますか?” にチェックが入っていることで、自動的にクライアント区画側にも仮想SCSIアダプターが作成される。
NWSD(ネットワーク・ストレージ記述)の作成
次は、IBM i上でNWSD(ネットワーク・ストレージ記述)を作成する。これは、先程作成したNWSSTGと仮想SCSIアダプターを紐付け、どのような設定でクライアント側に見えるようにするかを定義するものである。まずは、作成した仮想SCSIアダプターの資源名を確認する必要がある。“DSPHDWRSC *CMN”で通信資源の確認が可能である。ここから、作成したサーバー・アダプターIDに該当するLocation情報を持った資源を見つける。
仮想SCSIは、“CTLXX”という名前になっている。サーバー・アダプターIDを20番に設定した際の通信アダプターは、図表9のような設定となる。
NWSDの作成は、以下のコマンドで実行できる。必要な入力には、NWSDの名前と仮想SCSIの資源名、クライアント区画の区画番号である。クライアント区画の区画番号は、HMCから確認することができる。区画の一覧ページなどで、区画IDと書かれているものがそれにあたる。
CRTNWSD NWSD(名前) RSRCNAME(確認した資源名) TYPE(*GUEST *LINUXPPC) PTNN
BR(区画番号) ONLINE(*NO) PWRCTL(*NO)
NWSDの名前が“LCNWSD”、資源名が“CTL03”、クライアントの区画番号が“2”の場合の記述を示しておく。TYPEの引数にある“*LINUXPPC”は、Linux区画用にディスクを見せる際には必ず必要である。
CRTNWSD NWSD(LCNWSD) RSRCNAME(CTL03) TYPE(*GUEST *LINUXPPC) PTNNBR(2) ONLINE(*NO) PWRCTL(*NO)
NWSSTGとNWSDの紐付け、起動
NWSSTGとNWSDの準備ができたので、両者を紐付けて起動する必要がある。紐付けと起動は以下のコマンド2つで実行する。
ADDNWSSTGL NWSSTG(NWSSTG名) NWSD(NWSD名)
VRYCFG CFGOBJ(NWSD名) CFGTYPE(*NWS) STATUS(*ON)
仮想イーサネット・アダプターの作成
次に、HMCからホスト区画に幹線アダプターを作成する。HMCの仮想ネットワークの項目で表示をアダプターに切り替え、“幹線アダプターの作成”ボタンをクリックする。作成が完了すると、仮想イーサネット・アダプターが表示される。ここで表示されている仮想イーサネット・アダプターIDは後ほど利用するため、控えておくとよい(図表10)。
クライアント側には、 “仮想ネットワークの接続” を行い、ホスト側で作成した仮想ネットワークを指定する。
回線記述の作成、起動
HMC側で設定が完了したら、IBM iで仮想ネットワークを提供するための設定を行う。まずは、ハードウェアリソースから先程作成した仮想ネットワークアダプターの資源名を確認する。仮想SCSIアダプターを確認した際に使用したコマンドを再度実行する。
DSPHDWRSC *CMN
アダプターIDとLocation情報が一致する資源名を確認する。確認した資源名を使って以下のコマンドを実行し、仮想イーサネットを作成する。
CRTLINETH LIND(仮想イーサネット名) RSRCNAME(仮想ネットワークアダプターの資源名) BRIDGE(B1)
CRTLINETH LIND(VETH1) RSRCNAME(CMN01) BRIDGE(B1)
こちらもVRYCFGコマンドで起動する。
VRYCFG CFGOBJ(VETH1) CFGTYPE(*LIN) STATUS(*ON)
これらの作業によって、区画にディスクとネットワークを提供できるようになった。あとは、区画を起動してシステム管理サービスに入り通常通りLinuxのインストールを行えばよい。Linuxのインストールにもいくつか手段があるが、今回は特に触れないでおく。筆者は、ネットワークインストールを行う場合が多いが、USBを物理的に区画に割り当てておきDVDからインストールすることも可能である。
紹介した内容は、ディスクとイーサネットの両方を仮想的に見せているが、物理的なアダプターがある場合には仮想アダプターと合わせて両方使うことも可能である。たとえば、ディスクはIBM iから提供し、ネットワークは物理アダプターを使用する構成も取り得る。
このパートでは、.NETのインストール方法とIBM iをホストにしてLinux環境を整える方法も紹介した。もちろん、IBM iクライアントのLinuxでも.NETを利用可能なため、IBM iユーザーにとって導入の敷居が低い構成であると言える。
著者
水野 智之 氏
日本アイ・ビー・エム株式会社
システム事業部
Power Systems テクニカルセールス
Power テクニカル スペシャリスト
2017年日本IBM入社。入社以来、IBM Powerのプリセールス・エンジニアとして活動。PowerにおけるLinuxやOpenShiftの活用支援や提案を中心に、並行してIBM iの提案・支援活動を行っている。最近ではIBM iの魅力を強く感じており、新たな活用方法の模索などにもチャレンジしている。外部向けにIBM iに関する技術情報の発信にも取り組む。
特集 .NET 7 IBM i|WindowsとIBM iの新たな連携
part 1 WindowsアプリケーションとIBM iとのミニ連携史
part 2 .NET 7 on Powerの意義・インパクト
part 3 .NET 7 on Powerの導入~セットアップ(今回)
part 4 .NET 7 on PowerとIBM iの連携方法
part 5 .NET 7 on Powerの利用メリット、ユースケース
[i Magazine 2023 Spring(2023年5月)掲載]