Python boto – работа с виртуальными машинами
Запросить демо
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Оставить заявку
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Узнать стоимость
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Попробовать бесплатно
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Регистрация в консоли
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Быть в теме

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

Все, что придется делать больше одного раза, надо автоматизировать.
В этой статье я расскажу как при помощи 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
			)
		)

Не пропустите самые важные, интересные и полезные статьи недели

Ваш e-mail успешно подписан.