Python boto – работа с виртуальными машинами
О технологиях

Python boto – работа с виртуальными машинами

2947
5 минут

Все, что придется делать больше одного раза, надо автоматизировать.
В этой статье я расскажу как при помощи Python и boto автоматизировать работу с виртуальными машинами. В качестве публичного облака будет использовано Облако КРОК.

Предварительная подготовка

Давайте создадим отдельную директорию c2_examples, в которой будем проводить все эксперименты


mkdir c2_examples
cd c2_examples

Создайте виртуальное кружение, в которое мы установим все необходимые библиотеки:


virtualenv venv
source venv/bin/activate

Установим необходимые библиотеки для работы в Облаке КРОК


pip install c2client

Для тех, кто проводит свои эксперименты в Облаке Amazon, необходимо просто установить boto:


pip install boto

Для облака КРОК настройка будет выполнена следующим образом:

  • Войдите в Консоль управления Облаком, используя свою учетную запись
  • Скачайте файл с вашими настройками: https://console.cloud.croc.ru/profile/c2rc.sh
  • Отредактируйте файл c2rc.sh, указав в переменной C2_PROJECT название вашего проекта
  • Обновите переменные окружения: source c2rc.sh

Создание виртуальных машин

Создайте файл instance_launch.py следующего содержания:


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import boto
import os

# Определяем переменные подключения и другие константы
EC2_URL = os.environ['EC2_URL']
EC2_ACCESS_KEY = os.environ['EC2_ACCESS_KEY']
EC2_SECRET_KEY = os.environ['EC2_SECRET_KEY']

TEMPLATE_ID = 'cmi-2A21A30D'
INSTANCE_TYPE = 'c1.large'
SECURITY_GROUP = 'subnet-61ECBB2A'
KEY_NAME = 'Lenovo-T410'

# Создаем объект подключения к Облаку
conn = boto.connect_ec2_endpoint(
	EC2_URL,
	aws_access_key_id=EC2_ACCESS_KEY,
	aws_secret_access_key=EC2_SECRET_KEY
)

# Запускаем виртуальный сервер
reservation = conn.run_instances(
	image_id=TEMPLATE_ID,             # Шаблон
	key_name=KEY_NAME,                # Имя публичного SSH ключа
	instance_type=INSTANCE_TYPE,      # Тип (размер) виртуального сервера
	security_groups=[SECURITY_GROUP]  # Сеть, к которой будет подключена ВМ
)

# Получим и выведем ID нашего сервера
instance_id = reservation.instances[0].id
print ('Instance ID: {instance_id}'.format(instance_id=instance_id))

Запустим виртуальную машину программно:

chmod +x ./instance_launch.py
./instance_launch.py
Instance ID: i-1B918761

Удаление виртуальной машины

Удаление виртуальной машины (delete_instance.py) делается ни чуть не сложнее:


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import boto
import os

# Определяем переменные подключения и другие константы
EC2_URL = os.environ['EC2_URL']
EC2_ACCESS_KEY = os.environ['EC2_ACCESS_KEY']
EC2_SECRET_KEY = os.environ['EC2_SECRET_KEY']

TEMPLATE_ID = 'cmi-2A21A30D'
INSTANCE_TYPE = 'c1.large'
SECURITY_GROUP = 'subnet-61ECBB2A'
KEY_NAME = 'Lenovo-T410'

# Создаем объект подключения к Облаку
conn = boto.connect_ec2_endpoint(
	EC2_URL,
	aws_access_key_id=EC2_ACCESS_KEY,
	aws_secret_access_key=EC2_SECRET_KEY
)

instances_to_delete = [
	'i-1B918761',        # ID ВМ, которую нужно удалить
]

# Удаляем ВМ
conn.terminate_instances(instance_ids=instances_to_delete)

Получение списка виртуальных машин

Чтобы получить список виртуальных машин, используйте следующий пример (list_instances.py):


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import boto
import os

# Определяем переменные подключения и другие константы
EC2_URL = os.environ['EC2_URL']
EC2_ACCESS_KEY = os.environ['EC2_ACCESS_KEY']
EC2_SECRET_KEY = os.environ['EC2_SECRET_KEY']

TEMPLATE_ID = 'cmi-2A21A30D'
INSTANCE_TYPE = 'c1.large'
SECURITY_GROUP = 'subnet-61ECBB2A'
KEY_NAME = 'Lenovo-T410'

# Создаем объект подключения к Облаку
conn = boto.connect_ec2_endpoint(
	EC2_URL,
	aws_access_key_id=EC2_ACCESS_KEY,
	aws_secret_access_key=EC2_SECRET_KEY
)

# Получим список резерваций
reservations = conn.get_all_instances()

# Получим список ID ВМ и их внешних IP адресов
for r in reservations:
	for i in r.instances:
		print ('Instance ({id}) - {ip_address}'.format(
				id=i.id,
				ip_address=i.ip_address
			)
		)

4 июля 2023
Локализация как есть: переехать в облако и ничего не потерять
Локализация российских подразделений иностранных компаний стала одним из самых частых запросов на облако в 2022 году. Страховой брокер Remind, лидер цифровизации в своей отрасли, прошел этот путь вместе с Облаком КРОК.

3 минуты
349
19 июня 2023
Семь трендов на рынке облачных услуг в 2023 году
До 2022 года на рынке облаков в России главенствовали мировые тренды, но сейчас наша страна пошла своим путем. О том, для чего сейчас компании используют облачные технологии и как меняется рынок, рассказал директор по развитию КРОК Облачные сервисы Сергей Зинкевич.
1 минута
547
19 мая 2023
Облако КРОК помогает крупной сети ресторанов увеличивать количество онлайн-заказов в пиковый период
Крупная сеть ресторанов-пиццерий, работающая в семи регионах России, перенесла в Облако КРОК мобильные сервисы онлайн-заказов. В результате проекта, который стартовал в 2021 году, заказчик получил гибко-масштабируемую инфраструктуру и обеспечил фактическую доступность онлайн-сервисов (SLA) для клиентов 24/7 равную 99,95%, то есть допустимый простой не превышает 22 минуты в месяц.
2 минуты
343
27 апреля 2023
Выручка КРОК Облачные сервисы выросла на 20% в 2022 году
Выручка КРОК Облачные сервисы за 2022 год выросла на 20% и превысила 5 млрд рублей, а количество клиентов – на 23% до 821. На новых заказчиков приходится около 60% роста выручки. Средний месячный чек на услуги вырос на 10% и составил более 500 тыс. рублей, т.к. фокусом подразделения остается крупный бизнес различных отраслевых сегментов. Оценка работы облачной платформы, менеджерской и технической поддержки составила 9,3 балла из 10, что подтверждает высокий уровень удовлетворенности клиентов.
4 минуты
565
scrollup