Я сохраняю установку dbatools.io Модуль PowerShell обновлен на моих серверах MSSQL с помощью простого учебника Ansible, который включает в себя следующую задачу:
#################### ОБНОВЛЕНИЕ DBATOOLS #######################
- имя: обновление dbatools
win_shell: |
if ([Net.ServicePointManager]::SecurityProtocol -match "Tls12") {
write-host "ОК: tls 12 активен"
}
еще{
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
write-host "SET: tls 12 был активирован"
}
если ((Get-PSRepository).name -notLike "PSGallery") {
write-host "SET: Регистрация PSGallery"
Регистрация-PSRepository-Default
}
еще {
write-host "ОК: PSGallery существует"
}
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
write-host "SET: обновление dbatools"
Обновление-Dbatools-Cleanup-Confirm:$false
# То же, что и при установке, за исключением команды install в конце
когда: is_installed.stdout.find('true') != -1 ## используется "найти", потому что stdout содержит /r/n, так как это список/найти проще, чем очистить var
Эта задача работает, но возвращает следующую ошибку каждый раз, когда ей приходится очищать старую версию dbatools:
фатальный: [server.domain.local]: FAILED! => {"changed": false, "module_stderr": "#< CLIXML\r\n", "module_stdout": "", "msg": "MODULE FAILURE\nТочную ошибку см. в stdout/stderr", "rc ": 4294967295}
я использую ignore_errors: да
на нем, чтобы это не испортило мои результаты, но в конечном итоге я хотел бы надежно решить эту проблему.
Если я выполняю эту команду напрямую через удаленное соединение на любом хосте, она работает без ошибок.
При выходе из -Очистка
вариант прочь, он также работает без ошибок, но старые версии dbatools не будут удалены, и со временем они будут складываться.
Любые идеи, как эту ошибку можно правильно обработать в Ansible?
Сообщение об ошибке с высокой детализацией:
перенаправление (тип: модули) ansible.builtin.win_shell на ansible.windows.win_shell
Использование файла модуля /runner/requirements_collections/ansible_collections/ansible/windows/plugins/modules/win_shell.ps1
Конвейеризация включена.
<SQL-Server-IP> УСТАНОВИТЬ СОЕДИНЕНИЕ WINRM ДЛЯ ПОЛЬЗОВАТЕЛЯ: ansible-service-user на ПОРТУ 5986 К SQL-Server-IP
EXEC (через конвейерную оболочку)
фатальный: [SQL-Server-FQDN]: FAILED! => {
«изменено»: ложь,
"module_stderr": "#< CLIXML\r\n",
"module_stdout": "",
"msg": "MODULE FAILURE\nТочную ошибку смотрите в stdout/stderr",
"rc": 4294967295
}