Escalonamento de privilégios Ansible uma vez por jogo

Escalonamento de privilégios Ansible uma vez por jogo

Estou usando o Ansiblebecomefuncionalidade para executar jogadas com um usuário diferente. Aqui está um exemplo do meu site.yml:

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

Isso funciona conforme o esperado: o Ansible usa ansible_userpara se conectar webservere sudodepois executar as tarefas nas funções definidas como root. No entanto, ele é executado sudouma vez por tarefa em cada uma das funções, o que resulta em uma sobrecarga significativa, pois a execução sudoé bastante lenta.

Como configuro o Ansible para aplicar sua becomeconfiguração uma vez por jogo, em vez de uma vez por tarefa?

Responder1

Fazer escalonamento de privilégios apenas uma vez por jogo é possível utilizandoMitógeno para Ansible.

Da documentação deles:

Uma conexão é usada por destino, além de uma invocação sudo por conta de usuário. Isso é muito melhor do que a multiplexação SSH combinada com o pipeline, pois um estado significativo pode ser mantido na RAM entre as etapas e os logs do sistema não recebem spam com eventos de autenticação repetidos.

Mitogen também oferece benefícios adicionais de desempenho para execução de peças, como a reutilização de interpretadores Python.

No entanto, não é compatível com todas as configurações do Ansible, pois substitui partes significativas do Ansible! Suas listas de documentaçãodiferenças notáveis ​​​​para o vanilla Ansible, alguns dos quais podem exigir alterações nos manuais ou tornar seu uso completamente inviável.

informação relacionada