Когда в конфиге ansible включен pipelinining, он переиспользует ssh-соединение для всех задач.
Иногда одна из задач меняет привилегии текущего пользователя, например, добавляет пользователя в группу, и для применения этих привилегий приходится перезапускать весь playbook.
Конкретно, я столкнулся с этой проблемой при установке docker, для избежания become: true задач контейнеризации, я добавляю текущего пользователя в группу docker
Существует ли способ форсировать реаутентификацию без перезапуска playbook?
Я знаю, что можно переопределить переменную окружения ANSIBLE_SSH_PIPELINING=0 для всего playbook, но он довольно большой - повторный запуск гораздо быстрее.
Ответ
Если говорить о конкретной проблеме добавления пользователя в группу, то перезагрузить группы можно без выхода:
sudo gpasswd -a username somegroup
newgrp somegroup
Или конкретно для вашего случая:
newgrp docker
В случае Ansible этот трюк может не сработать, в таком случае, начиная с версии 2.3, можно указать Ansible повторно установить соединение
- user: name={{ansible_user}} groups=docker append=yes
- name: update effective groups to include docker
meta: reset_connection
Комментариев нет:
Отправить комментарий