Назад | Перейти на главную страницу

сеанс 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-адреса. Мне не хватает некоторых значений конфигурации?

Мне только что стал известен этот вопрос, поэтому я решил вмешаться. Я инженер 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, это снова переопределит настройки.