以前のエントリ、
でソースからのビルドは面倒だからやらないと言ったのですが、気が変わりました。
というのも、
のIssueがCloseされmasterブランチに取り込まれたとのことで、次のバージョンのリリース前にその結果を確認したくなったからです。
動作環境
今回は普段使い慣れてるCentOS 7.2(1511)でやります。
Virtualbox上の仮想マシン環境です。
PowerShell on LinuxにPSRemotingしてみる
今回は非rootユーザーで試しているので必要に応じてsudo
しています。
1. PowerShellのインストール
https://github.com/PowerShell/PowerShell/blob/master/docs/installation/linux.md#centos-7github.com
GitHubからPowerShellのrpmファイルをインストールするだけです。
# Install Powershell on Linux sudo yum install -y https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.10/powershell-6.0.0_alpha.10-1.el7.centos.x86_64.rpm
2. OMI Serverのインストール
こちらもrpmをインストールするだけです。
# Install OMI sudo yum install -y https://github.com/Microsoft/omi/releases/download/v1.1.0-0/omi-1.1.0.ssl_100.x64.rpm
3. PowerShell on Linux OMI Providerのビルド
ここからが今回独自の作業になります。
基本的な手順はGitHubに記載されています。
PowerShell on Linux OMI ProviderはC++製ですのでmake
するための環境と、pam-devel
、openssl-devel
*1をインストールします。
そして最新のソースをクCloneしてビルドスクリプトbuild.sh
を実行します。
今回は/tmp/omi
ディレクトリを作成し、そこにCloneしてみました。
(ビルドスクリプトは/tmp/omi/psl-omi-provider/build.sh
に存在します)
# Build latest psrp-omi-provider sudo yum install -y cmake make gcc gcc-c++ git sudo yum install -y pam-devel openssl-devel # mkdir /tmp/omi cd /tmp/omi/ git clone --recursive https://github.com/PowerShell/psl-omi-provider.git cd psl-omi-provider/ ./build.sh
エラー無くビルドが完了しlibpsrpomiprov.so
が作成されれば成功です。
ちなみにビルドが完了した状態でbuild.sh
と同じディレクトリにあるrun.sh
を実行するとOMI Serverをデバッグ実行しコンソールにログを表示させることができます。*2
これでもPSRemotingすることができますが、今回はさらにRPMパッケージの作成まで行っていきます。
4. installBuilder(pal)のインストール
Current OMI (Open Management Infrastructure) products use the InstallBuilder tool to create installation packages.
とある様にパッケージの作成にはInstallBuilderのインストールが必要です。
InstallBuilderと言っておきながらリンク先はPlatform Abstraction Layer(pal)というライブラリを指しており、最初はわけがわからなかったのですが、どうやらビルド環境の判定(OSの種類やパッケージツールの有無など)のためにこのライブラリの一部機能を利用しているということがわかりました。
まずはrpmパッケージを作るということでrpm-devel
とrpm-build
をインストールしておきます。*3
sudo yum install -y rpm-devel rpm-build
続けて先ほどのPlatform Abstraction Layer(pal)のソースをCloneします。
Clone先は必ずPowerShell on Linux OMI Providerと同じディレクトリ(今回であれば/tmp/omi/
)にしてください。
そしてpal/build/
ディレクトリに移動し、configure
コマンドを実行します。
このconfigure
でビルド環境の判定を行い、同じディレクトリにconfig.mak
ファイルを作成します。
# Install installBuilder(pal) cd /tmp/omi/ git clone https://github.com/Microsoft/pal.git cd pal/build/ # Make config.mak ./configure
config.mak
ファイルが次の手順で必要になります。
5. rpmパッケージの作成とインストール
最後にrpmパッケージを作成してインストールまで行います。
PowerShell on Linux OMI Providerのinstallbuilder
ディレクトリに移動してmake
を実行します。
先ほどの手順で正しくconfig.mak
ファイルが作成されてれば、omi/Unix/output/release/
ディレクトリにRPMファイルが作成されます。
# Build rpm package cd ../../psl-omi-provider/installbuilder/ make
作成されたrpmファイルをインストールすれば完了です。
# Install rpm package cd ../omi/Unix/output/release/ sudo rpm -i ./psrp-1.0.0-0.universal.x64.rpm
6. PSRemotingしてみる
後の作業は前回と同じでNew-PSSessionOption
、Enter-PSSession
してやればOKです。
# サーバーのIPが 192.168.33.209 の場合 $o = New-PSSessionOption -SkipCACheck -SkipRevocationCheck -SkipCNCheck Enter-PSSession -ComputerName 192.168.33.209 -Credential root -Authentication basic -UseSSL -SessionOption $o
下図の様にCentOSでもエラー無くPSRemotingできました。
これで完了です。
当たり前ですが作成したrpmファイルは再利用できますのでバックアップしておくと次回以降楽ができるでしょう。
補足
今回の一連の手順は以下のGistにまとめていますのでこちらも参考にしてください。
最新のPowerShell on Linux OMI Providerをインストールするサンプル(CentOS7) · GitHub