当我运行一个简单地将目录从一个地方复制到另一个地方的剧本时,ansible 抛出
错误!一名工人被发现处于死亡状态
错误。经过一番谷歌搜索,看起来这是由 oom-killer 杀死 ansible 进程引起的(但我不确定是否是这种情况)。我的记忆是:
total used free shared buff/cache available
Mem: 991 372 448 1 170 467
Swap: 511 365 146
我不知道如何解决它。我应该提一下,当我第一次执行剧本时,我只有 RAM,因为内存不足而无法运行。之后,我添加了交换。不确定它是否相关,但请注意它是交换文件,而不是单独的分区。
我在运行时观察了内存,我发现一旦运行该任务,空闲交换就会很快下降。当它达到 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 }}"
...
我上面给出的错误是我从ansible中得到的唯一信息。即使冗长地运行剧本也不会为此提供任何额外的东西。
copy_module文档中有一条注释:
假设这是这种情况,应该考虑使用同步模块。
像这样的东西对我有用:
env no_proxy='*' ansible-playbook collect-facts.yml
您也可以添加
export no_proxy="*"
到您的.bashrc
or.zshrc
中,这样您就不需要每次都输入它。更多细节:https ://www.whatan00b.com/posts/debugging-a-segfault-from-ansible/
(信用:https ://github.com/ansible/ansible/issues/32554#issuecomment-572985680 )