Как выполнить команду Ansible на удаленном хосте через хост перехода с набором приватных ключей - PullRequest
0 голосов
/ 16 января 2019

У меня 2 хозяина. Я могу только ssh в один из них, используя другой в качестве прыжка. Мне нужно создать пьесу, которая позволит мне выполнять команды через Jumphost.

Я пытался следовать указаниям здесь , но мне это не удалось. Я предполагаю, что были проблемы, потому что он ничего не говорит о закрытых ключах, и мне нужно использовать их для доступа к этим хостам (эти хосты находятся в Openstack).

Вот так выглядит мой инвентарь:

[app_hosts]
app ansible_host=192.168.0.4 ansible_user=ubuntu 
ansible_ssh_private_key_file=app-key.pem 
ansible_python_interpreter=/usr/bin/python3

[db_hosts]
db ansible_host=192.168.0.3 ansible_user=ubuntu 
ansible_ssh_private_key_file=db-key.pem

[db_hosts:vars]
ansible_ssh_common_args='ssh -o ProxyCommand="ssh -W %h:%p 
ubuntu@192.168.0.4 -i app-key.pem" ubuntu@192.168.0.3 -i db-key.pem' 

К сожалению, я получаю:

TASK [Gathering Facts] 
*********************************************************
fatal: [db]: UNREACHABLE! => {"changed": false, "msg": "Failed to 
connect to the host via ssh: channel 0: open failed: connect failed: strong text
Temporary failure in name resolution\r\nstdio forwarding 
failed\r\nssh_exchange_identification: Connection closed by remote 
host\r\n", "unreachable": true}

1 Ответ

0 голосов
/ 17 января 2019

Возможно, это не полный ответ, но в определении ansible_ssh_common_args может возникнуть некоторая путаница. Попробуйте это и посмотрите, будет ли это двигаться дальше:

[db_hosts:vars]
ansible_ssh_common_args='-o ProxyCommand="ssh -i app-key.pem -W %h:%p ubuntu@192.168.0.4"' 

Изменения:

  • 'ansible_ssh_common_args' определяет дополнительные параметры, которые будут добавлены в команду ssh, которую будет использовать Ansible, поэтому у вас не должно быть ssh в начале
  • Переместил -i перед определением user @ host, поскольку строго user @ host должен быть последним компонентом команды
  • Полностью удалено «ubuntu@192.168.0.3 -i db-key.pem». Это не должно быть обязательным, так как в 'ansible_ssh_common_args' вы просто определяете хост для эффективного туннелирования соединений. Поэтому Ansible попытается подключиться к хосту БД, но добавит содержимое «ansible_ssh_common_args» в создаваемую им команду SSH, чтобы включить туннель
...