Когда я запускаю playbook, который просто копирует каталог из одного места в другое, ansible выдает
ОШИБКА! Рабочий найден в мертвом состоянии
Ошибка. После некоторого поиска в Google похоже, что это вызвано тем, что oom-killer убивает доступный процесс (но я не совсем уверен, что это так). Моя память:
total used free shared buff/cache available
Mem: 991 372 448 1 170 467
Swap: 511 365 146
Понятия не имею, как это исправить. Я должен упомянуть, что у меня была ОЗУ только при первом запуске playbook, который не мог работать из-за нехватки памяти. После этого я добавил своп. Не уверен, что это связано, но учтите, что это файл подкачки, а не отдельный раздел.
Я наблюдал за памятью во время работы и вижу, что свободная подкачка очень быстро разряжается после выполнения этой задачи. Сообщение об ошибке выдается при достижении 0.
Я использую следующую пьесу.
---
- hosts: localhost
become: true
become_method: sudo
become_user: root
vars:
portals:
- mysite
contentPath: "/var/www/"
backupPath: "/home/dataFiles/backups/"
tasks:
- name: backup content
copy:
src: "{{ contentPath }}/{{ item }}"
dest: "{{backupPath}}/{{ item }}/{{ ansible_date_time.date }}/"
with_items:
- "{{ portals }}"
...
Ошибка, которую я привел выше, - это единственная информация, которую я не могу получить. Даже подробный запуск playbook не дает для этого ничего дополнительного.
Есть примечание в copy_module документация:
Модуль «копировать» модуль рекурсивного копирования не масштабируется до множества (> сотен) файлов. В качестве альтернативы см. Модуль синхронизации, который является оболочкой для rsync.
Предполагая, что это так, следует рассмотреть возможность использования синхронизировать модуль.