Хорошо, у вас есть два вопроса:
Как подключиться к разным хостам с разными SSH-ключами?
Создайте другой файл group_vars для каждого набора хостов и установите там учетные данные.
# group_vars/legacy
---
ansible_ssh_user: myuser
ansible_ssh_key: ~/.ssh/legacy_key.pem
Затем Ansible применит другой ключ, основанный на том, в какой группе находится каждый хост, просто так.
Как использовать разные учетные данные для каждого узла для повышения эскалации привилегий?
Еще раз поместите их в разные файлы group_vars для каждого набора хостов:
# group_vars/legacy
---
ansible_become_user: root
ansible_become_pass: "{{ vaulted_legacy_password }}"
Затем вы можете использовать ключевое слово become: yes
для эскалации привилегий, а Ansible будет применять правильные учетные данные для каждой группы. Если вы уже являетесь пользователем root, ключевое слово become
просто не будет иметь никакого эффекта.
А потом ... видите ли там {{ vaulted_legacy_password }}
переменную?
Лучшая практика, и только разумная вещь, чтобы сделать , если вы когда-либо делитесь этим кодом, заключается в создании файла Ansible Vault и сохранении ваших паролей там. Пароль Ansible Vault защищает ваши чувствительные переменные и позволяет расшифровать их во время работы.
Вы можете либо сделать весь ваш group_vars/legacy
файл сводчатым (если учетные данные являются единственной информацией в нем), либо создать папку group_vars / legacy с одним файлом открытого текста и одним зашифрованным файлом. Все файлы в подкаталоге group_vars будут получены и применены к группе с именем папки.