first try
This commit is contained in:
commit
5133d0f102
5
Dockerfile
Normal file
5
Dockerfile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
FROM ubuntu
|
||||||
|
COPY ./webservice /
|
||||||
|
RUN chmod +x ./webservice
|
||||||
|
EXPOSE 80:8080/tcp
|
||||||
|
CMD ./webservice
|
75
main.py
Normal file
75
main.py
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
import boto3
|
||||||
|
import argparse
|
||||||
|
import time
|
||||||
|
from user_data import user_data
|
||||||
|
|
||||||
|
# Stałe
|
||||||
|
PREFIX = 's464953'
|
||||||
|
REGION = 'us-east-1'
|
||||||
|
AMI_ID = 'ami-0b5eea76982371e91'
|
||||||
|
INSTANCE_TYPE = 't2.micro'
|
||||||
|
MIN_INSTANCES = 2
|
||||||
|
MAX_INSTANCES = 5
|
||||||
|
LOAD_BALANCER_PORT = 80
|
||||||
|
TARGET_PORT = 8080
|
||||||
|
|
||||||
|
def main(aws_access_key_id, aws_secret_access_key, aws_session_token, default_vpc):
|
||||||
|
ec2 = boto3.resource(
|
||||||
|
'ec2',
|
||||||
|
region_name=REGION,
|
||||||
|
aws_access_key_id=aws_access_key_id,
|
||||||
|
aws_secret_access_key=aws_secret_access_key,
|
||||||
|
aws_session_token=aws_session_token,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Tworzenie key pair
|
||||||
|
key_pair = ec2.create_key_pair(
|
||||||
|
KeyName=PREFIX + '-key',
|
||||||
|
KeyType='ed25519',
|
||||||
|
KeyFormat='pem',
|
||||||
|
)
|
||||||
|
|
||||||
|
# Tworzenie security group
|
||||||
|
security_group = ec2.create_security_group(
|
||||||
|
Description=PREFIX + '-group',
|
||||||
|
GroupName=PREFIX + '-group',
|
||||||
|
VpcId=default_vpc,
|
||||||
|
)
|
||||||
|
|
||||||
|
security_group.authorize_ingress(
|
||||||
|
GroupId=security_group.group_id,
|
||||||
|
IpPermissions=[
|
||||||
|
{
|
||||||
|
'IpProtocol': 'tcp',
|
||||||
|
'FromPort': LOAD_BALANCER_PORT,
|
||||||
|
'ToPort': LOAD_BALANCER_PORT,
|
||||||
|
'IpRanges': [{'CidrIp': '0.0.0.0/0'}],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# Tworzenie Launch Template
|
||||||
|
ec2_client = boto3.client('ec2', region_name=REGION)
|
||||||
|
launch_template = ec2_client.create_launch_template(
|
||||||
|
LaunchTemplateName=PREFIX + '-LaunchTemplate',
|
||||||
|
LaunchTemplateData={
|
||||||
|
'ImageId': AMI_ID,
|
||||||
|
'InstanceType': INSTANCE_TYPE,
|
||||||
|
'KeyName': key_pair.name,
|
||||||
|
'UserData': user_data,
|
||||||
|
'SecurityGroupIds': [security_group.group_id],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Reszta kodu (bez zmian)
|
||||||
|
# ...
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
parser = argparse.ArgumentParser(description="Create AWS infrastructure")
|
||||||
|
parser.add_argument('--aws_access_key_id', required=True, help='AWS Access Key ID')
|
||||||
|
parser.add_argument('--aws_secret_access_key', required=True, help='AWS Secret Access Key')
|
||||||
|
parser.add_argument('--aws_session_token', required=True, help='AWS Session Token')
|
||||||
|
parser.add_argument('--default_vpc', required=True, help='Default VPC ID')
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
main(args.aws_access_key_id, args.aws_secret_access_key, args.aws_session_token, args.default_vpc)
|
19
scipt.sh
Normal file
19
scipt.sh
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Pobieranie danych AWS CLI..."
|
||||||
|
AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id)
|
||||||
|
AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key)
|
||||||
|
AWS_SESSION_TOKEN=$(aws sts get-session-token --duration-seconds 3600 --query 'Credentials.SessionToken' --output text)
|
||||||
|
DEFAULT_VPC=$(aws ec2 describe-vpcs --filters "Name=isDefault,Values=true" --query 'Vpcs[0].VpcId' --output text)
|
||||||
|
|
||||||
|
if [[ -z "$AWS_ACCESS_KEY_ID" || -z "$AWS_SECRET_ACCESS_KEY" || -z "$AWS_SESSION_TOKEN" || -z "$DEFAULT_VPC" ]]; then
|
||||||
|
echo "Brak wymaganych danych! Sprawdź konfigurację AWS CLI."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Uruchamianie main.py..."
|
||||||
|
python3 main.py \
|
||||||
|
--aws_access_key_id "$AWS_ACCESS_KEY_ID" \
|
||||||
|
--aws_secret_access_key "$AWS_SECRET_ACCESS_KEY" \
|
||||||
|
--aws_session_token "$AWS_SESSION_TOKEN" \
|
||||||
|
--default_vpc "$DEFAULT_VPC"
|
12
user_data.py
Normal file
12
user_data.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
user_data = f'''
|
||||||
|
#!/bin/bash
|
||||||
|
sudo yum update -y
|
||||||
|
sudo yum install git -y
|
||||||
|
git clone https://git.wmi.amu.edu.pl/s464953/aws.git
|
||||||
|
cd aws
|
||||||
|
sudo yum install docker -y
|
||||||
|
sudo service docker start
|
||||||
|
sudo usermod -a -G docker ec2-user
|
||||||
|
docker build -t webservice .
|
||||||
|
docker run -d -p 80:8080 -t webservice
|
||||||
|
'''
|
BIN
webservice
Normal file
BIN
webservice
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user