web-dev-qa-db-ja.com

外部IPアドレスからアクセスするとchef-server-webuiセッションが機能しない

そのリリースの公式chef-serverパッケージを使用してUbuntu12.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またはDNSec2-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からページにアクセスしようとしても、問題は発生しません。いくつかの構成値がありませんか?

3
hek2mgl

私はAzureでChefを使用していますが、これに対する正しい設定を発見したと思います。

@ hek2mglは非常に近かったのですが、彼のメソッドは再構成するたびに上書きされます。これは実用的ではないと思います。

/etc/chef-server/chef-server.rbファイルに、次の行を追加します。

chef_server_webui['cookie_domain'] = 'FQDN'

ここで、「FQDN」は完全修飾ドメイン名「myserver.mydomain.net」などです。

このファイルを保存した後、$ Sudo chef-server-ctl reconfigure

完了後、少し上にスクロールすると、[レシピ:chef-server :: default]の下に、設定が読み込まれていることがわかります。

...
"session_key": "_sandbox_session",
"cookie_domain": "all",
"cookie_domain": "myserver.mydomain.net",
...

Myserver.mydomain.netを使用してWebUIに移動すると、ログインできるようになります。

3
DonBecker

この質問に気付いたばかりだったので、チャイムを鳴らそうと思いました。私はこの問題を調査したChefのエンジニアです。

これについて受け入れられた答えは、この問題を回避するための正しい方法です。受け入れられた回答に従うと、別の回答の問題であるため、再構成して設定を同じに保つこともできます。 hek2mglが試したすべての変更を行う必要はありません。 Cookieドメインを設定するだけで十分です。

私の調査の詳細については、こちらの古いチケットシステムをご覧ください: https://tickets.opscode.com/browse/CHEF-5301

この問題は、GitHubの問題でも開かれています: https://github.com/opscode/chef/issues/178

これを回避するためにサーバーをすぐに構成する方法について誰かが提案を持っている場合は、この問題の正確な原因を現在理解していないので、GitHubの問題についてチャイムを鳴らしていただければ幸いです。 Rails、Cookieドメイン、最新のブラウザ間の奇妙な相互作用のようです(この問題は、現時点ではChromeとFirefoxにのみ影響し、SafariやIEには影響しないようです)。私が提供したリンクは、私が知っているすべての詳細を見ることができます。

ありがとう。

3
Mark Mzyk

これと同じ問題が発生し、サーバーのホスト名とDNSで使用していた名前と一致する名前エントリを使用してエラスティックIPを/ etc/hostsに配置し、chef-server-ctlreconfigureを実行して問題を解決しました。

編集:このソリューションは、クックブックのアップロードを壊してしまいました。古き良きAWSのレッスンで、/ etc/hostsに配置する必要があるprivate IPであることを再学習する必要がありました。再構成後、両方の問題は解決されたままでした。

1
datn

ついに私は問題を解決することができました。これは、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しないでください。設定が再度上書きされます。

0
hek2mgl