そろそろ試しておかないといけないかなと思ったので。
正直PowerShell DSCはまだまだ勉強不足なのでおかしなところがあるかもしれませんがそこはご容赦ください。
PowerShell DSC for Linuxとは
名前の通りLinuxでPowerShell Desired State Configuration(DSC)を利用するための基盤です。
利用可能なOSは以下。
- CentOS 5, 6, and 7 (x86/x64)
- Debian GNU/Linux 6, 7 and 8 (x86/x64)
- Oracle Linux 5, 6 and 7 (x86/x64)
- Red Hat Enterprise Linux Server 5, 6 and 7 (x86/x64)
- SUSE Linux Enterprise Server 10, 11 and 12 (x86/x64)
- Ubuntu Server 12.04 LTS, 14.04 LTS, 16.04 LTS (x86/x64)
こいつ自体は、去年、PowerShell on Linuxが公開される以前から利用可能になっています。
下回りにOMIを使い、LCMや各DSC ResourceはOMI Providerとして提供されています。
そしてDSCの管理にはPythonスクリプトを使用します。
PowerShell on Linuxが出たことでPowerShellによる管理に切り替わっていくかどうかはまだよくわかりません。
組み込み済みのDSC Resourceの一覧は
Linux 用 Desired State Configuration の組み込みリソース | Microsoft Docs
で確認できます。
Linux用のリソース名はnx
で始まる規約となっています。
PowerShell DSC for Linuxを試す
それでは早速試していきます。
検証環境
検証環境は
の時と同じにして、Windows Server 2012 R2からCentOS 7.2に対してPushでPowerShell Remoting over SSHの環境を構築するというのをやってみました。
この内容にした理由は、単純すぎるConfigurationだと面白くないのと、あと個人的に便利かなと思ったからです。
ただしPowerShell 4.0のDSCだといろいろつらかったのでWindowsのPowerShellは5.0に上げています。
1. CentOSの初期設定
最初にCentOSにPowerShell DSC for Linuxをインストールします。
OMI ServerとPowerShell DSC for Linuxのrpmファイルを順にyum install
するだけでOKです。
これだけでCentOS側の準備は完了です。
(いちおう補足しておくと、予めglibc
、openssl
、python
、python-ctypes
、libcurl
のパッケージが必要*1となりますのでインストールされていない場合はインストールしておいてください。)
2. Windowsの初期設定
以降はWindows側の作業になります。
Configurationを実行可能にするためにLinux向けDSC ResourceのMOFモジュール(nx
)をインストールします。
-Scope
はとりあえずCurrentUser
にしていますが必要に応じて変えて構いません。
3. Configurationの作成
続けてPowerShell Remoting over SSHの環境構築のためのConfigurationを書きます。
ざっと以下の様な感じになります。
おおまかな流れとしては、
nxPackage
リソースでPowerShell on LinuxのインストールnxPackage
、nxService
リソースでSSHdのインストール+設定*2nxFileLine
リソースで/etc/ssh/sshd_config
にSubSystemの記述を追加nxScript
リソースでSSHdをRestart
となっています。
内容としては割とシンプルなものですが、1.に関してなぜかYumでFilePathを指定した場合に依存パッケージのインストールに失敗するため依存パッケージを個別にインストールする様にしています。
また、4.に関してはnxService
リソースでサービスのReloadやRestartができないためnxScript
リソースで無理やりRestartさせています。
もっとスマートにできる方法があるとうれしいのですが...
4. Push実行
先のConfigurationを実行するとC:\temp
に[対象ノード名(centos.local)].mof
が作成されます。
これをStart-DscConfiguration
でCentOSに流し込んでやれば完了です。
OMIはTCP 5986番ポート(HTTPS)で待ち受けをしますのでNew-CimSessionOption
で接続オプションの指定を行っています。
実行結果
Start-DscConfiguration
した結果はこんな感じになります。
-Verbose
指定しているのですがあまり詳細ログが出てくれません...
CentOS側の/var/opt/omi/log/dsc.log
により詳細なログが出るので、エラーが出た場合はこちらを見ると良いでしょう。
この後PowerShell Remoting over SSHでCentOSに接続できる様になり、その結果は以下の様な感じとなります。*3
きちんと構成されています。
最後に
とりあえずこんな感じです。
公式な情報としてはMSDNに Linux 用 Desired State Configuration (DSC) の概要 | Microsoft Docs があります。
こちらも参考になりますのでぜひご覧ください。
*1:https://github.com/Microsoft/PowerShell-DSC-for-Linux#requirements 参照
*2:大抵の場合初期状態でSSHdはインストール済みでしょうが念のための記述です
*3:Windows側のSSH設定などは本エントリでは端折っています