Я пытаюсь использовать ansible для создания почтового ящика на удаленном сервере. В целях тестирования я только попытаюсь «получить список почтовых ящиков» с помощью «get-mailbox» вместо того, чтобы фактически создавать почтовый ящик.
Я пробовал множество комбинаций команд, но я думаю, что все заканчивается одной и той же проблемой, касающейся того, как powershell обрабатывает удаленные исключения.
Проблема в том, что для того, чтобы «получить почтовый ящик», мне нужно загрузить определенные «командлеты» в сеансе PowerShell, что, по-видимому, трудно сделать с доступным доступом и для неопытных пользователей PowerShell, таких как я.
Это моя последняя попытка, в которой для подключения используется плагин "psrp" вместо WinRM. Я не привержен этой идее, она просто отражает мою последнюю попытку.
- 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 = "administrator@essi.ansible"
$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 }}"
Это даже не приведет к ошибке, так как, скорее всего, я ожидаю какого-либо пользовательского ввода, который я не вижу или даже не регистрирую (-vvvv) с моего доступного хоста.
Думаю, основная проблема заключается в следующем: как загружать модули / оснастки и выполнять удаленные командлеты PowerShell через ansible. В этом случае он будет применяться для создания почтового ящика обмена, но я надеюсь, что такая же структура для удаленного выполнения будет работать, возможно, также с использованием других оснасток / модулей PowerShell.
Спасибо!
Лучше всего просмотреть некоторые параметры, указанные в разделе «Ограничения» руководства Ansible по удаленному управлению Windows (WinRM): https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html#limitations
В частности:
Учетные данные не делегируются для большинства типов аутентификации, что вызывает ошибки аутентификации при доступе к сетевым ресурсам или установке определенных программ.
И обходной путь:
Устанавливать
ansible_winrm_transport
кcredssp
илиkerberos
(с участиемansible_winrm_kerberos_delegation=true
), чтобы обойти проблему двойного перехода и получить доступ к сетевым ресурсам
Чтобы подключиться к удаленному серверу Exchange и управлять им, вы можете следовать Точка с запятойОбходной путь и проверьте, устранена ли проблема сеанса после этого.
Кроме того, вы также можете обратиться к официальному документу "Подключение к серверам Exchange с помощью удаленной оболочки PowerShell"для выполнения следующих команд в Power Shell для подключения к удаленному серверу Exchange вручную:
Или автоматически подключитесь к вашему серверу, введя свой Администратор UPN, пароль и Полное доменное имя сервера в следующем скрипте (Test.ps1):
$username = "<Your Admin UPN>"
$password = ConvertTo-SecureString "<You Admin Password>" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential -ArgumentList ($username, $password)
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<Your server FQDN>/PowerShell/ -Authentication Kerberos -Credential $psCred
Import-PSSession $Session -AllowClobber -DisableNameChecking
Затем вы можете создать и просмотреть свой почтовый ящик с помощью команд "Новый почтовый ящик" и "Get-Mailbox":
Надеюсь, описанные выше методы будут вам полезны!