Здається, моя перша відповідь була не зовсім правильною. Хоча, звичайно, це можна вирішити так, .ssh/config
як описано нижче, але, мабуть, це можливо і за допомогою параметрів інвентаризації поведінкових характеристик Ansibles .
Ви повинні (згідно з документами) мати можливість визначати файл ключів та користувача у вашому інвентарі, будь-який хост або група.
Визначення для групи:
[some_hosts]
host1.foo
host2.foo
[some_hosts:vars]
ansible_ssh_user=ubuntu
ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem
Визначення на хоста:
[some_hosts]
host1.foo ansible_ssh_user=ubuntu ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem
host2.foo ansible_ssh_user=another_user ansible_ssh_private_key_file=/home/caleb/.ssh/production_key.pem
Але ви можете визначити кілька груп хостів, які вже є у вашій країні, .ssh/config
і кожна група може мати свої окремі налаштування щодо ключа та користувача.
Ось короткий приклад
#Example with a wildcard
Host *.foo.com
user ubuntu
IdentityFile /home/caleb/.ssh/staging_key.pem
#Example with multiple hostnames
Host hostname.one hostname.two hostname.three
user other_user
IdentityFile /home/caleb/.ssh/production_key.pem
Ви також можете визначити за замовчуванням і змінити його пізніше з більш детальними налаштуваннями.
Host *
user defaut_username
Host somehost
user special_username