Похоже, мой первый ответ был не совсем верным. Хотя, конечно, это можно решить, .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