sessão chef-server-webui não funciona quando o acesso de um endereço IP externo

3

Eu instalei chef-server em um sistema Ubuntu 12.10 usando o pacote oficial .deb para essa versão. Após a conclusão da instalação eu corro

chef-server-ctl test

Qual o sucesso relatado, 0 falhas.

O servidor - uma instância do Amazon EC2 - tem 1 interface de rede, que tem um endereço interno atribuído a ele. Digamos que o endereço IP seja 10.223.92.58 e hostname -f retorne algo como:

ip-10-223-92-58.eu-west-1.compute.internal

No entanto, o AWS EC2 permite acessar o servidor pela Internet usando 53.242.31.23 ou DNS ec2-53-242-31-23.eu-west-1.compute.amazonaws.com .

Para permitir o acesso por meio do nome do DNS público, adicionei as seguintes linhas a /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"

Eu posso acessar o servidor usando https://ec2-53-242-31-23.eu-west-1.compute.amazonaws.com e acessar a página de login. A página de login irá me redirecionar (após o login bem-sucedido) para o usuário página de edição, para alterar minha senha. (Isso é por design).

Problema:

O redirecionamento para a página de edição do usuário não funcionará, pois o controlador do usuário (ou qualquer outro controlador) reclamará de uma sessão não existente e me redirecionará para a página de login novamente. O problema não existe se eu tentar acessar a página a partir do seu nome de domínio DNS ou IP local. Estou perdendo alguns valores de configuração?

    
por hek2mgl 25.11.2013 / 14:43

4 respostas

3

Estou usando o Chef no Azure, mas acredito que descobri a configuração correta para isso.

@ hek2mgl era muito próximo, mas o método dele será sobrescrito toda vez que você reconfigurar, o que eu acho que não é prático.

No seu arquivo /etc/chef-server/chef-server.rb, adicione a seguinte linha:

chef_server_webui['cookie_domain'] = 'FQDN'

Onde "FQDN" é o seu nome de domínio totalmente qualificado "myserver.mydomain.net", etc.

Depois de salvar este arquivo, $ sudo chef-server-ctl reconfigure

Após a conclusão, se você rolar um pouco para cima, em "Receita: chef-server :: default", você verá o carregamento da configuração:

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

Agora, navegar para a WebUI usando myserver.mydomain.net permite que você faça o login.

    
por 24.06.2014 / 18:53
3

Acabei de tomar conhecimento desta questão, por isso pensei em cumprimentá-la. Sou engenheiro com o Chef que analisou esta questão.

A resposta aceita sobre isso é a maneira correta de contornar esse problema. Observe que seguir a resposta aceita também permitirá que você reconfigure e mantenha a configuração da mesma forma, já que isso é um problema em outra das respostas. Você não precisa fazer todas as alterações que o hek2mgl tentou. Definir o domínio do cookie é suficiente.

Detalhes completos sobre minha investigação podem ser encontrados em nosso antigo sistema de emissão de ingressos aqui: link

Esse problema também foi aberto em nossos problemas do GitHub aqui: link

Se alguém tiver alguma sugestão sobre como podemos configurar o servidor para evitar isso, agradeço se você entrar em contato com o problema do GitHub, já que atualmente não entendo a causa exata de esse problema. Parece ser uma interação estranha entre Rails, domínios de cookies e navegadores modernos (esse problema parece afetar apenas o Chrome e o Firefox, não o Safari ou o IE, no momento). Se você leu os links que eu forneci, você pode ver todos os detalhes que eu conheço.

Obrigado.

    
por 08.08.2014 / 16:50
1

Eu tive esse mesmo problema, e resolvi colocando o IP elástico no meu / etc / hosts com uma entrada de nome que correspondia ao nome do host do meu servidor e o nome que eu estava usando no DNS e executei a reconfiguração chef-server-ctl .

Editar: essa solução quebrou os uploads do livro de receitas para mim, e tive que reaprender a boa e velha lição da AWS de que é o IP privado que você deve colocar em / etc / hosts. Depois de uma reconfiguração, os dois problemas permaneceram resolvidos.

    
por 24.03.2014 / 19:42
0

Finalmente, consegui resolver o problema. Ele estava relacionado às configurações de sessão do aplicativo chef-server-webui.

Eu tive que especificar explicitamente o domínio de sessão ec2-53-242-31-23.eu-west-1.compute.amazonaws.com no arquivo:

/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'

O uso apenas de :domain => all , como no arquivo original, não funcionará.

Então restart chef-server para aplicar as configurações:

chef-server-ctl restart

Observação: não use chef-server-ctl reconfigure , isso substituirá as configurações novamente.

    
por 26.11.2013 / 23:38