Oracle Cloud: бесплатный VPS 4 ядра ARM/24ГБ памяти при большом спросе (OCI CLI)


Oracle Cloud: бесплатный VPS 4 ядра ARM/24ГБ памяти при большом спросе (OCI CLI)

Очень заманчивая конфигурация была недавно анонсирована в рамках доступа “Всегда бесплатно”. К сожалению, “очень быстро разбирают”, а именно – сложно запустить экземпляр, постоянно вылазит ошибка “Out of Capacity”. Здесь мы решаем эту проблему, так как Oracle время от времени наращивает ёмкость.

Каждый арендатор получает бесплатно первые 3000 часов условных ЦП и 18 000 ГБ-часов в месяц для создания экземпляров Ampere A1 Compute с использованием конфигурации VM.Standard.A1.Flex (эквивалентно 4 условным ЦП и 24 ГБ памяти).

Начнем с установки консольной утилиты

Если вы предпочитаете использовать PHP вместо консольной утилиты, соответствующая статья в процессе написания и уже почти готова к публикации. Для особо нетерпеливых: https://github.com/hitrov/oci-arm-host-capacity

Генерируем ключи доступа к API

После логина в веб-консоль кликаем иконку с профилем и затем User Settings

Далее идём по пути Resources -> API keys, жмём кнопку “Add API Key”

Копируем содержимое текстового поля, сохраняем в файле с именем config. Я поместил его в новую директорию /home/ubuntu/.oci вместе со скачанным приватным ключом *.pem

Настраиваем CLI

Устанавливаем путь к файлу конфигурации

Если вы не добавили бинарник OCI CLI себе в PATH, выполните

(только замените путь на тот, куда утилита была установлена в самом начале).

Установите политику доступ к приватному ключу

Протестируем аутентификацию, выполнив следующую команду (значение user берём из текстового поля во время генерации)

Получаем параметры для запуска экземпляра

Нам нужно знать, который из доменов доступности (Availability Domain) бесплатен. Жмём меню Oracle Cloud -> Compute -> Instances

Жмём “Create Instance” и смотрим, где Availability Domain помечен как “Always Free Eligible”. В нашем случае видим, что это AD-2.

Почти каждая команда требует установленный параметр compartment-id. Давайте временно сохраним его в переменную окружения (замените на своё значение tenancy из config файла)

Наконец, соберём значения для запуска экземпляра:

Помните, нам нужен бесплатный (у меня это AD-2). Устанавливаем значение еще одной переменной окружения

Выберем тип (shape)

Нас интересует VM.Standard.A1.Flex:

Надеюсь, вы ранее уже создавали VM.Standard.E2.1.Micro (с процессором AMD) из консоли – два таких экземпляра являются бесплатными. Если нет, сделайте это прежде – нам нужны существующие VNC, subnet, route table, security list и т.д.

Обратите внимание на id

. и сохраните его в переменную

Смотрим список образов

Я предпочитаю иметь весь установленный софт для разработки сразу из коробки – мой выбор – это “Oracle Linux Cloud Developer

Сохраняем image id

Также нам нужно создать несколько маленьких JSON файлов

shapeConfig.json (можете изменить значения количества процессоров или ОЗУ). Возможные значения 1/6, 2/12, 3/18 and 2/24 соответственно. Обратите внимание, что образ “Oracle Linux Cloud Developer” требует минимум 8ГБ ОЗУ (таким образом, валидное для него значение – это как минимум 1/8)

Чтобы иметь безопасный зашифрованный доступ к экземпляру, нужно иметь сгенерированную пару ключей ~/.ssh/id_rsa и ~/.ssh/id_rsa.pub. Имя файла второго из них (публичного) должно быть передано в команду ниже. В сети достаточно инструкций, чтобы выполнить их генерацию, здесь мы опустим эту часть.

Теперь вы можете настроить crontab для запуска этой команды, например, раз в минуту. Создайте .sh файл (“экспортируйте” переменные окружения до запуска) и убедитесь, что пользователь cron имеет доступ к приватному ключу. Опять же, здесь мы опустим эту часть.

Вывод команды (я тестировал с типом VM.Standard.E2.1.Micro, чтобы не уничтожать существующие экземпляры ARM)

Я полагаю, что достаточно безопасно оставить скрипт работать и проверять Cloud Console в браузере раз в несколько дней, поскольку когда экземпляр будет, наконец, создан, вы (API, CLI) не сможете создать их больше, чем разрешено, и станете получать в ответ что-то вроде

Во всяком случае, именно так и есть в моем случае.

Назначаем публичный IP адрес

Мы не делаем это нарочно во время запуска команды, поскольку существует ограничение на два “недолговечных” (ephemeral) бесплатных IP адреса. Когда вы преуспеете в создании экземрляра, открываем консоль в веб-браузере, идём по пути Instance Details -> Resources -> Attached VNICs, выбирая его имя

Затем, Resources -> IPv4 Addresses -> … -> Edit

Выбираем ephemeral и кликаем по кнопке “Update”

Заключение

Вот, как вы будете логиниться в экземпляр после его создания (обратите внимание на имя пользователя – opc)

Если же вы не назначили внешний (публичный) IP адрес, вы всё равно можете подключиться, используя его внутреннее доменное имя (internal FQDN) или частный (private) IP адрес (10.x.x.x) со страницы Instance Details, если экземпляр находится в той же сети VNIC, например,


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *