Создание инстанса с помощью oci + авто скрипт

  1. Создать API KEY и получить конфиг Сверху справа кликаешь по профилю -> My profile -> Слева внизу API keys, генеришь новый ключ и копируешь то что он тебе предлагает ~5 строчек, далее это вставляешь в ~/.oci/config

  2. Установить oci cli (скачать из релизов)

wget https://github.com/oracle/oci-cli/releases/download/v3.25.1/oci-cli-3.25.1.zip
unzip oci-cli-3.25.1.zip
cd oci-cli
pip3 install oci_cli-3.25.1-py3-none-any.whl

Проверить версию: oci -v

  1. Добавить конфиг в ~/.oci/config с именем конфига

  2. Добыть tenancy id пользователя в главном меню Identity&Security -> Compartments -> копируем в буфер напротив user

  3. Запускаем команду

    oci compute instance launch \
    --profile SINGAPORE \
    --availability-domain "CpiF:AP-SINGAPORE-1-AD-1" \
    --compartment-id ocid1.tenancy.oc1..aaaaaaaa22r7fz4pjqsxh7maufncyixdjlr6kustnxtgszdbksyhvq3t4dla \
    --image-id ocid1.image.oc1.ap-singapore-1.aaaaaaaa6ihywkz3f7q6zvux3mfncldtoymvdn2wq3xztjjc3x2n6rgbaoaq \
    --shape "VM.Standard.A1.Flex" \
    --display-name "nameinstance" \
    --subnet-id ocid1.subnet.oc1.ap-singapore-1.aaaaaaaaqh6jsv5mphwhrmqvhqnhpfwqopyxndbkx74bevoi33cyyfwg7emq \
    --shape-config '{"ocpus":2,"memoryInGBs":12}'
    

    (можно также добавить флаг –debug)

  4. Если видим в output команды “message”: “Out of host capacity.” , то значит нет доступных инстансов 7.1-ЕСТЬ ВТОРОЙ ВАРИНТ СМ НИЖЕ) Создаем скрипт и запускаем в крон, и выставляем запуск каждый час

vim /home/dmitry/Downloads/oci.sh

#!/bin/bash

#AMD
#CLOUD_IMAGE="ocid1.image.oc1.ap-singapore-1.aaaaaaaafcxkz2vbsrskuhxyc6nd2w5o2drhth4gurq77wz6rclaj6wcsyra"
#SHAPE_ID="VM.Standard.E2.1.Micro"
#SHAPE_CONFIG='{"ocpus":1,"memoryInGbs":1}'

#ARM
DOMAIN="CpiF:AP-SINGAPORE-1-AD-1"
CLOUD_IMAGE="ocid1.image.oc1.ap-singapore-1.aaaaaaaa6ihywkz3f7q6zvux3mfncldtoymvdn2wq3xztjjc3x2n6rgbaoaq" 
SHAPE_ID="VM.Standard.A1.Flex"
SHAPE_CONFIG='{"ocpus":2,"memoryInGbs":12}'
# CREATE SUBNET https://habr.com/ru/articles/541466/
SUBNET_ID="ocid1.subnet.oc1.ap-singapore-1.aaaaaaaaqh6jsv5mphwhrmqvhqnhpfwqopyxndbkx74bevoi33cyyfwg7emq"
RANDOM_NUMBER=$(shuf -i 1-2 -n 1)
INSTANCE_NAME="instance-$RANDOM_NUMBER"
COMPARTMENT_ID="ocid1.tenancy.oc1..aaaaaaaa22r7fz4pjqsxh7maufncyixdjlr6kustnxtgszdbksyhvq3t4dla"
echo "==============================================================="
/usr/bin/date
/usr/bin/oci compute instance launch --profile SINGAPORE --availability-domain $DOMAIN --compartment-id $COMPARTMENT_ID --image-id $CLOUD_IMAGE --shape $SHAPE_ID --display-name "$INSTANCE_NAME" --subnet-id $SUBNET_ID --shape-config $SHAPE_CONFIG --assign-public-ip true --boot-volume-size-in-gbs 100 --metadata '{"ssh_authorized_keys": "ssh-rsa AAAAB3NzaC1yc2EAAlsadhiuUAsgyhjv7194jhJHASGDiugiaNKKUGWbjsakshQkjbvakjjbdjklBASDkljvqwvhkvjvjl13429048sfBJKKABamhjwvAHLVLmnAJKBSJDVLQJVHQWDbjvhadKLAJVSDLADNmnAVCHKAVSjkbkdjajkaLJKAWDknjlckmlknAWLKiuVAWDVkjvkjVASDoivovQWKJBOVIASKDJVKVAD=="}'
echo "==============================================================="
chmod +x /home/dmitry/Downloads/oci.sh
crontab -e

*/10 * * * * /home/dmitry/oci.sh >>/home/dmitry/oci-output-cron.log 2>&1

2>&1 нужно также для перенаправления и ошибок тоже в лог

И обязательно проверяем после

7.2) Можно запускать в tmux! Также будем видеть выхлоп команды

  1. Так как в команде не прописан security list, который должен быть в json формате и выгружен предварительно, то после успешного создания, заходим в инстанс и проверяем на месте ли секьюрити лист для него
  2. Проверить список инстансов
oci compute instance list --profile JOHNCHISNOKSY --compartment-id ocid1.tenancy.oc1..aaaaaaaa22r7fz4pjqkljwqber23289aslfjbljv1l

ПОДРОБНО ЕСЛИ НУЖНО СОЗДАТЬ СЕТЬ РУКАМИ https://habr.com/ru/articles/541466/