Този проект представлява автоматизиран скрипт на Python, който на всеки 10 минути се опитва да създаде виртуална машина в Oracle Cloud Infrastructure (OCI) в регион Франкфурт (eu-frankfurt-1).
Тъй като в безплатния ресурс Always Free (Ampere ARM A1.Flex: 4 OCPU, 24 GB RAM) често няма свободен капацитет (Out of host capacity), скриптът ротира през 3-те Availability Domains (AD-1, AD-2, AD-3) и прави автоматични опити, докато успее да създаде виртуалната машина.
Тъй като сте логнати в Chrome във вашия Oracle акаунт:
- Отидете на профила си горе вдясно (иконката на човече) -> User settings.
- Вляво изберете API Keys (под Resources).
- Натиснете Add API Key.
- Изберете Generate API Key Pair и свалете частния ключ (Download Private Key) – той се казва подобно на
oracleidentitycloudservice_...pem. - Запазете го в папката
~/.oci/(създайте я ако я няма):mkdir -p ~/.oci mv ~/Downloads/*.pem ~/.oci/oci_api_key.pem chmod 600 ~/.oci/oci_api_key.pem
- Натиснете Add в конзолата на Oracle. Ще се покаже прозорец Configuration File Preview.
- Копирайте оттам следните данни:
user(User OCID)fingerprinttenancy(Tenancy OCID)
Тъй като вече сте създали Stack в Oracle Cloud:
- Влезте в Resource Manager -> Stacks в Oracle Console.
- Кликнете върху създадения от вас Stack.
- От падащото меню или Terraform Variables / Outputs вижте:
- Subnet OCID (
ocid1.subnet.oc1.eu-frankfurt-1...) - Image OCID (напр. Canonical Ubuntu 24.04/22.04 ARM)
- SSH Public Key (вашият публичен SSH ключ, започващ с
ssh-rsa ...илиssh-ed25519 ...)
- Subnet OCID (
Копирайте примерния файл:
cp config.example.json config.jsonОтворете config.json и нанесете вашите стойности:
{
"user_ocid": "ocid1.user.oc1..вашия_user_ocid",
"tenancy_ocid": "ocid1.tenancy.oc1..вашия_tenancy_ocid",
"fingerprint": "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx",
"key_file_path": "~/.oci/oci_api_key.pem",
"region": "eu-frankfurt-1",
"compartment_ocid": "ocid1.tenancy.oc1..вашия_tenancy_ocid",
"subnet_ocid": "ocid1.subnet.oc1.eu-frankfurt-1..вашия_subnet_ocid",
"image_ocid": "ocid1.image.oc1.eu-frankfurt-1..вашия_image_ocid",
"ssh_public_key": "ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ocpus": 4,
"memory_in_gbs": 24,
"display_name": "oracle-arm-instance",
"boot_volume_size_in_gbs": 50,
"retry_interval_seconds": 600,
"telegram_bot_token": "",
"telegram_chat_id": "",
"discord_webhook_url": ""
}-
Създайте виртуална среда и инсталирайте необходимите библиотеки:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txt -
(Опционално) Тествайте връзката:
python3 helper_setup.py
-
Стартирайте авто-опитите:
python3 main.py
За да работи скриптът във фонов режим дори когато затворите терминала:
nohup python3 main.py > oracle.log 2>&1 &Можете да следите логовете с:
tail -f oracle.logМожете да добавите Discord Webhook URL или Telegram Bot Token + Chat ID в config.json. Когато скриптът успешно създаде машината, той незабавно ще ви изпрати известие с детайли за машината и ще приключи работа.