У меня есть сервер Chef, работающий в нашей локальной сети, и я протестировал его с другими машинами в той же сети, и все работало нормально. Я запустил экземпляр ec2 и попытался выполнить загрузку, и он работает, пока не попытается подключиться к серверу Chef. Мой вопрос: есть ли способ сделать сервер Chef общедоступным? Или есть способ обойти все, что узел требует от сервера?
Когда вы применяете наиболее распространенную модель для использования Chef Client вместе с Chef Server, то клиенту необходимо связаться с сервером. Вы можете применить любую сетевую технику от VPN до белых списков IP-адресов клиентов, но клиент (обычно) проверяет их регулярно.
Другим способом будет использование Chef Zero (в старые добрые времена люди использовали Chef Solo для этого, и вы можете найти несколько постов в блоге об этом). Таким образом, вы можете запускать свои куки-книги с локального диска (один из экземпляров EC2) или IIRC непосредственно с HTTP URL, т.е. S3.
Chef не следует модели push, что позволит вам настроить целевой экземпляр просто через SSH-соединение. Если вам это действительно необходимо, то лучше всего подойдет Ansible.
Тем не менее, я бы порекомендовал вам позволить вашему серверу Chef Server также работать на AWS - или напрямую использовать их Chef-предложение AWS OpsWorks.
.В настоящее время у меня такая же установка, как и у вас:
Когда я загружаюсь с Chef-сервера на AWS EC2, он не работает.
Решение, которое работало на меня:
На AWS EC2 Instance, измените файл хостов, чтобы включить следующее
# Публичный IP-адрес Chef-сервера | Имя хоста Chef-сервера.
111.111.111.111 production-chef-server.mydomain.com
knife bootstrap aws-ec2-public-ip -x root