Создать виртуальную машину из публичного образа Linux

    В этом разделе приведена инструкция для создания виртуальной машины с операционной системой Linux. Для создания виртуальной машины на базе Windows воспользуйтесь инструкцией Создать виртуальную машину из публичного образа Windows.

    Чтобы создать виртуальную машину:

    Чтобы создать виртуальную машину:

    1. В консоли управления выберите каталог, в котором будет создана виртуальная машина.

    2. В списке сервисов выберите Compute Cloud.

    3. Нажмите кнопку Создать ВМ.

    4. В блоке Базовые параметры:

      • Введите имя и описание ВМ. Требования к имени:

        • Длина — от 3 до 63 символов.
        • Может содержать строчные буквы латинского алфавита, цифры и дефисы.
        • Первый символ — буква. Последний символ — не дефис.

        Примечание

        Имя виртуальной машины используется для генерации имени FQDN единожды — при создании ВМ. Если для вас важно имя FQDN, учитывайте это и задавайте нужное имя виртуальной машины при создании. Подробнее про генерацию имени FQDN читайте в разделе Имя хоста и FQDN.

      • (опционально) Выберите или создайте сервисный аккаунт. Использование сервисного аккаунта позволяет гибко настраивать права доступа к ресурсам.

      • Выберите зону доступности, в которой будет находиться виртуальная машина.

    5. В блоке Публичные образы выберите один из образов и версию операционной системы на базе Linux.

    6. (опционально) В блоке Диски настройте загрузочный диск:

      • Укажите нужный размер диска.
      • Выберите тип диска.

      Если вы хотите создать виртуальную машину из существующего диска, в блоке Диски добавьте диск.

    7. В блоке Вычислительные ресурсы:

    8. В блоке Сетевые настройки:

      • Укажите идентификатор подсети или выберите облачную сеть из списка. Если сети нет, нажмите кнопку Создать новую сеть и создайте ее:
        • В открывшемся окне укажите имя новой сети и выберите, к какой подсети необходимо подключить виртуальную машину. У каждой сети должна быть как минимум одна подсеть (если подсети нет, создайте ее). Затем нажмите кнопку Создать.
      • В поле Публичный адрес выберите способ назначения адреса:
        • Автоматически — чтобы назначить случайный IP-адрес из пула адресов Яндекс.Облака.
        • Список — чтобы выбрать публичный IP-адрес из списка зарезервированных заранее статических адресов. Подробнее читайте в разделе Сделать динамический публичный IP-адрес статическим.
        • Без адреса — чтобы не назначать публичный IP-адрес.
      • (опционально) Выберите опцию защиты от DDoS-атак.
    9. В блоке Доступ укажите данные для доступа на виртуальную машину:

      • В поле Логин введите имя пользователя.

        Предупреждение

        Не используйте логин root или другие имена, зарезервированные операционной системой. Для выполнения операций, требующих прав суперпользователя, используйте команду sudo.

      • В поле SSH-ключ вставьте содержимое файла открытого ключа.

    10. Нажмите кнопку Создать ВМ.

    Виртуальная машина появится в списке. При создании виртуальной машине назначаются IP-адрес и имя хоста (FQDN).

    Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

    По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

    1. Посмотрите описание команды CLI для создания виртуальной машины:

      $ yc compute instance create --help
      
    2. Подготовьте пару ключей (открытый и закрытый) для SSH-доступа на виртуальную машину.

    3. Выберите один из публичных образов на базе операционной системы Linux (например, CentOS 7).

      Чтобы получить список доступных образов, выполните следующую команду:

      $ yc compute image list --folder-id standard-images
      +----------------------+-------------------------------------+--------------------------+----------------------+--------+
      |          ID          |                NAME                 |          FAMILY          |     PRODUCT IDS      | STATUS |
      +----------------------+-------------------------------------+--------------------------+----------------------+--------+
      ...
      | fdvk34al8k5nltb58shr | centos-7-1549279494                 | centos-7                 | dqni65lfhvv2den5gtv9 | READY  |
      | fdv7ooobjfl3ts9gqp0q | windows-2016-gvlk-1548913814        | windows-2016-gvlk        | dqnnc72gj2ist3ktjj1p | READY  |
      | fdv4f5kv5cvf3ohu4flt | ubuntu-1604-lts-1549457823          | ubuntu-1604-lts          | dqnnb6dc7640c5i968ro | READY  |
      ...
      +----------------------+-------------------------------------+--------------------------+----------------------+--------+
      
    4. Выберите подсеть:

      $ yc vpc subnet list
      +----------------------+-----------------------+----------------------+----------------+---------------+-----------------+
      |          ID          |         NAME          |      NETWORK ID      | ROUTE TABLE ID |     ZONE      |      RANGE      |
      +----------------------+-----------------------+----------------------+----------------+---------------+-----------------+
      | b0c6n43f9lgh3695v2k2 | default-ru-central1-c | enpe3m3fa00udao8g5lg |                | ru-central1-c | [10.130.0.0/24] |
      | e2l2da8a20b33g7o73bv | default-ru-central1-b | enpe3m3fa00udao8g5lg |                | ru-central1-b | [10.129.0.0/24] |
      | e9bnlm18l70ao30pvfaa | default-ru-central1-a | enpe3m3fa00udao8g5lg |                | ru-central1-a | [10.128.0.0/24] |
      +----------------------+-----------------------+----------------------+----------------+---------------+-----------------+
      
    5. Создайте виртуальную машину в каталоге по умолчанию. Укажите следующие параметры:

      • name — Имя виртуальной машины.

        Примечание

        Имя виртуальной машины используется для генерации имени FQDN единожды — при создании ВМ. Если для вас важно имя FQDN, учитывайте это и задавайте нужное имя виртуальной машины при создании. Подробнее про генерацию имени FQDN читайте в разделе Имя хоста и FQDN.

      • zone — зона доступности, которая соответствует выбранной подсети.

      • subnet-name — имя выбранной подсети.

      • image-familyсемейство образов, например centos-7. Эта опция позволит установить последнюю версию операционной системы из указанного семейства.

      • Публичный IP. Чтобы создать виртуальную машину без публичного IP, исключите опцию nat-ip-version=ipv4.

      $ yc compute instance create \
          --name first-instance \
          --zone ru-central1-a \
          --network-interface subnet-name=default-ru-central1-a,nat-ip-version=ipv4 \
          --create-boot-disk image-folder-id=standard-images,image-family=centos-7 \
          --ssh-key ~/.ssh/id_rsa.pub
      

      Будет создана виртуальная машина first-instance.

    Создайте виртуальную машину с помощью метода Create для ресурса Instance:

    1. Подготовьте пару ключей (открытый и закрытый) для SSH-доступа на виртуальную машину.

    2. Получите IAM-токен, используемый для аутентификации в примерах:

    3. Получите идентификатор каталога.

    4. Получите информацию об образе, из которого надо создать виртуальную машину (идентификатор образа и минимальный размер диска):

      • Если вы знаете семейство образа, получите информации о последнем образе в этом семействе:
        $ export IAM_TOKEN=CggaATEVAgA...
        $ export FAMILY=ubuntu-1804
        $ curl -H "Authorization: Bearer ${IAM_TOKEN}" \
          "https://compute.api.cloud.yandex.net/compute/v1/images:latestByFamily?folderId=standard-images&family=${FAMILY}"
        
      • Вы можете получить информацию об образе из списка публичных образов.
    5. Получите идентификатор подсети и идентификатор зоны доступности. В запросе укажите идентификатор каталога, в котором создана подсеть:

      $ export IAM_TOKEN=CggaATEVAgA...
      $ export FOLDER_ID=b1gvmob95yysaplct532
      $ curl -H "Authorization: Bearer ${IAM_TOKEN}" \
        "https://vpc.api.cloud.yandex.net/vpc/v1/subnets?folderId=${FOLDER_ID}"
      {
       "subnets": [
        {
         "v4CidrBlocks": [
          "10.130.0.0/24"
         ],
         "id": "b0c6n43ftldh30l0vfg2",
         "folderId": "b1gvmob95yysaplct532",
         "createdAt": "2018-09-23T12:15:00Z",
         "name": "default-ru-central1-c",
         "description": "Auto-created default subnet for zone ru-central1-c",
         "networkId": "enpe3m3fagludao8aslg",
         "zoneId": "ru-central1-c"
        },
        ...
       ]
      }
      
    6. Создайте файл с телом запроса на создание виртуальной машины, например body.json. Укажите следующие параметры:

      • folderId — идентификатор каталога.
      • name — имя, которое будет присвоено виртуальной машине при создании.
      • zoneId — зона доступности, которая соответствует выбранной подсети.
      • platformIdплатформа.
      • resourceSpec — ресурсы, доступные виртуальной машине. Значения должны соответствовать выбранной платформе.
      • metadata — в метаданных необходимо передать открытый ключ для SSH-доступа на виртуальную машину. Подробнее в разделе Метаданные виртуальной машины.
      • bootDiskSpec — настройки загрузочного диска. Укажите идентификатор выбранного образа и размер диска. Размер диска должен быть не меньше минимального размера диска, указанного в информации об образе.
      • networkInterfaceSpecs — настройки сети.
        • subnetId — идентификатор выбранной подсети.
        • primaryV4AddressSpec — IP-адрес, который будет присвоен виртуальной машине. Чтобы добавить публичный IP-адрес виртуальной машине, укажите:
          "primaryV4AddressSpec": {
              "oneToOneNatSpec": {
                "ipVersion": "IPV4"
              }
            }
          

      Подробнее про формат тела запроса в справочнике API.

      Пример файла body.json:

      {
        "folderId": "b1gvmob95yysaplct532",
        "name": "instance-demo-no-pwauth",
        "zoneId": "ru-central1-c",
        "platformId": "standard-v1",
        "resourcesSpec": {
          "memory": "2147483648",
          "cores": "2",
        },
        "metadata": {
          "user-data": "#cloud-config\nusers:\n  - name: user\n    groups: sudo\n    shell: /bin/bash\n    sudo: ['ALL=(ALL) NOPASSWD:ALL']\n    ssh-authorized-keys:\n      - ssh-rsa AAAAB3N... user@example.com"
        },
        "bootDiskSpec": {
          "diskSpec": {
            "size": "2621440000",
            "imageId": "fd8rc75pn12fe3u2dnmb"
          }
        },
        "networkInterfaceSpecs": [
          {
            "subnetId": "b0c6n43ftldh30l0vfg2",
            "primaryV4AddressSpec": {
              "oneToOneNatSpec": {
                "ipVersion": "IPV4"
              }
            }
          }
        ]
      }
      
    7. Создайте виртуальную машину:

      $ export IAM_TOKEN=CggaATEVAgA...
      $ curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer ${IAM_TOKEN}" \
        -d '@body.json' \
        https://compute.api.cloud.yandex.net/compute/v1/instances
      

    При создании виртуальной машине назначаются IP-адрес и доменное имя (FQDN).

    См. также