Packer: A cópia WinRM de livros de receitas de chef é muito lenta

Criado em 2 mar. 2018  ·  3Comentários  ·  Fonte: hashicorp/packer

Tenho visto muitos problemas relacionados ao mesmo. Mas comparando o quão rápido a cozinha de teste (https://github.com/test-kitchen/winrm-transport) copia arquivos para uma máquina Windows para a mesma lista de execução, isso parece um problema que pode ser resolvido. No meu caso, a cópia do empacotador leva quase uma hora, enquanto a cozinha de teste faz isso em menos de 5 minutos. Isso me parece uma implementação ruim. Eu adoraria ajudar de qualquer maneira possível. Isso está reduzindo a velocidade de construção de nossas janelas em uma quantidade muito significativa e testar pequenas alterações está desperdiçando muitas horas de engenharia.

Ref: https://github.com/hashicorp/packer/issues/2648

communicatowinrm enhancement

Comentários muito úteis

Qualquer pessoa que queira acelerar suas compilações WinRM do Windows pode contornar esse problema usando um provisionador de arquivo para copiar todos os livros de receitas em um arquivo zip antes que o provisionador chef-solo seja executado e especificando remote_cookbook_paths . Algo assim acelerou drasticamente meus tempos de construção:

 "provisioners": [
    {
      "type": "file",
      "source": "berks-cookbooks.zip",
      "destination": "c:\\temp\\"
    },
    {
      "type": "powershell",
      "inline": [
        "Expand-Archive -LiteralPath c:\\temp\\berks-cookbooks.zip -DestinationPath C:\\temp"
      ]
    },
    {
      "type": "chef-solo",
      "version": "15.3.14",
      "chef_license": "accept",
      "guest_os_type": "windows",
      "remote_cookbook_paths": [
        "c:/temp/berks-cookbooks"
      ],
      "run_list": "{{user `ami_run_list`}}",
      }
    }

Todos 3 comentários

Percebi que o Packer "travava" na etapa do provisionador solo do chef que copia os livros de receitas. Parece que está copiando um arquivo a cada 3 segundos. Eu loguei na instância EC2 durante esta operação e verifiquei que a contagem de arquivos está realmente aumentando lentamente.

Síntese da saída de registro relevante:
https://gist.github.com/JCapriotti/4ecfe4a1e20fc relevant79161086b0815861

Infelizmente dependemos de cerca de 13 livros de receitas, e isso adiciona cerca de 45 minutos à nossa construção. Apenas para copiar arquivos!

Qualquer pessoa que queira acelerar suas compilações WinRM do Windows pode contornar esse problema usando um provisionador de arquivo para copiar todos os livros de receitas em um arquivo zip antes que o provisionador chef-solo seja executado e especificando remote_cookbook_paths . Algo assim acelerou drasticamente meus tempos de construção:

 "provisioners": [
    {
      "type": "file",
      "source": "berks-cookbooks.zip",
      "destination": "c:\\temp\\"
    },
    {
      "type": "powershell",
      "inline": [
        "Expand-Archive -LiteralPath c:\\temp\\berks-cookbooks.zip -DestinationPath C:\\temp"
      ]
    },
    {
      "type": "chef-solo",
      "version": "15.3.14",
      "chef_license": "accept",
      "guest_os_type": "windows",
      "remote_cookbook_paths": [
        "c:/temp/berks-cookbooks"
      ],
      "run_list": "{{user `ami_run_list`}}",
      }
    }

Tudo bem se você não priorizar o winRM, mas isso deve ser um bug de desempenho ao invés de um aprimoramento. Os tempos de cozimento são intoleráveis, mesmo em uma lista de livros de receitas de tamanho médio. O nosso é <3Mb, mas o upload leva 25 minutos!

Esta página foi útil?
0 / 5 - 0 avaliações