Ansible: как запустить игру с хостами с разными паролями?
В настоящее время я учусь использовать Ansible. Прямо сейчас у меня есть куча серверов, как новых, так и старых, которые имеют разные логины, пароли или оба. У всех есть доступ к ключу для запуска игр.
Вот с чего я начал. примерхостов файл:
# legacy and new have different logins (like root and deploy)
[legacy]
serv1
serv2
[new]
serv3
serv4
# different has a different login and password altogether
[different]
serv5
Так что для простоты у меня изначально была книга воспроизведения, эквивалентнаяsudo apt-get update && sudo apt-get upgrade
на всех машинах, но из-за разного логина / пароля я создал несколько playbook для каждого хоста. Но теперь я хочу высушить это и смотрю на роли, согласно их документам.
Прямо сейчас у меня есть что-то вроде этого. Файл test / role / common / tasks / main.yml:
---
- name: run apt-get update
apt: update_cache=yes
- name: run apt-get upgrade
apt: upgrade=yes
Файл site.yml:
- name: apply common configuration to all nodes
hosts: all
roles:
- common
Я понимаю, что на самом деле я могу определить различные логины сansible_ssh_user=root
или же...=deploy
в моем файле hosts. Или поместите их в групповые переменные. Но что мне делать с разными паролями sudo?[legacy]
это корень, поэтому мне не нужноsudo
, но[новый] и[different]
нужно и иметь разные пароли. Как мне это сделать? Групповые перемены? Я создаю это: test / group_vars / new / some_file_with_a_passwd.yml и test / group_vars / different / some_other_passwd.yml (игнорируя проблемы безопасности)?
Как site.yml распознает, что существуют узлы с разными паролями или некоторые узлы без паролей?
Для ясности отредактируйте: у меня есть доступ по SSH, поэтому выполнение шага «предварительные задачи» во время игры всегда работает (я подключаюсь через доступ по ключу, а не через пароль). Я не беспокоюсь о безопасности, так как это следующий шаг. На данный момент, я хочу сделать вещь group_vars правильно .... Этоsudo
У меня проблемы с эскалацией. Например. serv1 sudo может быть root / password1, serv3 sudo: deploy / password2, serv5: anotherdeploy / password3