IT部門では、できるだけ多くの処理を自動化して効率化しようとしますが、ときにはその取り組みが行き過ぎて新たな問題が発生する場合があります。あまりに多くのスクリプトとプロセスが実行されているため、何をもって「完了した」と見做せばいいか、確信がもてなくなってしまいます。
AD(Active Directory)ユーザー、Exchangeメールボックス、ホームフォルダなどを作成するユーザープロビジョニング・スクリプトを実行しているとして、スクリプトがするべきすべてのことを実行していると確言できますか?
実証することはできません。エラーがなかったことは確認でき、後でスポットチェックすることもできます。しかし、スクリプトが1,000人のユーザーをカバーしているとしたら、すべてをチェックするのは実現可能ではないでしょう。つまり、テストの自動化も必要になってくるということです。
まだ確定した呼称にはなっていませんが、インフラストラクチャ・テストと呼ばれるものがテストの自動化手法として考えられています。インフラストラクチャ・テストでは、IT環境内のさまざまなものから設定値を読み取り、それらを期待値と比較することを行います。「ADユーザーは適切な属性で作成されたか」、「ポート80はWebサーバーで応答しているか」、「DHCPサービスは実行中か」などがテストできます。
インフラストラクチャ・テストの議論は、小さなブログではカバーできないほど広範にわたりますので、考えるきっかけになるようなポイントを紹介します。このようなテストを書き始めると、あるパターンがあることがわかってきます。異なるものに適用するのに、類似したコードを何度も繰り返し書いていることに気が付くと思います。ということは、毎回コピーして貼り付けるのではなく、PowerShell のスクリプトや関数の形でコードを共有できるということです。インフラストラクチャが適切に設定されていることを確認するのに役立つスクリプトを例示しましょう。
インフラストラクチャ・テストの典型的なものとして、ネットワークポートのテストがあります。ネットワークのサービスは特定のポートを経由して提供されるので、サービスが「アップ」かどうかのテストは、特定のポートがリモートコンピュータで利用可能なことを確認することで行います。このテストを構築するには、TCP/UDPスタックと .NETに関するかなりの知識が必要ですが、コミュニティにある Test-NetworkPort.ps1 というスクリプトを使うことができます。このスクリプトは PowerShell Gallery からダウンロードできます。
Install-Script -Name Test-NetworkPort
ダウンロードしたらすぐ Test-NetworkPort.ps1 を使用できます。ポートが稼働中かどうかによって、True か False が返ってきます。ここではコンピュータ名とポート番号のパラメータを指定していますが、他のパラメータは、このスクリプトのヘルプでチェックできます。
PS > Test-NetworkPort.ps1 -ComputerName DC -Port 389
True
ここで紹介するのにふさわしい、もう1つのテストがあります。新しいマシンを起動するときには、ダイナミックDNSを利用して名前を登録するか明示的にDNSレコードを作成するかして、名前解決を行う必要がありますが、PowerShell には、名前解決を試みて解決できるかどうかを True または False で返すスクリプトがあります。
ポートテストの例と同じく、このスクリプトも、PowerShell Gallery からダウンロードできます。
Install-Script -Name Test-DnsNameResolution
ダウンロードが完了したら、照会する名前とDNSサーバーを指定して Test-DnsNameResolution.ps1 を呼び出します。
PS> Test-DnsNameResolution.ps1 -Name DC.mylab.local -Server DC
True
以上は、共通コードをスクリプトにまとめる2つの例です。これらのスクリプトを関数に変換して PowerShell モジュールに組み込むこともできますが、それについては別の機会に譲ります。
Adam Bertram is a 20-year veteran of IT. He’s currently an automation engineer, blogger, independent consultant, freelance writer, author, and trainer. Adam focuses on DevOps, system management, and automation technologies as well as various cloud platforms. He is a Microsoft Cloud and Datacenter Management MVP and efficiency nerd that enjoys teaching others a better way to leverage automation.
より優れた業務アプリケーションやウェブサイトの開発に役立つ、ニュース、情報、チュートリアルをご案内します。
The specified form no longer exists or is currently unpublished.