ВНИМАНИЕ: Не удалось подключиться к ip-xxx-xx-xx-xx.

Ошибка: FATAL: # узлов найдено, но не имеет необходимого атрибута для установления соединения. Попробуйте установить другой атрибут, чтобы открыть соединение, используя --attribute.

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

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

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.

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

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-x-x.us-west-2.compute.internal, который Chef-клиенты обнаруживают при подготовке, а с помощью общедоступного IP-адреса AWS.

Повлияет ли это на мою способность правильно выполнять указанную выше команду?

Сервер Chef перечисляет данные узла как

FQDN: ip-172-31-xx-xx.us-west-2.compute.internal

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

При таком соответствии настроек AWS,

Частный DNS: ip-172-31-xx-xx.us-west-2.compute.internal

Частные IP-адреса: 172.31.xx.xx.

Однако информация AWS для подключения по ssh к экземпляру

Общедоступный DNS: ec2-54-200-xx-xxx.us-west-2.compute.amazonaws.com Общедоступный IP-адрес: 54.200.xx.xxx

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

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


person Lui    schedule 06.02.2015    source источник
comment
См. комментарии ко второму ответу здесь: serverfault.com/questions/641951/   -  person Tensibai    schedule 06.02.2015
comment
Возможно, это так, если бы я использовал нож для создания сервера ec2, однако я использую вариант автоматической установки, при котором шеф-клиент -j /etc/chef/mynodes.json определяет настройки экземпляра, а затем добавляет себя на сервер шеф-повара. Вот где может быть проблема. Полное доменное имя и IP-адрес отображаются неправильно. Я думаю, что они должны показывать общедоступное DNS-имя и IP-адрес. Так что, если это так, было бы неплохо узнать, как chef-clinet добавляет эту информацию. Глядя на шеф-клинет, не понимаю, как пройти в публичную информацию.   -  person Lui    schedule 10.02.2015


Ответы (1)


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

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

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

person Tejay Cardon    schedule 06.02.2015
comment
Спасибо Теджай. Я все еще сталкиваюсь с той же проблемой. Я сослался на эту страницу документа и не смог найти --hint ec2, о котором вы упомянули ссылка Когда я пробую опцию --hint ec2, я получаю сообщение Ошибка: неверная опция: --hint Затем я выполнил команду, упомянутую на странице руководства, для запуска все веб-серверы EC2, и я получил то же сообщение об ошибке, что и в этой теме. -x ubuntu -a ec2.public_hostname - person Lui; 09.02.2015
comment
--hint добавляется к команде bootstrap, а не к команде ssh. Это гарантирует, что узел установит атрибут node[:public_ip_address]. - person Tejay Cardon; 09.02.2015
comment
Я использую автоматическую установку chef-client -j /etc/chef/mynodes. json для запуска команды. После этого нода добавляет себя на сервер chef. Однако, похоже, я не могу понять, что это за штука с ножом - person Lui; 10.02.2015
comment
Затем вам нужно вручную добавить подсказку ec2 другим способом. Либо просто добавив пустой файл в /etc/chef/ohai/hints/ec2.json (файл может быть полностью пустым), либо используя кулинарную книгу oahi github.com/opscode-cookbooks/ohai - person Tejay Cardon; 10.02.2015
comment
Спасибо Теджай! Добавление файла /etc/chef/ohai/hints/ec2.json, а затем повторный запуск клиента шеф-повара, чтобы повторно скрепить его, сработало. - person Lui; 12.02.2015
comment
Затем, вернувшись в командную строку, запустил knife ssh "role:servers" "touch /home/ubuntu/file.txt" -a ec2.public_hostname -x ubuntu -i ~/.ssh/mykey.pem сработало~ - person Lui; 12.02.2015