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

Ответы на вопрос(1)

Ваш ответ на вопрос