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

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

3592
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
			)
		)

12 декабря 2023
KT.Team создала полностью автоматизированную систему маркировки товаров для FM Logistic на базе Облака КРОК
KT.Team разработала для международной логистической корпорации FM Logistic решение, помогающее максимально упростить процесс взаимодействия производителей и продавцов с Государственной информационной системой мониторинга оборота товаров (ГИС МТ). Решение называется “Paradigma” и развернуто на базе Облака КРОК, которое обеспечивает надежную платформу для его функционирования.
0 минут
446
8 декабря 2023
КРОК Облачные сервисы поможет компаниям защитить свою облачную инфраструктуру
КРОК Облачные сервисы совместно с «К2 Кибербезопасность» запустили Cloud Security Services (CSS) – комплекс мер и сервисов по обеспечению защиты ИТ-инфраструктуры клиента в облачных средах. Он позволяет выявлять, приоритизировать и митигировать риски и решать проблемы соответствия требованиям регуляторов по защите ИТ-инфраструктуры.
2 минуты
434
1 декабря 2023
КРОК Облачные сервисы первыми из облачных провайдеров получили сертификат PCI DSS 4.0

КРОК Облачные сервисы стал первым облачным провайдером в России, который получил сертификат соответствия новому стандарту безопасности данных платежных карт PCI DSS 4.0. Эта версия станет обязательной к исполнению с 2025 года вместо стандарта PCI DSS 3.2.1., действующего с 2018 г.  За прошедшее время, угрозы и методы защиты данных ушли далеко вперед. В стандарте PCI DSS 4.0 углублен и расширен базовый уровень операционных и технических требований для повышения безопасности платежей и прописаны инновационные методы для борьбы с новыми угрозами.

2 минуты
607
1 ноября 2023
Незаменимых нет. Сервис на базе Nextcloud вместо привычных корпоративных облаков

Привет, Хабр! Меня зовут Александр Фикс, я менеджер по развитию бизнеса КРОК Облачные сервисы. Сегодня поговорим о тренде локализации, о том, что происходит на рынке файлообменников с уходом западных решений и какие альтернативные продукты есть у бизнеса в данный момент.

1 минута
846
19 июня 2023
Семь трендов на рынке облачных услуг в 2023 году
До 2022 года на рынке облаков в России главенствовали мировые тренды, но сейчас наша страна пошла своим путем. О том, для чего сейчас компании используют облачные технологии и как меняется рынок, рассказал директор по развитию КРОК Облачные сервисы Сергей Зинкевич.
1 минута
2181
scrollup