每局 Ansible 权限提升一次

每局 Ansible 权限提升一次

我正在使用 Ansible 的become可以与不同的用户一起运行游戏。以下是我的示例site.yml

- hosts: webserver
  remote_user: ansible_user
  become: true
  roles:
    - role_a
    - role_b

这按预期工作:Ansible 使用ansible_user连接到webserversudo然后在定义的角色中运行任务。但是,它在每个角色中每个任务root运行一次,这会导致很大的开销,因为执行速度相当慢。sudosudo

如何配置 Ansible 以使其配置become在每个游戏中应用一次而不是每个任务应用一次?

答案1

每次游戏仅需进行一次权限提升即可Ansible 中的 Mitogen

从他们的文件中:

每个目标使用一个连接,每个用户帐户使用一次 sudo 调用。这比结合管道的 SSH 多路复用要好得多,因为可以在步骤之间在 RAM 中维护重要状态,并且系统日志不会充斥重复的身份验证事件。

Mitogen 还为运行剧本提供了额外的性能优势,例如重用 Python 解释器。

然而,它并不兼容所有 Ansible 配置,因为它取代了 Ansible 的重要部分!他们的文档列出了与 vanilla Ansible 的显著区别其中一些可能需要改变剧本或可能使其完全不可行。

相关内容