Я установил chef-server
в системе Ubuntu 12.10 с использованием официального .deb
пакет для этого выпуска. После завершения установки я запускаю
chef-server-ctl test
Который сообщил об успехе, 0
неудачи.
Сервер - экземпляр Amazon EC2 - имеет 1 сетевой интерфейс, которому назначен внутренний адрес. Допустим, IP-адрес 10.223.92.58
и hostname -f
возвращает что-то вроде:
ip-10-223-92-58.eu-west-1.compute.internal
Однако AWS EC2 позволяет получить доступ к серверу из Интернета, используя 53.242.31.23
или DNS ec2-53-242-31-23.eu-west-1.compute.amazonaws.com
.
Чтобы разрешить доступ через публичное DNS-имя, я добавил следующие строки в /etc/chef-server/chef-server.rb
:
lb[:enable] = "false"
lb[:web_ui_fqdn] = "ec2-53-242-31-23.eu-west-1.compute.amazonaws.com"
nginx[:server_name] = "ec2-53-242-31-23.eu-west-1.compute.amazonaws.com"
nginx[:url] = "https://ec2-53-242-31-23.eu-west-1.compute.amazonaws.com"
nginx[:enable_non_ssl] = "true"
Я могу получить доступ к серверу, используя https://ec2-53-242-31-23.eu-west-1.compute.amazonaws.com
и перейдите на страницу входа. Затем страница входа перенаправит меня (после успешного входа) на страницу редактирования пользователя, чтобы сменить мой пароль. (Это по замыслу).
Проблема:
Перенаправление на страницу редактирования пользователя не будет работать, так как пользовательский контроллер (или любой другой контроллер) будет жаловаться на несуществующий сеанс и снова и снова перенаправлять меня на страницу входа. Проблема не возникает, если я пытаюсь получить доступ к странице с ее локального доменного имени DNS или IP-адреса. Мне не хватает некоторых значений конфигурации?
Мне только что стал известен этот вопрос, поэтому я решил вмешаться. Я инженер Chef, который изучил эту проблему.
Принятый ответ на этот вопрос - правильный способ обойти эту проблему. Обратите внимание, что после принятого ответа вы также сможете перенастроить и сохранить настройку, поскольку это проблема в другом из ответов. Вам не нужно вносить все изменения, которые пробовал hek2mgl. Достаточно установить домен cookie.
Полную информацию о моем расследовании можно найти в нашей старой системе продажи билетов здесь: https://tickets.opscode.com/browse/CHEF-5301
Эта проблема также была открыта в наших выпусках GitHub здесь: https://github.com/opscode/chef/issues/1780
Если у кого-то есть предложения о том, как мы можем настроить сервер из коробки, чтобы избежать этого, я был бы признателен, если бы вы вмешались в проблему GitHub, поскольку в настоящее время я не понимаю точную причину этой проблемы. Похоже, что это странное взаимодействие между Rails, доменами cookie и современными браузерами (эта проблема, похоже, влияет только на Chrome и Firefox, а не на Safari или IE, в любом случае на данный момент). Если вы прочитаете ссылки, которые я предоставил, вы увидите все подробности, которые я знаю.
Спасибо.
Я использую Chef в Azure, но считаю, что нашел для этого правильную настройку.
@ hek2mgl был очень близок, но его метод будет перезаписываться каждый раз, когда вы меняете конфигурацию, что я не думаю, что это практично.
В вашем файле /etc/chef-server/chef-server.rb добавьте следующую строку:
chef_server_webui['cookie_domain'] = 'FQDN'
Где «FQDN» - ваше полное доменное имя «myserver.mydomain.net» и т. Д.
После сохранения этого файла $ sudo chef-server-ctl перенастроит
После его завершения, если вы немного прокрутите вверх, в разделе «Рецепт: chef-server :: default» вы увидите, что он загружает ваши настройки:
...
"session_key": "_sandbox_session",
"cookie_domain": "all",
"cookie_domain": "myserver.mydomain.net",
...
Теперь переход к WebUI с помощью myserver.mydomain.net позволяет вам войти в систему.
У меня была такая же проблема, и я решил ее, поместив эластичный IP-адрес в свой / etc / hosts с записью имени, которая соответствовала имени хоста моего сервера и имени, которое я использовал в DNS, и запустил chef-server-ctl reconfigure.
Изменить: это решение затем нарушило загрузку поваренной книги для меня, и мне пришлось заново выучить старый добрый урок AWS о том, что это частный IP вы должны поместить в / etc / hosts. После перенастройки обе проблемы остались решенными.
Наконец-то я смог решить проблему. Это было связано с настройками сеанса приложения chef-server-webui.
Мне пришлось явно указать домен сеанса ec2-53-242-31-23.eu-west-1.compute.amazonaws.com
в файле:
/opt/chef-server/embedded/service/chef-server-webui/config/initializers/session_store.rb
ChefServerWebui::Application.config.session_store :cookie_store, :key => '_sandbox_session', :domain => 'ec2-53-242-31-23.eu-west-1.compute.amazonaws.com'
Просто используя :domain => all
вроде в исходном файле работать не будет.
затем restart
chef-server для применения настроек:
chef-server-ctl restart
Примечание: Не chef-server-ctl reconfigure
, это снова переопределит настройки.