Come Automatizzare la Creazione di AWS Macchine Virtuali da Riga di Comando

0
35

È facile per il lancio di nuove istanze EC2 Console, ma a volte è necessario automatizzare il compito da uno script di shell. In questo caso, il AWS CLI ha esteso i comandi per l’avvio di istanze dalla riga di comando.

Che cosa Hai Bisogno

Per iniziare, avrete bisogno di AWS CLI installato e configurato con un IAM utente che ha accesso alla creazione di nuove istanze.

A meno che non si desidera automatizzare la creazione di loro, avrete bisogno di un gruppo di protezione esistente con le regole già configurato. Mentre l’interfaccia web crea un nuovo gruppo per ogni istanza per impostazione predefinita, è possibile riutilizzare i gruppi di protezione per qualsiasi numero di istanze. Tenete a mente, però, che una porta apre a un gruppo di protezione che porta in ogni istanza.

Se si desidera creare un nuovo gruppo di protezione dalla riga di comando, è possibile creare e aprire le porte con i seguenti comandi:

aws ec2 creare-sicurezza-gruppo-gruppo-nome NewSecurityGroup –descrizione “Creato da CLI”
aws ec2 autorizzare-sicurezza-gruppo-ingresso –nome del gruppo NewSecurityGroup –protocollo tcp –porta 22 –cidr 0.0.0.0/0

A seconda di quale percorso si sceglie, è necessario prendere nota del gruppo di protezione ID. È possibile trovare questo da riga di comando descrivendo il gruppo di protezione:

aws ec2 descrivere-sicurezza-gruppi-gruppo-nomi EC2SecurityGroup

Che mostra info sul gruppo, incluso l’ID del gruppo.

Avrete bisogno di prendere nota del nome della coppia di chiavi utilizzata per accedere a istanze. Per semplicità, si probabilmente desidera utilizzare la stessa chiave, piuttosto che crearne uno nuovo per ogni nuova istanza che si crea.

Avrete bisogno di un AMI per lanciare l’immagine. Questo può essere un fresco AMI, come Amazon Linux 2 o Ubuntu Server LTS 18.04, o può essere personalizzato AMI con software preinstallato. (più su che in giù sotto).

Avrete bisogno di conoscere la tua subnet ID. Si desidera avviare tutte le vostre istanze nella stessa subnet e sicuramente la stessa disponibilità di zona, in quanto non ci sono costi per il trasferimento di dati tra le zone. È possibile trovare la subnet ID AWS EC2 console, o dalla riga di comando con jq:

aws ec2 descrivere-istanze | jq ‘.Prenotazioni[0].Istanze[0].NetworkInterfaces[0].SubnetId’

Creare Istanze da Riga di Comando

È possibile avviare istanze mediante l’esecuzione di istanze di comando. Questo comando ha un sacco di opzioni, ma quelli che contano di più sono:

aws ec2 run-istanze
–immagine-id ami-00000000
–count 1
–istanza di tipo t2.micro
–nome-chiave MyKeyPair
–sicurezza-group-id sg-00000000
–subnet-id subnet-00000000
–tag-specifiche ‘ResourceType=istanza,Tags=[{Key=Name,Value=cli-generato}]’

Dovrete sostituire la AMI ID, chiave di coppia di nome, gruppo di protezione ID, e la subnet ID con i propri valori. Il finale –tag-specifica direttiva assegna il nome all’istanza, che si desidera modificare, come pure.

Questo lancerà una base di t2.micro micro istanza nel tuo account di default regione. Questo comando sarà in uscita un sacco di dati in formato JSON:

{
“OwnerId”: “123456789012”,
“ReservationId”: “r-5875ca20”,
“Gruppi”: [
{
“Nomegruppo”: “il mio-sg”,
“Idgruppo”: “sg-903004f8”
}
],
“Istanze”: [
{
“Monitoraggio”: {
“State”: “disabilitato”
},
“PublicDnsName”: null,
“Piattaforma”: “windows”,
“State”: {
“Codice”: 0,
“Nome”: “in sospeso”
},
“EbsOptimized”: false,
“LaunchTime”: “2013-07-19T02:42:39.000 Z”,
“PrivateIpAddress”: “10.0.1.114”,
“ProductCodes”: [],
“VpcId”: “vpc-1a2b3c4d”,
“InstanceId”: “i-5203422c”,
“ImageId”: “ami-173d747e”,
“PrivateDnsName”: ip-10-0-1-114.ec2.interno,
“Nome”: “MyKeyPair”,
“SecurityGroups”: [
{
“Nomegruppo”: “il mio-sg”,
“Idgruppo”: “sg-903004f8”
}
],
“ClientToken”: null,
“SubnetId”: “subnet-6e7f829e”,
“InstanceType”: “t2.micro”,
“NetworkInterfaces”: [
{
“Status”: “in uso”,
“SourceDestCheck”: true,
“VpcId”: “vpc-1a2b3c4d”,
“Descrizione”: “interfaccia di rete Principale”,
“NetworkInterfaceId”: “eni-a7edb1c9”,
“PrivateIpAddresses”: [
{
“PrivateDnsName”: “ip-10-0-1-114.ec2.interno”,
“Primario”: true,
“PrivateIpAddress”: “10.0.1.114”
}
],
“PrivateDnsName”: “ip-10-0-1-114.ec2.interno”,
“Allegato”: {
“Status”: “attaccato”,
“DeviceIndex”: 0,
“DeleteOnTermination”: true,
“AttachmentId”: “eni-allegare-52193138”,
“AttachTime”: “2013-07-19T02:42:39.000 Z”
},
“Gruppi”: [
{
“Nomegruppo”: “il mio-sg”,
“Idgruppo”: “sg-903004f8”
}
],
“SubnetId”: “subnet-6e7f829e”,
“OwnerId”: “123456789012”,
“PrivateIpAddress”: “10.0.1.114”
}
],
“SourceDestCheck”: true,
“Placement”: {
“Locazione”: “default”,
“Nomegruppo”: null,
“AvailabilityZone”: “ci-ovest-2b”
},
“Hypervisor”: “xen”,
“BlockDeviceMappings”: [
{
“DeviceName”: “/dev/sda1”,
“Ebs”: {
“Status”: “attaccato”,
“DeleteOnTermination”: true,
“VolumeId”: “vol-877166c8”,
“AttachTime”: “2013-07-19T02:42:39.000 Z”
}
}
],
“Architettura”: “x86_64”,
“StateReason”: {
“Message”: “in sospeso”,
“Codice”: “in sospeso”
},
“RootDeviceName”: “/dev/sda1”,
“VirtualizationType”: “hvm”,
“RootDeviceType”: “ebs”,
“Tags”: [
{
“Value”: “Istanza”,
“Key”: “Name”
}
],
“AmiLaunchIndex”: 0
}
]
}

Probabilmente si vorrà tubo di un file e salvarlo per un riferimento futuro. È possibile utilizzare un programma di utilità come jq a lavorare con JSON sulla riga di comando, o di importare in Python o Nodo script per un facile accesso.

Una volta creato l’istanza, sarete in grado di accedere via SSH dal suo indirizzo IP pubblico, o un indirizzo IP privato, se si dispone di un server OpenVPN in esecuzione nella sottorete.

Impostazione di uno Script di Installazione

AWS consente di passare uno script di installazione per l’istanza che verrà eseguito al momento del lancio. In questo script, è possibile eseguire automaticamente ogni configurazione della macchina è necessario fare, come ad esempio l’installazione e configurazione di programmi.

Per passare lo script da riga di comando (CLI, ti consigliamo di utilizzare i –dati utente opzione, e passare i file utilizzando il file://:

aws ec2 run-istanze
–immagine-id ami-00000000
–count 1
–istanza di tipo t2.micro
–nome-chiave MyKeyPair
–sicurezza-group-id sg-00000000
–subnet-id subnet-00000000
–tag-specifiche ‘ResourceType=istanza,Tags=[{Key=Name,Value=cli-generato}]’
–l’utente-dati file://startup_script.sh

Questo verrà eseguito solo una volta e non ad ogni riavvio.

Creazione di un Custom AMI

Amazon le Immagini della Macchina (AMIs) sono un modo semplice per creare copie di server con software preinstallato, quindi non è necessario eseguire uno script di installazione ogni volta. Questo può rendere il processo di avvio molto più veloce, in quanto non sarà necessario attendere che il software da installare su nuove istanze.

Per crearne uno, è probabile che tu voglia partire da zero, per assicurarsi che tutto sia corretto, anche se si può semplicemente utilizzare il vostro server preconfigurato come un modello.

Se stai partendo da zero, creare un nuovo t2.micro istanza con una base AMI come Amazon Linux da 2 a servire come punto di partenza. Configurare con tutti i programmi di cui hai bisogno, e verificare che tutto funzioni come previsto.

Quindi, dal AWS EC2 console, fare clic destro sull’istanza e scegliete Immagine > Immagine:

Questo creerà automaticamente un AMI basata sull’istanza. È inoltre possibile creare AMI basato su snapshot, ma questa procedura guidata crea uno snapshot per voi per creare la AMI.

Si AMI può prendere un po ‘ per creare, ma una volta finito, sarete in grado di accedere in AMI scheda di EC2 console. Si può prendere la AMI ID e utilizzarlo per creare nuove istanze di base che AMI. Si può anche usare come base per un Autoscaling Gruppo si lancia modello, che è coperto nella nostra guida all’utilizzo di AMIs.