Est-il possible de référencer les propriétés d'environnement de conteneur PARAM1/PARAM2 etc. à partir des fichiers de configuration .ebextensions. Si c'est le cas, comment? J'ai essayé $ PARAM1 mais cela semblait être une valeur vide.
Je souhaite que le nom d'hôte au démarrage contienne DEV, QA ou PROD, que je transmets à mon conteneur via la variable d'environnement PARAM1.
commands:
01-set-correct-hostname:
command: hostname myappname{$PARAM1}.com
En fin de compte, vous ne pouvez le faire que dans la section container_commands
et non dans la section commands
.
Cela marche:
container_commands:
01-set-correct-hostname:
command: "hostname myappname{$PARAM1}.com"
Voir http://docs.aws.Amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-container_commands pour plus d'informations.
Voici ce qui a fonctionné pour moi. J'ai essayé l'approche acceptée et elle n'a pas produit le résultat souhaité (des accolades ont été incluses dans la sortie). Le dépannage des commandes exécutées à partir d'un fichier .config lors du téléchargement sur Elastic Beanstalk constitue également un défi (ou je ne sais tout simplement pas où chercher).
Environnement AWS:
Propriétés d'environnement Elastic Beanstalk (Configuration -> Configuration logicielle -> Propriétés d'environnement):
Exemple de fichier .config inclus dans le dossier .ebextensions de l'artefact de déploiement:
container_commands:
0_test-variable:
cwd: /tmp
command: "touch ${HELLO_VARIABLE}_0_.txt"
1_test-variable:
cwd: /tmp
command: "touch {$HELLO_VARIABLE}_1_.txt"
2_test-variable:
cwd: /tmp
command: "touch $HELLO_VARIABLE_2_.txt"
Une fois que l'artefact a été déployé à l'aide d'Elastic Beanstalk, le répertoire/tmp d'une instance EC2 contient les fichiers suivants (notez les accolades et la position de $):
Pour rendre les variables d'environnement disponibles à l'étape des commandes, je les analyse dans un fichier source bash.
000001.envvars.config
...
commands:
000001_envvars_to_bash_source_file:
command: |
# source our elastic beanstalk environment variables
/opt/elasticbeanstalk/bin/get-config --output YAML environment|Perl -ne "/^\w/ or next; s/: /=/; print qq|\$_|" > /var/tmp/envvars
chmod 400 /var/tmp/envvars
...
Alors j'utilise: -
source /var/tmp/envvars
dans les commandes suivantes.
La réponse acceptée est assez obsolète.
Vous pouvez maintenant utiliser le fichier /opt/elasticbeanstalk/support/envvars
qui est déjà un script Shell prêt à être recherché:
commands:
01_update_composer:
command: |
. /opt/elasticbeanstalk/support/envvars
/usr/bin/composer.phar self-update
container_commands:
01_run_composer:
command: |
composer.phar install --no-scripts --no-dev # already has user-specified env variables
Mettre à jour:
Après des recherches plus approfondies, container_commands:
inclut vos variables d’environnement, mais pas commands:
.
Ce blog décrit en détail différentes options pour y parvenir.
https://www.onica.com/blog/how-to-call-and-export-variables-in-elastic-beanstalk/