Я пытаюсь получить публичный IP-адрес из экземпляра, который я только запускаю - PullRequest
0 голосов
/ 06 июня 2019

Мне нужно перейти от раскрутки сервера с помощью интерфейса командной строки AWS к ssh во все это в одном сценарии. Я могу зайти так далеко, как загрузить идентификатор экземпляра в переменную, но мне нужно затем переформатировать его, чтобы отправить его в AWS, чтобы затем получить общедоступный IP-адрес.

#!/bin/bash

azid=`(hidden for obvious reasons)`
azpswd=`(hidden for obvious reasons)`
hostip=`curl http://icanhazip.com`
COUNTER=120

#make a file to hold json information
touch instance.txt

#login to azure requireing webpage (not needed on cloud9)
#az login -u $azid -p $azpswd

#make a key pair and add to a variable (only needed one time)
#mykey=`aws ec2 create-key-pair --key-name MyKeyPair`

#open ports on security group only needed one time
#aws ec2 authorize-security-group-ingress --group-id sg-################# --protocol tcp --port 22 --cidr $hostip/32
#aws ec2 authorize-security-group-ingress --group-id sg-################# --protocol tcp --port 80 --cidr 0.0.0.0/0
#aws ec2 authorize-security-group-ingress --group-id sg-################# --protocol tcp --port 8080 --cidr 0.0.0.0/0
#aws ec2 authorize-security-group-ingress --group-id sg-################# --protocol tcp --port 32400 --cidr 0.0.0.0/0

#launch instance and add ouptut to variable 
aws ec2 run-instances --image-id ami-024a64a6685d05041 --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-################# --subnet-id subnet-################# > instance.txt 

#pull instance id from instance.txt
inid=`grep "InstanceId" instance.txt`

#testing
echo $inid

#wait for vm to spin up
for ((i=COUNTER; i>=1; i--))
do sleep 1
    echo $i
done

#get public ip from instance id
inip=`aws ec2 describe-instances --instance-ids $inid | grep PublicIpAddress`

#test
echo $inip

#ssh into freshly spun up server
ssh -i 'MyKeyPair.pem' ubuntu@$inip

Извлечение идентификатора экземпляра из файла json, а затем переформатирование его для работы с aws ec2 describe-instances, чтобы затем сбросить общедоступный ip после запуска сервера. Затем, после всего этого, вставьте в него файл кикстарта, чтобы только что запущенный сервер запустил plex в докере.

1 Ответ

2 голосов
/ 06 июня 2019

Если вы хотите установить программное обеспечение на экземпляр Amazon EC2 после того, как он запускается в первый раз , вам следует предоставить сценарий через Данные пользователя .

См .: Запуск команд в вашем экземпляре Linux при запуске - Amazon Elastic Compute Cloud

Скрипт будет работать как root. Чтобы отладить скрипт, посмотрите:

/var/log/cloud-init-output.log

Этот метод используется всеми пользователями AWS и гораздо более надежен, чем метод, который вы пытаетесь выполнить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...