Estou usando o Ansiblebecome
funcionalidade 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_user
para se conectar webserver
e sudo
depois executar as tarefas nas funções definidas como root
. No entanto, ele é executado sudo
uma 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 become
configuraçã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.