Я написал книгу с некоторыми задачами, запустил обновление Windows на нескольких серверах.Для обновления этих хостов я использую модуль ansible, который работает с Windows Update API.
Playbook и задачи выглядят следующим образом:
Code / Playbook
- hosts:
- '{{ target }}'
strategy: free
gather_facts: no
vars:
playbook_name: A.windows-update
roles:
- { role: "A.windows-update" }
И задача:
- (Some other tasks like create a directory...)
- name: Reboot before updates
win_reboot:
reboot_timeout: 7200
- name: install windows updates (1)
win_updates:
category_names:
- Application
- Connectors
- CriticalUpdates
- DefinitionUpdates
- DeveloperKits
- FeaturePacks
- Guidance
- SecurityUpdates
- ServicePacks
- Tools
- UpdateRollups
- Updates
reboot: yes
reboot_timeout: 7200
log_path: C:\temp\windows_updates1.txt
register: update_status1
Проблема и журналы:
Я протестировал playbook на 2 хостах (Windows Server 2008 R2 и 2016), и он работал нормально.Когда я использовал это для обновления около 30 Windows Server (большинство из них 2016 года), он вышел из строя на 50% хостов.Некоторые из них сталкиваются с тайм-аутом, а другие не имеют ответа в течение 4 или 5 часов.Затем мне пришлось остановить playbook из-за того, что это продуктивная среда ... Когда я проверил журнал log_path: C:\temp\windows_updates1.txt
, я обнаружил некоторые странные результаты:
2019-06-22 02:00:34Z Adding update 8324-a692149402a8 - SQL Server 2014 Service Pack 3
2019-06-22 02:00:34Z FATAL: A reboot is required before more updates can be installed
Произошла ошибка перезагрузки, даже несмотря на то, что я перезагрузил систему до начала процесса обновления и во время обновления был установлен reboot: yes
.
В другой системе (также 2016) я увидел следующий вывод в windows_updates1.txt
:
2019-06-21 22:53:36Z Found 3 updates
2019-06-21 22:53:36Z Installing updates…
2019-06-21 22:53:36Z Adding update 39c97e25-662a-45b7-aa3e-ce3f6c1d7978 --> SQL
(файл заканчивается, журналов больше нет)
Иногда эта ошибкасообщение отображается в ansible:
[WARNING]: FATAL ERROR DURING FILE TRANSFER: The pipe is being closed. (extended fault data: {u'fault_subcode': 'w:InternalError', u 'fault_code': 's:Receiver', u'wsmanfault_code':
'232', 'transport_message': u'Bad HTTP response returned from server. Code 500', 'http_status_code': 500})
Вопрос
Поэтому я не могу понять, почему ansible ..
1) ... не удалось обновить, когдатребуется перезагрузка, даже если перезагрузки разрешены
2) ... машина остановилась после «добавления обновления», и в течение 4 часов не было никакого прогресса.Это обновление SQL заняло около 30 минут (вручную).
3) Когда я использую strategy: free
, не должен ли ansible запускать обновление на всех хостах одновременно?Потому что в журналах обновлений Windows есть несколько разных периодов «запуска» в диапазоне 2 ч.
Спасибо за любую подсказку и любую идею о том, как обновить все мои серверы с помощью ansible.