Automatisera Skapa AWS Virtuella Maskiner från kommandoraden

0
193

Det är lätt att starta nya instanser från EC2-Konsolen, men ibland behöver man för att automatisera uppgifter från ett shell script. I så fall, AWS CLI har omfattande kommandon för att starta fall från kommandoraden.

Vad Du Behöver

För att börja, behöver du AWS CLI installerad och konfigurerad med en IAM användare som har tillgång till att skapa nya instanser.

Om du vill automatisera skapandet av dem, behöver du en befintlig grupp säkerhet med de regler som redan är konfigurerad. Medan webb-gränssnitt skapar en ny grupp för varje instans av standard, kan du återanvända säkerhet grupper för valfritt antal instanser. Tänk dock på, som en port som har öppnats i en säkerhetsgrupp som kommer att öppna porten för varje instans.

Om du vill skapa en ny säkerhetsgrupp från kommandoraden du kan skapa och öppna portar med följande kommandon:

aws ec2 skapa-säkerhet-för-gruppen-en grupp-namn NewSecurityGroup –beskrivning “som Skapats från CLI”
aws ec2 bemyndiga-säkerhet-för-gruppen-ingress –grupp-namn NewSecurityGroup –protokollet tcp –port 22 –cidr-0.0.0.0/0

Oavsett vilken rutt du väljer, kommer du behöver för att göra anteckningar om säkerhet grupp-ID. Du kan hitta denna från kommandoraden genom att beskriva gruppen:

aws ec2 beskriva-säkerhet-grupper-grupp-namn EC2SecurityGroup

Som kommer att visa information om koncernen, bland annat grupp-ID.

Du måste anteckna namnet på nyckeln par som du använder för att komma åt fall. För enkelhetens skull, du förmodligen vill använda samma nyckelpar, snarare än att skapa ett nytt för varje ny instans som du skapar.

Behöver du en AMI att lansera bilden från. Detta kan vara en ny AMI, som Amazon Linux 2 eller Ubuntu LTS 18.04, eller det kan vara din egna AMI med förinstallerad programvara. (mer om det nedan).

Du behöver veta din subnet ID. Du kommer att vilja starta alla dina instanser i samma subnät och definitivt i samma tillgänglighet zon, eftersom det är kostnader för att överföra data mellan olika zoner. Du kan hitta subnet ID från AWS EC2-konsol, eller från kommandoraden med jq:

aws ec2 beskriva-fall | jq ‘.Bokningar[0].Fall[0].NetworkInterfaces[0].SubnetId’

Skapa Instanser från kommandoraden

Du kan starta fall med hjälp av run-fall-kommandot. Detta kommando har en hel del alternativ, men de som betyder mest är:

aws ec2 kör-instanser
– bild-id ami-00000000
–count 1
–exempel-typ t2.micro
–key-namn MyKeyPair
–säkerhet-grupp-id: n sg-00000000
–subnet-id subnet-00000000
–tag-specifikationer ‘ResourceType=instans,Tags=[{Key=Namn Value=cli-genererade}]’

Du måste ersätta den AMI-ID, nyckelpar namn, säkerhet grupp-ID för, och subnet ID med dina egna värden. Den slutliga –tag-specifikation direktiv anger namn till exempel, som du kommer att vilja förändras.

Detta kommer att lansera en grundläggande t2.micro micro exempel på kontot som är standard regionen. Detta kommando för att mata ut en hel del av JSON-data:

{
“OwnerId”: “123456789012”,
“ReservationId”: “r-5875ca20”,
“Grupper”: [
{
“Gruppnamn”: “min-sg”,
“Gid”: “sg-903004f8”
}
],
“Fall”: [
{
“Övervakning”: {
“Staten”: “funktionshindrade”
},
“PublicDnsName”: null,
“Plattform”: “windows”,
“Staten”: {
“Kod”: 0,
“Name”: “väntan”
},
“EbsOptimized”: false,
“LaunchTime”: “2013-07-19T02:42:39.000 Z”,
“PrivateIpAddress”: “10.0.1.114”,
“ProductCodes”: [],
“VpcId”: “vpc-1a2b3c4d”,
“InstanceId”: “jag-5203422c”,
“ImageId”: “ami-173d747e”,
“PrivateDnsName”: ip-10-0-1-114.ec2.inre,
“Nyckel”: “MyKeyPair”,
“SecurityGroups”: [
{
“Gruppnamn”: “min-sg”,
“Gid”: “sg-903004f8”
}
],
“ClientToken”: null,
“SubnetId”: “subnet-6e7f829e”,
“InstanceType”: “t2.micro”,
“NetworkInterfaces”: [
{
“Status”: “in-use”,
“SourceDestCheck”: true,
“VpcId”: “vpc-1a2b3c4d”,
“Description”: “Primära nätverksgränssnitt”,
“NetworkInterfaceId”: “eni-a7edb1c9”,
“PrivateIpAddresses”: [
{
“PrivateDnsName”: “ip-10-0-1-114.ec2.inre”,
“Primär”: true,
“PrivateIpAddress”: “10.0.1.114”
}
],
“PrivateDnsName”: “ip-10-0-1-114.ec2.inre”,
“Bifogad fil”: {
“Status”: “fäst”,
“DeviceIndex”: 0,
“DeleteOnTermination”: true,
“Fil”: “eni-fast-52193138”,
“AttachTime”: “2013-07-19T02:42:39.000 Z”
},
“Grupper”: [
{
“Gruppnamn”: “min-sg”,
“Gid”: “sg-903004f8”
}
],
“SubnetId”: “subnet-6e7f829e”,
“OwnerId”: “123456789012”,
“PrivateIpAddress”: “10.0.1.114”
}
],
“SourceDestCheck”: true,
“Placering”: {
“Hyresrätt”: “default”,
“Gruppnamn”: null,
“AvailabilityZone”: “usa-west-2b”
},
“Hypervisor”: “xen”,
“BlockDeviceMappings”: [
{
“Enhetsnamn”: “/dev/sda1”,
“Ebs: {
“Status”: “fäst”,
“DeleteOnTermination”: true,
“VolumeId”: “vol-877166c8”,
“AttachTime”: “2013-07-19T02:42:39.000 Z”
}
}
],
“Arkitektur”: “x86_64”,
“StateReason”: {
“Message”: “väntan”,
“Kod”: “väntan”
},
“RootDeviceName”: “/dev/sda1”,
“VirtualizationType”: “hvm”,
“RootDeviceType”: “ebs,
“Tags”: [
{
“Värde”: “MyInstance”,
“Key”: “Namn”
}
],
“AmiLaunchIndex”: 0
}
]
}

Vill du förmodligen rör detta till en fil och spara den för senare bruk. Du kan använda ett verktyg som jq att arbeta med JSON på kommandoraden, eller importera den till en Python eller Nod script för enkel åtkomst.

När exempel är skapat, kommer du att kunna komma åt den via SSH från sin publika IP-adress, eller privata IP-adressen om du har en OpenVPN-server som körs i din nätmask.

Att sätta Upp en Installation av Skript

AWS kan du skicka en installation manus till den instans som ska sprang vid lanseringen. I detta skript kan du automatiskt utföra konfiguration av maskinen du behöver göra, som att installera och konfigurera program.

För att klara skript från CLI, du vill använda den –user-data alternativet, och passera fil med hjälp av arkiv://:

aws ec2 kör-instanser
– bild-id ami-00000000
–count 1
–exempel-typ t2.micro
–key-namn MyKeyPair
–säkerhet-grupp-id: n sg-00000000
–subnet-id subnet-00000000
–tag-specifikationer ‘ResourceType=instans,Tags=[{Key=Namn Value=cli-genererade}]’
–user-data file://startup_script.sh

Detta kommer bara köra en gång och inte vid varje omstart.

Att skapa en Egen AMI

Amazon Machine Images (AMIs) är ett enkelt sätt att skapa kopior av servrar med programvara förinstallerad, så du behöver inte köra en installation script varje gång. Detta kan göra din boot-processen mycket snabbare, eftersom du inte behöver vänta för programvara att installera på nya fall.

För att skapa en, kommer du förmodligen vill börja om från början för att säkerställa att allt är korrekt, men du kan bara använda en förkonfigurerad server som en mall.

Om du börjar från scratch, skapa en ny t2.micro exempel med en bas AMI som Amazon Linux 2 för att tjäna som utgångspunkt. Konfigurera det med alla program du behöver, och kontrollera att allting fungerar som avsett.

Sedan, från AWS EC2 konsol, höger-klicka på ditt exempel och välja Bild – > Skapa Bilden:

Detta kommer automatiskt att skapa en AMI baserat på din instans. Du kan också skapa AMI bygger på ögonblicksbilder, men den här guiden kommer att skapa en bild för dig att skapa AMI med.

Du AMI kan ta lite för att skapa, men när det är gjort kommer du att kunna få tillgång till den i AMI-fliken i EC2-konsolen. Du kan ta AMI-ID och använda den för att skapa nya instanser som är baserade på att AMI. Du kan också använda den som bas för en Autoscaling Gruppen lanserar mall, som är täckt i vår guide till att använda AMIs.