Executando um script antes dos pacotes serem instalados a partir do requirements.txt

1

Meu aplicativo tem algumas condições de pré-requisito que significam que as instalações dos requisitos não funcionarão até que alguns scripts sejam executados.

Estive lendo a documentação sobre como personalizar o contêiner Python mas não deixa claro como você controla quando um script em .ebextensions é executado e todos os testes que fiz sugerem que ele acontece após o aplicativo ser implantado ou menos depois que os pacotes do requirements.txt forem instalados usando pip.

Esta postagem nos fóruns da AWS recomenda a criação de um script com um nome de arquivo que o insere na pasta hooks, mas isso não é aparentemente recomendado:

Dropping files directly into the hooks directories is risky as this is not the documented method, is different in some containers and may change in the future.

Gostaria de saber se alguém configurou com êxito um script para ser executado antes do arquivo requirements.txt e, em caso afirmativo, o que posso estar fazendo de errado.

Este é o meu arquivo .ebextensions:

packages:
  yum:
    # packages needed for my app

files:
    "/home/ec2-user/setup-script.sh":
        mode: "00755"
        owner: ec2-user
        group: ec2-user
        encoding: plain
        content: |
            #!/bin/bash
            echo $(date -u) >> /tmp/debug.log
            echo "Running as $(whoami)" >> /tmp/debug.log
            # rest of script
commands:
    01-setup-script:
        command: "sh -x /home/ec2-user/setup-script.sh"

A implantação é interrompida no meio da instalação dos requisitos e não parece executar o script ou atualizar o script como existe na pasta do usuário.

    
por Jordan Reiter 02.11.2015 / 16:44

1 resposta

0

Ok, acontece que o script de fato é executado antes de todo o resto. Parece que houve um erro no próprio script que significa que ele não foi executado corretamente e é por esse motivo que ele não configurou a instância corretamente.

Descobri isso observando a saída de /var/log/eb-activity.log

Então, acho que sempre confira a saída dos seus scripts com cuidado! Não faria mal adicionar set -e na parte superior do script, de forma que ele interrompesse a execução quando ocorresse um erro.

    
por 02.11.2015 / 20:44