Мы используем Ansible playbooks для автоматизации долгосрочных сценариев на многих системах в нашей сети. Некоторые из этих систем Windows 10, а другие Windows 7. Долгосрочные операции запускаются с использованием * 1001 Механизм * asyn c и модуль ansible async_status используются для опроса результатов задач каждые 30 секунд.
- name: Long running operation
win_command:
cmd: cmd
_raw_params: python long_running_script.py
async: 2140000
poll: 0
register: async_sleeper
- name: Status poll
async_status: jid="{{ async_sleeper.ansible_job_id }}"
register: job_result
until: job_result.finished
retries: 100001
delay: 30
Сервер windows 10 имеет следующую конфигурацию по умолчанию для WinRM:
MaxConcurrentOperations = 4294967295
MaxConcurrentOperationsPerUser = 1500
Каждые ~ 12,5 часов или около того, Playbook выдает ошибки с "максимальным количеством одновременных операций для этого пользователя было превышено ", и это точно соответствует 1500/30 (наш интервал опроса). Но очевидно, что async_status не является параллельной операцией. Предполагается, что это недолгая проверка того, что процесс все еще работает и должен завершиться после. Таким образом, в любой заданный момент число одновременных процессов не должно превышать 2. Диспетчер задач на клиентском компьютере не показывает каких-либо длительных процессов. Так что же происходит? Относится ли ConcurrentOperation к количеству операций, а не к параллелизму? Мы знаем, что можем увеличить квоту , но мы не хотим этого делать в производственных системах, не доходя до root этой проблемы.
Было бы полезно знать:
- Что на самом деле означает параллельная операция?
- Какова наилучшая отраслевая практика для решения этой проблемы?
- Что изменилось в Windows 10, когда эта ошибка не обнаружена в другой версии ОС?