Ansibleを使用してリモートサーバーにメールボックスを作成しようとしています。テストのために、実際にメールボックスを作成するのではなく、「get-mailbox」を使用して「メールボックスのリストを取得する」ことのみを試みます。
私はたくさんのコマンドの組み合わせを試しましたが、Powershellがリモート実行を処理する方法に関しては、すべて同じ問題になると思います。
問題は、「メールボックスを取得する」ために、Powershellセッションで特定の「コマンドレット」をロードする必要があることです。
これは私の最後の試みで、接続にwinrmではなく「psrp」プラグインを使用します。私はこの考えにコミットしていません。これは、これまでの私の最近の試みを反映しているだけです。
- name: prueba psrp
hosts: servidor_exchange
tasks:
- win_Shell: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -version 2.0 -NonInteractive -command ". 'C:\Program Files\Microsoft\ExchangeServer\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto ; get-mailbox"
connection: psrp
register: variable
- debug:
msg: "{{ variable }}"
エラーメッセージは冗長すぎて質問の説明に含めることができないため、代わりにここ https://Pastebin.com/4E0vRmpX で確認できます。
これは、pssessionを手動で構成しようとする別のアプローチです。
- name: prueba psrp
hosts: servidor_exchange
tasks:
- win_Shell: |
$username = "[email protected]"
$password = ConvertTo-SecureString "Redhat01." -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential -ArgumentList ($username, $password)
$sessionOption = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
Import-Module C:\PROGRA~1\Microsoft\EXCHAN~1\V14\Bin\RemoteExchange.ps1
Import-Module C:\PROGRA~1\Microsoft\EXCHAN~1\V14\Bin\ConnectFunctions.ps1
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ansible-ex/powershell/ -Credential $psCred -Authentication Kerberos -AllowRedirection -SessionOption $sessionOption
# Connect-ExchangeServer -auto
# Get-Mailbox
register: variable
- debug:
msg: "{{ variable }}"
ほとんどの場合、私が表示できない、またはansible Hostからのログ(-vvvv)が不可能なユーザー入力を待機しているため、エラーが発生することはありません。
主な問題は、モジュール/スナップインをロードし、ansibleを介してリモートのPowerShellコマンドレットを実行する方法だと思います。この場合、Exchangeメールボックスの作成に適用されますが、リモート実行の同じ構造が他のPowershellスナップイン/モジュールを使用して機能することを期待しています。
ありがとうございました!
あなたの最善の策は、Windowsリモート管理(WinRM)のAnsibleガイドの「制限」セクションに記載されているオプションのいくつかを確認することです: https://docs.ansible.com/ansible/latest/user_guide/windows_winrm .html#limitations
具体的には:
ほとんどの認証タイプでは資格情報が委任されないため、ネットワークリソースにアクセスしたり、特定のプログラムをインストールしたりすると、認証エラーが発生します。
そして回避策:
セットする
ansible_winrm_transport
tocredssp
またはkerberos
(withansible_winrm_kerberos_delegation=true
)ダブルホップの問題を回避してネットワークリソースにアクセスする