Parece que minha primeira resposta não foi totalmente correta. Embora, é claro, seja possível resolvê-lo em seu .ssh/config
, como descrito abaixo, parece também possível com Ansibles Parâmetros de Inventário Comportamental .
Você deve (de acordo com a documentação) ser capaz de definir o arquivo-chave e o usuário em seu inventário, por host ou por grupo.
Definição por grupo:
[some_hosts]
host1.foo
host2.foo
[some_hosts:vars]
ansible_ssh_user=ubuntu
ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem
Definição por host:
[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
Mas você pode definir vários grupos de hosts já no seu .ssh/config
e cada grupo pode ter suas configurações separadas em relação à chave e ao usuário.
Aqui está um exemplo rápido
#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
Você também pode definir um padrão e substituí-lo posteriormente com configurações mais detalhadas.
Host *
user defaut_username
Host somehost
user special_username