PowerShell スクリプト内のエラー コードを Ansibleに返してタスクの成功または失敗を判断する

PowerShell スクリプトでコードをレイアウトして、エラー コードを Ansible に返してタスクの成功または失敗を判断する方法に関する情報です。

 

というのも、AnsibleはPowershellの実行結果でエラーがあっても、処理自体は成功してしまうので、Ansible上では判断できません。

 

そこで、PowerShellの実行結果をもとに、エラー コードを Ansible に返すことが必要になることがあります。


海外のサイトで参考になった情報がありますので、共有します。

 

私の経験では、さまざまな自動化およびオーケストレーション ツールセットでは、さまざまな方法で PowerShell スクリプトからエラーを返す必要がある場合があります。

 

これまで Ansible を使用して、PowerShell スクリプトから Ansible に 0 (成功) または 1 (失敗) の終了コードを返すと、Playbook でのそのタスクの成功または失敗が発生することがわかりました。戻りコードの他の数値を使用して、さまざまなタイプの失敗を確立できるかどうかを試してみましたが、Ansible はそれをサポートしていないようでした。(PowerShell、リターン コード、および Ansible に関するその他の経験がある場合は、以下のコメント欄に残してください。)

 

したがって、次の例では、Ansible によって実行された PowerShell スクリプトからそれを実行したタスクに 0 または 1 の終了コードが返されるようにする方法を示します。

 

最初のタスクは、エラー処理の例を含む PowerShell スクリプトをターゲットにコピーし、2 番目のタスクはそのスクリプトを実行します。

 

Example-ErrorHandling.ps1 の内容は次のとおりです。


#Requires -RunAsAdministrator
$ErrorActionPreference ='Stop'

# Get a service which doesn't exist
try {
    Get-Service "This will fail"
}
catch {

    Write-Error "Unable find service" -ErrorAction Continue
    Write-Error $_.Exception.Message -ErrorAction Continue
    exit 1
}


exit 0

 

このexit 1でAnsible側でエラーを出すことができました。


「引用元」
Ansible, Windows and PowerShell: the Basics – Part 5, Example PowerShell Error Handling
https://www.jonathanmedd.net/2019/10/ansible-windows-and-powershell-the-basics-part-5-example-powershell-error-handling.html

 

Acer モニター EK240YCbi 23.8インチ VA 非光沢 フルHD 5ms(GTG)75Hz HDMI AMD FreeSync 広い視野角178° フリッカーレス ブルーライト軽減