Рейтинг:1

Сбой задачи Ansible для обновления/очистки dbatools

флаг us

Я сохраняю установку 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
}
Henrik Pingel avatar
флаг in
Выполните ansible-playbook с параметром `-vvv`, чтобы получить подробный вывод. Он должен содержать точную ошибку.
Manu avatar
флаг us
@HenrikPingel мы используем AWX, и я установил максимальную детализацию (4, отладка подключения). Добавил вывод в свой пост, но я думаю, что это не продвинет нас вперед.
Рейтинг:0
флаг us

Теперь я изменил задачи с win_shell к ansible.windows.win_powershell. Этот модуль может обрабатывать предупреждение, сгенерированное процессом очистки:

"предупреждение": [
    "В настоящее время используется версия '1.1.97' модуля 'dbatools'. Повторите операцию после закрытия приложений.",
    «Невозможно удалить версию dbatools [1.1.97] из-за: \n\tSystem.Exception: модуль« dbatools »в настоящее время используется или у вас нет необходимых разрешений».

На основании этого я буду выполнять Обновление-Dbatools команда без -уборка вариант. После этого я добавлю вторую задачу для очистки старых версий dbatools.

Почему это не появляется при выполнении обновления/очистки вручную, для меня загадка.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.