Повышение привилегий Ansible один раз за игру

Повышение привилегий Ansible один раз за игру

Я использую Ansiblebecomeфункциональность для запуска игр с другим пользователем. Вот пример моего 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.

Из их документации:

Используется одно соединение для каждой цели, в дополнение к одному вызову sudo для каждой учетной записи пользователя. Это намного лучше, чем мультиплексирование SSH в сочетании с конвейеризацией, поскольку между шагами в оперативной памяти может поддерживаться значительное состояние, а системные журналы не засоряются повторными событиями аутентификации.

Mitogen также обеспечивает дополнительные преимущества в производительности при запуске игр, такие как повторное использование интерпретаторов Python.

Однако он не совместим со всеми конфигурациями Ansible, поскольку заменяет значительные части Ansible! Их списки документациизаметные отличия от ванильного Ansible, некоторые из которых могут потребовать внесения изменений в инструкции или сделать их использование совершенно невозможным.

Связанный контент