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.