Fedora на AWS

Мы установим Fedora 43 на экземпляр AWS EC2 в регионе us-west-2.

Чтобы запустить экземпляр в AWS, вам понадобится идентификатор Amazon Machine Image (AMI) для образа Fedora в нужном регионе и архитектуре машины.

Список регионов для x86_64 и aarch64 доступен в разделе «Launch on public cloud platforms» на https://fedoraproject.org/cloud/download#cloud_launch

Например, для запуска AMI Fedora 43 на x86_64 в регионе us-west-2 идентификатор AMI — ami-09d4a84b1cda0ac74. Обратите внимание, что идентификатор AMI меняется с каждым релизом.

Предварительные требования

Шаг 1: Загрузите установщик

Загрузите AWS CLI с сайта AWS CLI: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html Выберите тип программного обеспечения CLI в соответствии с характеристиками вашей ОС

Шаг 2: Запустите установщик

Установите AWS CLI на Fedora с помощью менеджера пакетов DNF следующим образом.

$ sudo dnf install awscli -y

Чтобы установить AWS CLI на других дистрибутивах Linux, выполните следующие команды.

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install

Шаг 3: Проверьте установку

Проверьте установку AWS с помощью следующей команды:

$ aws --version

Шаг 4: Настройте AWS CLI

Теперь настройте AWS CLI с вашими учётными данными, такими как Access Key и Secret Key, выполнив следующую команду:

$ aws configure

Пошаговое руководство по созданию экземпляра EC2 с помощью AWS CLI

Если у вас уже есть VPC с подсетями, интернет-шлюзом, таблицей маршрутизации, группой безопасности и ключевыми парами, перейдите к шагу запуска экземпляра EC2. Если нет, следуйте следующим шагам для создания VPC по умолчанию. Создание VPC по умолчанию автоматически создаст подсети, интернет-шлюз, таблицу маршрутизации и т. д.

Создание VPC по умолчанию

Создайте VPC (Virtual Private Cloud), как показано ниже.

$ aws ec2 create-default-vpc
{
    "Vpc": {
        "OwnerId": "985539757503",
        "InstanceTenancy": "default",
        "Ipv6CidrBlockAssociationSet": [],
        "CidrBlockAssociationSet": [
            {
                "AssociationId": "vpc-cidr-assoc-0111c20e708b227a2",
                "CidrBlock": "172.31.0.0/16",
                "CidrBlockState": {
                    "State": "associated"
                }
            }
        ],
        "IsDefault": true,
        "Tags": [],
        "VpcId": "vpc-00617799cf31e2740",
        "State": "pending",
        "CidrBlock": "172.31.0.0/16",
        "DhcpOptionsId": "dopt-02320dcaf6fd91eb3"
    }
}

Здесь блок CIDR — 172.31.0.0/16. Вывод будет представлен в формате JSON. Обратите внимание на vpcId.

Подсети

Проверьте, успешно ли созданы подсети:

aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpcId>" --query "Subnets[*].{ID:SubnetId,CIDR:CidrBlock}"

Пример:

$ aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-00617799cf31e2740" --query "Subnets[*].{ID:SubnetId,CIDR:CidrBlock}"
[
    {
        "ID": "subnet-0cfbac16072874109",
        "CIDR": "172.31.0.0/20"
    },
    {
        "ID": "subnet-0bf950784376cab19",
        "CIDR": "172.31.16.0/20"
    },
    {
        "ID": "subnet-0d10af3548785ccc7",
        "CIDR": "172.31.48.0/20"
    },
    {
        "ID": "subnet-08c1988b07451008b",
        "CIDR": "172.31.32.0/20"
    }
]

Интернет-шлюз

Интернет-шлюз создаётся как часть создания VPC по умолчанию. Проверьте, успешно ли созданы подсети.

aws ec2 describe-internet-gateways

Пример:

$ aws ec2 describe-internet-gateways
{
    "InternetGateways": [
        {
            "Attachments": [
                {
                    "State": "available",
                    "VpcId": "vpc-00617799cf31e2740"
                }
            ],
            "InternetGatewayId": "igw-0edf1325238ca299f",
            "OwnerId": "985539757503",
            "Tags": []
        }
    ]
}

Таблица маршрутизации

Таблица маршрутизации также создаётся и назначается VPC по умолчанию.

$ aws ec2 describe-route-tables
{
    "RouteTables": [
        {
            "Associations": [
                {
                    "Main": true,
                    "RouteTableAssociationId": "rtbassoc-0ed54d31a73dc80c2",
                    "RouteTableId": "rtb-0571c0444bafe3dbc",
                    "AssociationState": {
                        "State": "associated"
                    }
                }
            ],
            "PropagatingVgws": [],
            "RouteTableId": "rtb-0571c0444bafe3dbc",
            "Routes": [
                {
                    "DestinationCidrBlock": "172.31.0.0/16",
                    "GatewayId": "local",
                    "Origin": "CreateRouteTable",
                    "State": "active"
                },
                {
                    "DestinationCidrBlock": "0.0.0.0/0",
                    "GatewayId": "igw-0edf1325238ca299f",
                    "Origin": "CreateRoute",
                    "State": "active"
                }
            ],
            "Tags": [],
            "VpcId": "vpc-00617799cf31e2740",
            "OwnerId": "985539757503"
        }
    ]
}

Создание ключевой пары и группы безопасности

Ключевая пара AWS — это набор защищённых учётных данных, состоящий из открытого и закрытого ключей, используемых в основном для безопасного подключения к экземплярам Amazon EC2

Теперь создайте ключевую пару с помощью следующей команды:

$ aws ec2 create-key-pair --key-name my-keypair --query "KeyMaterial" --output text > my-keypair.pem

Здесь мы назвали файл ключевой пары my-keypair.pem, и он загружен в текущий каталог, из которого была выполнена команда.

Для создания группы безопасности используйте следующие команды:

aws ec2 create-security-group --group-name <имя-группы-безопасности> --description "<описание>"  --vpc-id <vpcId>

Пример:

$ aws ec2 create-security-group --group-name FedoraSG --description "Fedora Security Group"  --vpc-id vpc-00617799cf31e2740
{
    "GroupId": "sg-07a6089d022898d5e",
    "SecurityGroupArn": "arn:aws:ec2:us-west-2:985539757503:security-group/sg-07a6089d022898d5e"
}

Запомните GroupId и используйте его на следующем шаге.

aws ec2 authorize-security-group-ingress --group-id <GroupId> --protocol tcp --port 22 --cidr 0.0.0.0/0

Пример:

$ aws ec2 authorize-security-group-ingress --group-id sg-07a6089d022898d5e --protocol tcp --port 22 --cidr 0.0.0.0/0
{
    "Return": true,
    "SecurityGroupRules": [
        {
            "SecurityGroupRuleId": "sgr-0ad9c03c1d572224c",
            "GroupId": "sg-07a6089d022898d5e",
            "GroupOwnerId": "985539757503",
            "IsEgress": false,
            "IpProtocol": "tcp",
            "FromPort": 22,
            "ToPort": 22,
            "CidrIpv4": "0.0.0.0/0",
            "SecurityGroupRuleArn": "arn:aws:ec2:us-west-2:985539757503:security-group-rule/sgr-0ad9c03c1d572224c"
        }
    ]
}

Протокол/порт, который мы здесь используем, — TCP/22, что является стандартным портом для протокола Secure Shell (SSH).

Запуск экземпляра EC2 Далее запустите экземпляр EC2 с помощью команды, приведённой ниже.

aws ec2 run-instances --image-id <ami-id> --instance-type t2.micro
 --key-name <имя-ключевой-пары> --security-group-ids <SecurityGroupId>
 --subnet-id <SubnetId>
 --associate-public-ip-address
 --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=MyEC2Instance}]'

Пример:

$ aws ec2 run-instances --image-id ami-09d4a84b1cda0ac74 --instance-type t2.micro --key-name my-keypair --subnet-id subnet-08c1988b07451008b --security-group-ids sg-07a6089d022898d5e --associate-public-ip-address --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=MyEC2Instance}]'
На этом шаге вам понадобится идентификатор AMI (Amazon Machine Image). Используйте идентификатор AMI Fedora для региона us-west-2, отмеченный выше, то есть ami-09d4a84b1cda0ac74

Подключение к экземпляру Fedora EC2

  • Откройте SSH-клиент.

  • Найдите ваш файл закрытого ключа. Ключ, использованный для запуска этого экземпляра, — my-keypair.pem

  • При необходимости выполните эту команду, чтобы убедиться, что ваш ключ не доступен для просмотра другим пользователям.

$ chmod 400 "my-keypair.pem"
  • Подключитесь к вашему экземпляру, используя его Public DNS:

Пример:

$ ssh -i "my-keypair.pem" fedora@ec2–54–218–117–248.us-west-2.compute.amazonaws.com
The authenticity of host 'ec2–54–218–117–248.us-west-2.compute.amazonaws.com (54.218.117.248)' can't be established.
ED25519 key fingerprint is SHA256:/Gw7ysOzRvVsvbz3xdOyFP1F7mm3sFIYE1hPhJCCZ8M.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'ec2–54–218–117–248.us-west-2.compute.amazonaws.com' (ED25519) to the list of known hosts.

[fedora@ip-172–31–39–204 ~]$
[fedora@ip-172–31–39–204 ~]$ cat /etc/redhat-release
Fedora release 43 (Forty Three)