Должен ли сервер Chef быть публичным?
У меня есть сервер Chef, работающий в нашей локальной сети, и я проверил его на других машинах в той же сети, и все работало нормально. Я запустил экземпляр ec2 и попытался запустить его, и он работает, пока не попытается подключиться к серверу Chef. У меня вопрос, есть ли способ обнародовать сервер Chef? Или есть способ, которым я могу обойти то, что узел требует от сервера?
2 ответа
Когда вы применяете наиболее распространенную модель для использования 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 Server (внутренний)
- Экземпляр AWS EC2 (внешний)
Когда я загружаюсь с сервера Chef на AWS EC2, он не работает.
Решение, которое сработало для меня:
- Свяжите свой Chef Server с публичным IP-адресом. Я сделал это через обратный NAT.
- Как только ваш Chef Server будет открыт для общественности, убедитесь, что ваш внутренний брандмауэр разрешает соединения TCP/IP из экземпляра AWS EC2.
В экземпляре AWS EC2 измените файл hosts, включив в него следующее
# Chef Server Public IP Address | Chef Server Hostname 111.111.111.111 production-chef-server.mydomain.com
- Бежать
knife bootstrap aws-ec2-public-ip -x root