2015-02-06 8 views
1

Ошибка: FATAL: # узла найдены, но не имеют обязательного атрибута для установления соединения. Попробуйте установить другой атрибут, чтобы открыть соединение с помощью --attribute.ВНИМАНИЕ: Не удалось подключиться к ip-xxx-xx-xx-xx

Проблема, с которой я начинаю с попытки выполнить команду, используя команду повара шеф-повара. Цель состоит в том, чтобы команда выполнялась на любой серверной части роли, как вы увидите.

Так что, когда я запускаю команду я получаю следующее я получаю следующее

knife ssh "role:servers" "touch /home/ubuntu/file.txt" 

WARNING: Failed to connect to ip-172-31-8-x.us-west-2.compute.internal -- SocketError: getaddrinfo: nodename nor servname provided, or not known 
WARNING: Failed to connect to ip-172-31-94-xb.us-west-2.compute.internal -- SocketError: getaddrinfo: nodename nor servname provided, or not known 
WARNING: Failed to connect to ip-172-31-99-x.us-west-2.compute.internal -- SocketError: getaddrinfo: nodename nor servname provided, or not known 

Когда я попробовать новые атрибуты

knife ssh "role:web" "touch /home/ubuntu/file.txt" -x ubuntu -a hostname 

FATAL: 6 nodes found, but does not have the required attribute to establish the 
connection. Try setting another attribute to open the connection using --attribute. 

Я пытался Differnet атрибуты, но не повезло

knife ssh "role:servers" "touch /home/ubuntu/file.txt" -a ec2.public_hostname 
knife ssh "role:servers" "touch /home/ubuntu/file.txt" -a public_hostname 


knife ssh "role:servers" "touch /home/ubuntu/testfile.txt" --attribute 54.68.122.109 -i /Users/useraccount/.ssh/mykey.pem -x ubuntu 

FATAL: 2 nodes found, but does not have the required attribute to establish the connection. Try setting another attribute to open the connection using --attribute. 

Очевидно, что у меня что-то не хватает.

Следует отметить, что я могу использовать ssh на серверах, но не используя ip-172-31-xx.us-west-2.compute.internal, которые клиент-шеф-клиент обнаруживает при настройке, скорее, AWS Публичный IP.

Это повлияет на то, что я смогу правильно выполнить команду выше?

Chef данные списки серверов узла как

FQDN: IP-172-31-хх-xx.us-запад 2.compute.internal

IP Address: 172.31.xx. хх

С AWS согласования установки, как это так,

Priviate DNS: IP-172-31-хх-xx.us-запад 2.compute.internal

Priviate IP-адреса: 172.31.xx.xx

Однако информация AWS для sshing в экземпляр является

Public DNS: ec2-54-200-xx-xxx.us -west-2.compute.amazonaws.com Public IP: 54.200.xx.xxx

Это данные AWS Public DNS я могу использовать, чтобы правильно SSH в сервер (не ножом).

Если возможно, проблема заключается в том, как данные узла узла шеф-повара передаются на сервер шеф-повара, есть ли возможность исправить это, так что сервер шеф-повара отражает данные об общедоступных IP-адресах aws?

+0

См. Комментарии к второму отвечу здесь: http://serverfault.com/questions/641951/knife-cant-ssh-into-newly-instantiated-ec2-server – Tensibai

+0

Возможно, это был случай, если использовать нож для создания ec2 сервер, однако я использую параметр автоматической установки, где chef-client -j /etc/chef/mynodes.json обнаруживает настройки экземпляра, а затем добавляет себя на сервер шеф-повара. Вот здесь проблема. Полное доменное имя и IP-адрес отображаются некорректно. Я думаю, что они должны показать общедоступное DNS-имя и IP-адрес. Так что, если это так, неплохо бы знать, как добавляет эту информацию chef-clinet. Глядя на шеф-повара, вы не можете увидеть, как пройти общественную информацию. – Lui

ответ

2

Если ваша рабочая станция не находится на AWS VPN или фактически запущена внутри вашего VPC, вы захотите использовать -a public_ip_address.

Если это экземпляр VPC, возможно, у вас нет этого атрибута, установленного из-за некоторых проблем с ohai. В этом случае убедитесь, что вы установили подсказку ec2 для ohai.Самый простой способ сделать это - использовать флаг --hint ec2 при загрузке узла.

И, наконец, если этот узел не имеет общедоступного IP-адреса, так как многие из них не находятся в VPC, вам необходимо использовать прокси-узел для его доступа. Для этого используется флаг --ssh-gateway, и ему нужно будет указать узел в общей подсети вашего VPC.

+0

Спасибо Tejay. Я все еще сталкиваюсь с тем же вопросом. Я ссылался на эту страницу документа, и я не смог найти ссылку --hint ec2, которую вы упомянули [ссылка] (http://manpages.ubuntu.com/manpages/utopic/man1/knife-ssh.1.html) Когда я пытаюсь использовать параметр -hint ec2, я получаю _ «Ошибка: недействительная опция: --hint» _ Далее я сделал команду, указанную на странице руководства, для запуска на всех веб-серверах EC2, и я получил то же сообщение об ошибке, как этот раздел. -x ubuntu -a ec2.public_hostname – Lui

+1

'-hint' добавляется в команду' bootstrap', а не 'ssh'. Это гарантирует, что узел установит атрибут 'node [: public_ip_address]'. –

+0

Я использую [unattended install] (http://docs.chef.io/client/install_bootstrap.html) chef-client -j /etc/chef/mynodes.json для запуска команды. После этого узел добавляет себя к серверу шеф-повара. Однако, похоже, не может показаться, что этот нож ssh вещь – Lui

Смежные вопросы