我正在使用 Ansible 的become
可以与不同的用户一起运行游戏。以下是我的示例site.yml
:
- hosts: webserver
remote_user: ansible_user
become: true
roles:
- role_a
- role_b
这按预期工作:Ansible 使用ansible_user
连接到webserver
,sudo
然后在定义的角色中运行任务。但是,它在每个角色中每个任务root
运行一次,这会导致很大的开销,因为执行速度相当慢。sudo
sudo
如何配置 Ansible 以使其配置become
在每个游戏中应用一次而不是每个任务应用一次?
答案1
每次游戏仅需进行一次权限提升即可Ansible 中的 Mitogen。
从他们的文件中:
每个目标使用一个连接,每个用户帐户使用一次 sudo 调用。这比结合管道的 SSH 多路复用要好得多,因为可以在步骤之间在 RAM 中维护重要状态,并且系统日志不会充斥重复的身份验证事件。
Mitogen 还为运行剧本提供了额外的性能优势,例如重用 Python 解释器。
然而,它并不兼容所有 Ansible 配置,因为它取代了 Ansible 的重要部分!他们的文档列出了与 vanilla Ansible 的显著区别其中一些可能需要改变剧本或可能使其完全不可行。