在长时间运行的任务后删除根权限



我正在编写一个 ansible 剧本来设置我的系统。这包括安装应用程序(通过package模块 - 其中一些(例如texlive-full(需要很长时间才能下载和安装。

任务如下所示:

- name: install packages
package:
name: '{{ item }}'
state: present
with_items: [firefox, gimp, inkscape, texlive-full, ..., steam]
become: yes

我用ansible-playbook playbook.yml -K执行包含此任务的剧本。

当安装过程花费太长时间时,ansible 不会保留其根权限(随become升级(,因此安装下一个应用程序会失败。

如何让 ansible 保留特权?

作为一般规则,您不应该在循环中运行package模块,因为这意味着您必须重新计算每个包的依赖项。这会导致大量额外的工作,从而延长执行时间。

您应该将包列表作为参数传递给name参数,如下所示:

- name: install packages
package:
name: "{{ packages }}"
state: present
vars:
packages:
- firefox
- gimp
- inkscape
- texlive-full
...
- steam
become: yes

这将在一个步骤中安装所有软件包,这意味着无论需要多长时间,Ansible 实际上都没有以某种方式"失去"特权的机制。

最新更新