3 votes

Quel est le point d'entrée/commande requis pour exécuter un conteneur etcd dans ECS ?

Avec tous les points d'entrée et les commandes que j'ai essayés jusqu'à présent, j'obtiens cette erreur "no such file or directory". Je dois : 1) Définir une variable env pour HostIP en utilisant une requête curl spéciale à AWS. 2) Exécuter le conteneur etcd en lui donnant des arguments qui utilisent $HostIP.

Il semble qu'il prenne un tableau de chaînes de caractères, mais je ne suis pas sûr de savoir comment cela fonctionne. Je pense que les commandes sont :

/bin/sh -c "export export HostIP=$(curl -s 169.254.169.254/latest/meta-data/local-ipv4)"

y

etcd -advertise-client-urls http://${HostIP}:2379,http://${HostIP}:4001
 -other-similar-args...

mais je dois les changer pour qu'ils soient séparés par des virgules.

1) Comment échapper aux virgules/aux guillemets ? 2) Dois-je utiliser une virgule et commencer une nouvelle chaîne pour chaque espace ? 3) Quelqu'un a-t-il un exemple fonctionnel ????

Mise à jour : J'ai fait un conteneur personnalisé avec un entrypoint.sh qui contient ceci :

 #!/bin/sh export HOST=$(curl -s 169.254.169.254/latest/meta-data/local-hostname) export HostIP=$(curl -s 169.254.169.254/latest/meta-data/local-ipv4)

 /usr/local/bin/etcd  -name etcd0 \  -advertise-client-urls
 http://${HostIP}:2379,http://${HostIP}:4001 \  -listen-client-urls
 http://0.0.0.0:2379,http://0.0.0.0:4001 \ 
 -initial-advertise-peer-urls http://${HostIP}:2380 \  -listen-peer-urls http://0.0.0.0:2380 \  -initial-cluster-token etcd-cluster-1 \  -initial-cluster etcd0=http://${HostIP}:2380 \ 
 -initial-cluster-state new

Le problème est que le conteneur démarre mais utilise localhost au lieu de 0.0.0.0 ou de l'IP que nous récupérons avec curl depuis AWS. Il semble subir une sorte d'erreur et revenir à localhost.

0voto

Adam Byrtek Points 5791

Lorsque vous exécutez des tâches à partir du tableau de bord ECS, les arguments de la ligne de commande doivent être séparés par des virgules, mais gardez à l'esprit que l'ensemble de la chaîne transmise à sh -c est un argument unique interprété par le sous-ensemble.

En d'autres termes, la définition de votre tâche devrait ressembler à ceci :

/bin/sh,-c,export HostIP=$(curl -s 169.254.169.254/latest/meta-data/local-ipv4) && etcd ...

Cependant, si vous avez le contrôle de l'image, vous pouvez envisager d'écrire un script d'entrée personnalisé qui encapsule tout cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X