Страницы

Поиск по вопросам

пятница, 1 марта 2019 г.

Как заставить ansible перелогиниться при включенном pipelining?

Когда в конфиге 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

Комментариев нет:

Отправить комментарий