Сеанс chef-server-webui не работает при доступе с внешнего IP-адреса
Я установил 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-адреса. Я пропускаю некоторые значения конфигурации?
4 ответа
Я использую 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 позволяет вам войти в систему.
Я только что узнал об этом вопросе, поэтому я подумал, что должен вмешаться. Я инженер с шеф-поваром, который изучил эту проблему.
Принятый ответ на этот вопрос - правильный способ обойти эту проблему. Обратите внимание, что следование принятому ответу также позволит вам перенастроить и сохранить настройку на прежнем уровне, поскольку это проблема другого ответа. Вам не нужно вносить все изменения, которые попробовал hek2mgl. Настройка домена cookie достаточно.
Полную информацию о моем расследовании можно найти в нашей старой системе продажи билетов здесь: https://tickets.opscode.com/browse/CHEF-5301
Эта проблема также была открыта в наших выпусках GitHub здесь: https://github.com/opscode/chef/issues/1780
Если у кого-то есть какие-либо предложения о том, как мы можем настроить сервер "из коробки", чтобы избежать этого, я был бы признателен, если бы вы вмешались в проблему GitHub, поскольку в настоящее время я не понимаю точную причину этой проблемы. Кажется, что это странное взаимодействие между Rails, доменами cookie и современными браузерами (в любом случае, эта проблема затрагивает только Chrome и Firefox, но не Safari или IE). Если вы прочитаете ссылки, которые я предоставил, вы увидите все детали, которые я знаю.
Благодарю.
У меня была такая же проблема, и я решил ее, поместив эластичный IP-адрес в мой /etc/hosts с записью имени, совпадающей с именем хоста моего сервера и именем, которое я использовал в DNS, и запустил chef-server-ctlconfigure.
Изменить: это решение затем прервало загрузку поваренной книги для меня, и мне пришлось переучивать старый добрый урок 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-ctl restart
Примечание: не chef-server-ctl reconfigure
, это переопределит настройки снова.