Het Automatiseren van het Maken van AWS Virtuele Machines vanaf de opdrachtregel

0
32

Het is gemakkelijk om de lancering van nieuwe exemplaren van de EC2-Console, maar soms moet je voor het automatiseren van de taak van een shell-script. In dat geval is de AWS CLI heeft een uitgebreide commando ‘ s voor de lancering van exemplaren uit de command line.

Wat Je Nodig hebt

Om te beginnen moet je de AWS CLI is geïnstalleerd en geconfigureerd met een IAM gebruiker die toegang heeft tot het maken van nieuwe exemplaren.

Tenzij u wilt automatiseren van het maken van hen, moet u een bestaande security groep met de voorschriften die reeds geconfigureerd. Terwijl de web-interface maakt een nieuwe groep voor elk exemplaar standaard kunt u het hergebruik security groepen, voor elk gewenst aantal exemplaren. Houd in gedachten, echter, dat een poort geopend in een security group zal open die poort op elk exemplaar.

Als u wilt maken van een nieuwe security groep van de opdrachtregel, kunt u voor het maken en openen van poorten worden met de volgende commando ‘ s:

aws ec2 maken-security-groep, groep-naam NewSecurityGroup –beschrijving “Gemaakt van CLI”
aws ec2 machtigen-security-groep-indringing –groep-naam NewSecurityGroup –protocol tcp –poort 22 –cidr 0.0.0.0/0

Welke route u ook kiest, u zult moeten maken opmerking van de veiligheid van de groep-ID. U vindt deze vanaf de commandoregel door het beschrijven van de veiligheid van de groep:

aws ec2 beschrijven-security-groepen-groep-namen EC2SecurityGroup

Die toon info over de groep, met inbegrip van de groep-ID.

Je nodig hebt om een notitie te maken van de naam van de sleutel paar dat u gebruikt om toegang te krijgen tot de gevallen. Ter wille van de eenvoud, u waarschijnlijk wilt gebruiken dezelfde sleutel, eerder dan het maken van een nieuwe voor elke instantie die u maakt.

Je moet een AMI aan de lancering van de afbeelding uit. Dit kan een frisse AMI, zoals Amazon Linux 2 of Ubuntu Server LTS-18.04, of het kan uw eigen aangepaste AMI met vooraf geïnstalleerde software. (meer informatie onderaan).

Je moet weten uw subnet-ID. Je wilt starten alle exemplaren in hetzelfde subnet en zeker in dezelfde beschikbaarheid zone, want er zijn kosten verbonden aan het overzetten van gegevens tussen de zones. U vindt het subnet-ID van de AWS EC2-console, of op de commando-regel met jq:

aws ec2 beschrijven-exemplaren | jq ‘.Reserveringen[0].Exemplaren[0].NetworkInterfaces[0].SubnetId’

Instanties maken vanaf de opdrachtregel

U kunt starten gevallen gebruik van de run-exemplaren opdracht. Deze opdracht heeft veel opties, maar degenen die het belangrijkst zijn:

aws ec2 run-exemplaren
–afbeelding-id ami-00000000
–tellen van 1
–exemplaar van het type t2.micro
–toets-naam MyKeyPair
–security-groep-id ‘ s sg-00000000
–subnet-id subnet-00000000
–tag-specificaties ‘ResourceType=aanleg,Labels=[{Key=Naam,Waarde=cli-gegenereerde}]’

Je hebt voor het vervangen van de AMI-ID, sleutelpaar naam, veiligheid groeps-ID in en subnet-ID met uw eigen waarden. De laatste –tag-specificatie richtlijn kent de naam van de instantie, die u wilt veranderen.

Dit zal een basis-t2.micro micro exemplaar in uw account de standaard regio. Dit commando output veel JSON-gegevens:

{
“OwnerId”: “123456789012”,
“ReservationId”: “r-5875ca20”,
“Groepen”: [
{
“Groepsnaam”: “mijn-sg”,
“GroupId”: “sg-903004f8”
}
],
“Instanties”: [
{
“Monitoring”: {
“State”: “disabled”
},
“PublicDnsName”: null,
“Platform”: “windows”,
“State”: {
“Code”: 0,
“Naam”: “pending”
},
“EbsOptimized”: false,
“LaunchTime”: “2013-07-19T02:42:39.000 Z”,
“PrivateIpAddress”: “10.0.1.114”,
“ProductCodes”: [],
“VpcId”: “vpc-1a2b3c4d”,
“InstanceId”: “ik-5203422c”,
“ImageId”: “ami-173d747e”,
“PrivateDnsName”: ip-10-0-1-114.ec2.interne,
“KeyName”: “MyKeyPair”,
“SecurityGroups”: [
{
“Groepsnaam”: “mijn-sg”,
“GroupId”: “sg-903004f8”
}
],
“ClientToken”: null,
“SubnetId”: “subnet-6e7f829e”,
“InstanceType”: “t2.micro”,
“NetworkInterfaces”: [
{
“Status”: “in gebruik”,
“SourceDestCheck”: true,
“VpcId”: “vpc-1a2b3c4d”,
“Description”: “het Primaire netwerk interface”,
“NetworkInterfaceId”: “eni-a7edb1c9”,
“PrivateIpAddresses”: [
{
“PrivateDnsName”: “ip-10-0-1-114.ec2.interne”,
“Primair”: true,
“PrivateIpAddress”: “10.0.1.114”
}
],
“PrivateDnsName”: “ip-10-0-1-114.ec2.interne”,
“Bijlage”: {
“Status”: “aangesloten”,
“DeviceIndex”: 0,
“DeleteOnTermination”: true,
“Bijlagenummer”: “eni-attach-52193138”,
“AttachTime”: “2013-07-19T02:42:39.000 Z”
},
“Groepen”: [
{
“Groepsnaam”: “mijn-sg”,
“GroupId”: “sg-903004f8”
}
],
“SubnetId”: “subnet-6e7f829e”,
“OwnerId”: “123456789012”,
“PrivateIpAddress”: “10.0.1.114”
}
],
“SourceDestCheck”: true,
“Plaatsing”: {
“Huur”: “standaard”,
“Groepsnaam”: null,
“AvailabilityZone”: “us-west-2b”
},
“Hypervisor”: “xen”,
“BlockDeviceMappings”: [
{
“DeviceName”: “/dev/hda1”,
“Ebs”: {
“Status”: “aangesloten”,
“DeleteOnTermination”: true,
“VolumeId”: “vol-877166c8”,
“AttachTime”: “2013-07-19T02:42:39.000 Z”
}
}
],
“Architectuur”: “x86_64”,
“StateReason”: {
“Message”: “pending”,
“Code”: “pending”
},
“RootDeviceName”: “/dev/hda1”,
“VirtualizationType”: “hvm”,
“RootDeviceType”: “ebs”,
“Tags”: [
{
“Value”: “MyInstance’,
“Key”: “Naam”
}
],
“AmiLaunchIndex”: 0
}
]
}

U zult waarschijnlijk willen deze pijp naar een bestand en opslaan voor latere referentie. U kunt gebruik maken van een hulpprogramma zoals jq werkt met JSON op de commando-regel, of importeren in een Python of een Knooppunt script voor een gemakkelijke toegang.

Nadat het exemplaar is gemaakt, zult u in staat om toegang te krijgen tot het over SSH van zijn openbare IP-adres, of privé-IP-adres als u een OpenVPN server die in uw subnet.

Het opzetten van een Installatie Script

AWS kunt u een script install het exemplaar dat zal worden uitgevoerd bij het opstarten. In dit script, u kunt het automatisch uitvoeren van een configuratie van de computer die u hoeft te doen, zoals het installeren en configureren van programma ‘ s.

Te slagen voor het script van de CLI, wil je gebruik maken van de –user-data-optie en geef het bestand met file://:

aws ec2 run-exemplaren
–afbeelding-id ami-00000000
–tellen van 1
–exemplaar van het type t2.micro
–toets-naam MyKeyPair
–security-groep-id ‘ s sg-00000000
–subnet-id subnet-00000000
–tag-specificaties ‘ResourceType=aanleg,Labels=[{Key=Naam,Waarde=cli-gegenereerde}]’
–user-data file://startup_script.sh

Dit zal slechts een keer uitgevoerd, en niet op elke herstart van de computer.

Het maken van een Aangepaste AMI

Amazon Machine Images (AMIs) zijn een gemakkelijke manier om het maken van kopieën van servers met vooraf geïnstalleerde software, zodat u niet voor het uitvoeren van een installatie script elke keer. Dit kan uw boot proces veel sneller, je hoeft niet te wachten voor de software te installeren op de nieuwe exemplaren.

Om er een te maken, zult u waarschijnlijk willen beginnen om te zorgen dat alles correct is, maar je kan gewoon gebruik maken van de vooraf geconfigureerde server als een sjabloon.

Als je vanuit het niets te beginnen, het maken van een nieuwe t2.micro-exemplaar met een base AMI als Amazon Linux 2 om te dienen als uitgangspunt. Configureren met alle programma ‘ s die u nodig hebt en controleer of alles werkt zoals de bedoeling is.

Vervolgens, van de AWS EC2-console met de rechtermuisknop op uw aanleg en kies Image > Image Aanmaken:

Dit maakt automatisch een AMI op basis van uw exemplaar. U kunt ook AMI is gebaseerd op momentopnamen, maar zal de wizard voor het maken van een snapshot te maken van de AMI-met.

U AMI kan het een beetje te maken, maar als het eenmaal is gedaan zult u in staat om toegang te krijgen in de AMI-tabblad van de EC2-console. U kunt de AMI-ID en gebruiken voor het maken van nieuwe gevallen op basis van die AMI. U kunt het ook gebruiken als de basis voor een Autoscaling Groep starten sjabloon, die is opgenomen in onze handleiding voor het gebruik van AMIs.