Для Ansible 2 я создал роль Galaxy: https://galaxy.ansible.com/udondan/ssh-reconnect/
Применение:
- name: add user to docker group
user: name=USERNAME groups=docker append=yes
sudo: true
notify:
- Kill all ssh connections
Если вам срочно нужна новая группа, вы можете вызвать модуль самостоятельно:
- name: Kill own ssh connections
ssh-reconnect: all=True
Или, в качестве альтернативы, запускайте обработчики, когда это необходимо.
- meta: flush_handlers
Для Ansible ‹ 1.9 см. этот ответ:
Используете ли вы управляющие сокеты ssh? Если вы активировали ControlMaster
в своей конфигурации ssh, это объясняет поведение. Ansible повторно подключается для каждой задачи, поэтому пользователю должна быть назначена правильная роль для следующей задачи. Хотя, когда вы используете совместное использование сеанса ssh, Ansible, конечно, повторно использует открытое соединение ssh и, следовательно, не может снова войти в систему.
Вы можете отключить совместное использование сеанса в своем ansible.cfg
:
[ssh_connection]
ssh_args= -S "none"
Поскольку совместное использование сеансов — это хорошая вещь для ускорения воспроизведения Ansible, есть альтернатива. Запустите задачу, которая убьет все соединения ssh для вашего текущего пользователя.
- name: add user to docker group
user: name=USERNAME groups=docker append=yes
sudo: true
register: user_task
- name: Kill open ssh sessions
shell: "ps -ef | grep sshd | grep `whoami` | awk '{print \"kill -9\", $2}' | sh"
when: user_task | changed
failed_when: false
Это заставит Ansible повторно войти в систему при следующей задаче.
person
udondan
schedule
29.01.2015
group
, а неuser
. - person Mxx   schedule 01.11.2014