Cela faisait quelques années que je n'avais pas fait de travail sérieux
utilisant le nuage Amazon. Il m'a fallu un petit moment pour retrouver mes
marques et m'adapter aux changements. En particulier, les instances à plus
petit prix, t2.nano
ne sont plus accessible que depuis les nuages virtuels
privés (« Virtual Private Cloud », VPC), et j'ai eu un peu de mal à trouver
comment en créer un simple. Je pense qu'une des raisons est que les
utilisateurs arrivés après le 18 mars 2013 on automatiquement un VPC par
défaut et que les autres
ont déjà créé leur VPC depuis longtemps. Au final, ce n'était pas compliqué du
tout. C'est certainement pour ça que je n'avais pas trouvé de tutoriel à ce
sujet.
En résumé il faut d'abords créer un VPC. Pour lancer une instance de temps en
temps, la plage IP privée importe peu. Les VPCs par défaut utilisent
172.31.0.0/16
; alors faisons de même.
CIDR_BLOCK=172.31.0.0/16
aws ec2 create-vpc --cidr-block $CIDR_BLOCK
La commande renvoie un identifiant de VPC, que je stocke à la main dans la
variable VPC
par copié-collé. Le même principe sera répété pour chaque
commande créant quelque chose. On peut retrouver l'identifiant avec la
commande aws ec2 describe-vpcs
.
VPC=vpc-XXXXXXXX # Et ainsi de suite
Après, créer un sous-réseau. Là encore, pas la peine de faire compliqué, on peut
lui donner la plage IP entière. Je récupère l'identifiant renvoyé et le stocke
dans la variable SUBNET
. Pour que les instances reçoivent une IP publique comme
dans les VPCs par défaut et l'ancien comportement du nuage sans VPC, il faut activer
l'attribut MapPublicIpOnLaunch
.
aws ec2 create-subnet --vpc-id $VPC --cidr-block $CIDR_BLOCK
SUBNET=subnet-XXXXXXXX
aws ec2 modify-subnet-attribute --subnet-id $SUBNET --map-public-ip-on-launch
Ensuite, créer une passerelle (je récupère l'identifiant dans GATEWAY
) et
l'attacher au VPC.
aws ec2 create-internet-gateway
GATEWAY=igw-XXXXXXXX
aws ec2 attach-internet-gateway --internet-gateway-id $GATEWAY --vpc-id $VPC
Une table de routage a été créée automatiquement, et on peut trouver son
identifiant via la commande describe-route-tables
, pour créer ensuite une
route par défaut vers la passerelle.
aws ec2 describe-route-tables
ROUTETABLE=rtb-XXXXXXXX
aws ec2 create-route --route-table-id $ROUTETABLE --destination-cidr-block 0.0.0.0/0 --gateway-id $GATEWAY
Bien sûr, si on n'ouvre pas le trafic, on ne pourra pas contacter la machine... Ici, j'ouvre le port 22 pour un accès SSH.
aws ec2 describe-security-groups
SECURITY_GROUP=sg-XXXXXXXX
aws ec2 authorize-security-group-ingress --group-id $SECURITY_GROUP --protocol tcp --port 22 --cidr 0.0.0.0/0
Autre changement, Amazon distribue maintenant des outils libres pour la ligne de commande, qui sont plus complets qu'euca2ools.
Prochaine étape, je vais recommencer les tests utilisant l'installeur Debian dans le Nuage.