我正在使用 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 也為運行 play 提供了額外的效能優勢,例如 Python 解譯器的重複使用。
然而,它並不與所有 Ansible 配置相容,因為它取代了 Ansible 的重要部分!他們的文檔列表與普通 Ansible 的顯著差異,其中一些可能需要更改劇本或可能使其完全不可行。