Cookbook do Chef Knife Upload: Método não permitido

1

Estou executando o servidor Chef 11 em uma caixa do CentOS 6. Instalado através do RPM do Opscode. Eu configuro minha estação de trabalho em uma caixa do Windows 7. Eu posso rodar o usual knife client list e obter uma resposta, então estou confiante de que meu servidor está funcionando corretamente.

Eu criei um repositório local do Git na estação de trabalho, adicionei o livro de receitas inicializado e o enviei para o repositório local (no disco local na estação de trabalho).

Quando tento enviar o livro de receitas, no entanto:

knife cookbook upload getting-started
Uploading getting-started [0.4.0]
ERROR: Method Not Allowed
Response:

A resposta está vazia. Quando tento um knife cookbook list , recebo um conjunto vazio. Eu imagino que é porque está buscando isso do servidor, que ainda não tem o livro de receitas.

Eu vi esta postagem no antigo wiki do Opscode, o que me levou a acreditar que estou tentando editar o ambiente _default . Então criei um ambiente Dev, confirmou que existia e:

knife cookbook upload getting-started -E Dev

O mesmo resultado. Meu último recurso foi especificar uma conta de administrador:

knife cookbook upload getting-started -E Dev -u admin

O mesmo resultado.

O que preciso fazer para carregar com sucesso este livro de receitas?

    
por drawsmcgraw 07.02.2013 / 14:55

3 respostas

4

Eu tive esse mesmo problema de uma instalação padrão. Acontece que o knife.rb precisava de https: // em vez de http: // no URL do servidor também.

    
por 09.02.2013 / 00:27
3

Eu também recebi este erro quando tentei enviar uma função de chef de um arquivo json local, mas tinha propriedades faltando no meu json local. Quando usei o modo de detalhamento extra, vi que a faca estava tentando uma operação HTTP PUT e recebeu a resposta HTTP 405 Method Not Allowed .

Portanto, parece que o erro "Método não permitido" significa basicamente que a faca enviou uma solicitação HTTP que o servidor Chef não entendeu.

Para corrigir o meu problema com o papel, uma vez que usei o formato de função correto (mostrado abaixo), funcionou bem.

{
    "name": "my role name",
    "description": "my role description",
    "chef_type": "role",
    "json_class": "Chef::Role",
    "run_list": [ 
              "recipe[recipe1]", 
              "recipe[recipe2]"
           ],
    "default_attributes": {},
    "override_attributes": {}
}
    
por 03.03.2014 / 06:01
2

O erro "Método não permitido" é, na verdade, um erro HTTP 405 . Eu não sabia disso. Acontece que eu tive algum redirecionamento estranho no meu servidor Chef. Gostaria de abordar o servidor pelo seu FQDN, mas ser redirecionado para o nome do host. Liguei verbosidade 'extra':

knife cookbook upload getting-started -V -V

E as mensagens de depuração me avisam que o upload inicial estava recebendo um HTTP 301 (permanentemente movido). Quando a faca tentava acertar o novo endereço, usava um GET em vez de um POST, fazendo com que o 405 configurasse a faca para apontar para a URL redirecionada e o upload fosse um sucesso.

    
por 08.02.2013 / 13:31