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

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

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

13 февраля 2023
Замена игрока: выбираем альтернативу зарубежному системному ПО (взгляд облачного провайдера)

На поле ИТ сегодня захватывающая интрига – выбор адекватной замены зарубежным системам, производители которых массово вышли из игры. На онлайн-митапе поделились опытом подбора, внедрения и сопровождения решений, способных заместить платформу виртуализации, почту, файловое хранилище, каталог пользователей, backup и др.

Предлагаем вашему вниманию запись и расшифровку митапа.

2 минуты
285
9 января 2023
1С в облаке — полет нормальный. Почему сегодня вашей ERP нужна облачная платформа

Замена зарубежной ERP на 1С – одна из наиболее горячих задач ИТ-поддержки бизнеса. Некоторые компании уже пытались ее решить, но результат оказывается неудовлетворительным, если за реализацию берется неопытная команда. 


2 минуты
338
2 декабря 2022
Четвёртая будет? Как мы развернули ещё одну зону доступности в нашем ЦОД
В начале года мы рассказали о том, как подключали третью зону доступности в нашем облаке: почему вернулись к Ethernet, как развёртывали сети и собирали честный кворум для распределённых сервисов.
1 минута
84
6 сентября 2022
«Азбука вкуса» переводит свою ИТ-инфраструктуру в Облако КРОК
Российская частная розничная компания «Азбука вкуса» перенесет свою ИТ-инфраструктуру в Облако КРОК. Соглашение о сотрудничестве и старте работ было подписано в августе. Цифровая экосистема компании включает в себя не только внутренние сервисы для организации бизнес-процессов, управления цепочками поставок, логистикой и т.д., но и системы электронной коммерции и мобильное приложение для покупателей, на которые делает ставки «Азбука вкуса» в области развития бизнеса. И теперь за стабильность работы этих систем будет отвечать команда КРОК Облачные сервисы.
3 минуты
687
16 августа 2022
Страховая компания «Пульс» цифровизует бизнес с помощью КРОК Облачные сервисы

СК «Пульс» – заметный игрок на рынке цифрового страхования – вместе с КРОК Облачные сервисы в рекордные сроки (всего за четыре месяца вместо типовых 6-12 месяцев) создала инфраструктуру на базе Облака КРОК для разработки и запуска в продуктив клиентских сервисов. Проект позволяет компании ускорить цифровизацию страхования, при которой все сервисы реализуются онлайн.

3 минуты
591
22 июля 2022
Новый сервис кеширования и другие обновления Облака КРОК
В Облаке КРОК появился новый PaaS-сервис – сервис кеширования данных. Кроме того, мы расширили возможности управления и настройки сервиса Базы данных. А для упрощения анализа затрат в отчеты биллинга теперь включается информация о назначенных ресурсам тегах.
2 минуты
529
scrollup