Проект OpDemand Shell содержит интерфейс клиента командной строки к системе С2. Эти питон модули частью технологии OpDemand в командной & Control (С2).
Open Source
Проект с2-оболочка сделана с открытым исходным кодом от OpDemand.
С2 Шелл Документация
Прежде чем вы начнете
- Вам понадобится активная учетная запись С2. Создайте его бесплатно на https://c2.opdemand.com/
- Инструкция предположить OSX или Linux (Windows не была проверена, но должно работать)
Установка
Установка использует стандартные Distutils конвенции.
Судо питон setup.py установить
Конфигурация
Добавить С2 логин адрес электронной почты в локальной конфигурации клиента.
с2 местный набор --email=c2user@opdemand.com
С2 местного Get покажет текущую конфигурацию.
Вход в систему
Выпуск С2 логин, который будет использовать адрес электронной почты, настроенный выше и запросит у вас пароль.
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 Войти
пароль:
2011-06-07 08: 44: 12052 - ИНФО - => После https://c2core.opdemand.com/session
2011-06-07 08: 44: 13095 - ИНФО - GET https://c2core.opdemand.com/template
2011-06-07 09: 21: 21 879 - ИНФО - <= 200 ОК, чтение байта 1822 применения / JSON
[# JSON список шаблонов
& NBSP; {
& NBSP; # первый шаблон
& NBSP;},
& NBSP; {
& NBSP; # Вторая шаблон
& NBSP;}
]
2011-06-07 09: 21: двадцать одна тысячу восемьсот восемьдесят один - ИНФО - (шаблон / список) успех в 0.524872s
Найти значение _id шаблона вы хотите, чтобы развернуть, и скопировать его в буфер обмена.
Создать новую платформу
Выберите нужный шаблон и оформить шаблон с2 нагрузку шаблона _id, который создаст свежие платформу.
пользователь @ окно: ~ / рабочее пространство / с2-оболочки шаблон $ с2 нагрузки --_ ID = 6c86dfc5ddfe464199021b8dcaf521a2
2011-06-07 09: 42: 36711 - ИНФО - => После https://c2core.opdemand.com/template/6c86dfc5ddfe464199021b8dcaf521a2/load
2011-06-07 09: 42: 38606 - ИНФО - <= 201 Создан, чтение 14850 байт применения / JSON
{
& NBSP; # гораздо дольше представление JSON шаблона
}
2011-06-07 09: 42: 38757 - ИНФО - (шаблон / нагрузка) успех в 2.061932s
Список Платформы
Выдать список с2 платформы, чтобы увидеть доступные платформы в вашем аккаунте.
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 список платформа
2011-06-07 09: 46: 48327 - ИНФО - => GET https://c2core.opdemand.com/platform
2011-06-07 09: 46: 48884 - ИНФО - <= 200 ОК, чтение 566 байт применения / JSON
[
& NBSP; {
& NBSP; # Ваш новая платформа
& NBSP;}
]
2011-06-07 09: 46: 48885 - ИНФО - (платформа / список) успех в 0.572228s
Скопируйте _id этой платформы в буфер обмена.
Читайте платформу
Список операций показывают только краткие представления элементов в коллекции. Для просмотра полной представление платформы (тот, который включает вложенные в компоненты), вы должны выдать c2 платформу читать и обеспечить _id:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 платформа прочитать --_ ID = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 16: 06050 - ИНФО - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 16: 06984 - ИНФО - <= 200 ОК, чтение 14850 байт применения / JSON
{
& NBSP; # Полное представление платформы
}
2011-06-07 10: 16: 07152 - ИНФО - (платформа / чтения) успех в 1.117754s
Работа с JSON ответов
Выше платформа слишком долго, чтобы читать. К счастью, снаряд С2 включает в себя интегрированный JSON prettifier, что делает вывод JSON из любой команды С2 оболочки гораздо легче читать.
Просто трубы любая команда с2 с2 довольно:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки шаблон $ с2 прочитать --_ ID = 6c86dfc5ddfe464199021b8dcaf521a2 | с2 довольно
2011-06-07 09: 32: 00646 - ИНФО - => GET https://c2core.opdemand.com/template/6c86dfc5ddfe464199021b8dcaf521a2
2011-06-07 09: 32: 01378 - ИНФО - <= 200 ОК, чтение 12022 байт применения / JSON
2011-06-07 09: 32: 01535 - ИНФО - (шаблон / чтения) успех в 0.904613s
tiers.0.name "Сеть уровня"
tiers.0.doctype "эшелона"
tiers.0._rev "1-5a37d211b276deee536cd72a016af8fa"
... остальные prettified JSON
Все команды C2 читать из стандартного ввода и писать на стандартный вывод. Это означает, сырые JSON и JSON prettified может быть передан любой другой команды, которая использует UNIX-стиле трубы. (например Grep).
Настройка платформы
Сначала прочитайте платформу и Grep для информации по умолчанию конфигурации:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 платформа прочитать --_ ID = 7bbeacb1082e4810bb1a6643d024496e | с2 довольно | Grep конфигурации
2011-06-07 10: 26: 29828 - ИНФО - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 26: 30486 - ИНФО - <= 200 ОК, чтение 14850 байт применения / JSON
2011-06-07 10: 26: 30635 - ИНФО - (платформа / чтения) успех в 0.821403s
config.access_network "0.0.0.0/0"
config.image_id "Ами-06ad526f"
config.doctype "Config"
config._rev "1-38d720a0975e4d377ccbfd3cb7864185"
config.access_port "22"
config.cloud_name "нам-востоку-1"
config.clone_.parent_id "ceee3724a3674bc096a2a6d2dfde7209"
config.clone_.parent_impl.cls_ "c2core.resolve.Config"
config.admin_network "0.0.0.0/0"
config._id "ceee3724a3674bc096a2a6d2dfde7209"
config.impl.cls_ "c2core.resolve.Config"
config.views.7bbeacb1082e4810bb1a6643d024496e.0.0 "7bbeacb1082e4810bb1a6643d024496e"
config.views.7bbeacb1082e4810bb1a6643d024496e.0.1 "Config"
metadata.config_info.access_port "Порт прослушивания на сервере"
metadata.config_info.access_network "Маска сети для рядовых пользователей"
metadata.config_info.cloud_name "Имя AWS области"
metadata.config_info.admin_network "Маска сети для пользователей администратора"
Давайте ограничить весь сетевой доступ к одному из хостов - 1.1.1.1/32~~pobj. Это потребует изменения access_network и admin_network ключи.
Так конфигурации вложенный документ с собственным _id и _rev, мы должны изменить документ конфигурации напрямую. Чтобы сделать это, мы следуем RESTful конвенции чтения представление и обжигающе его операции обновления:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 конфигурации прочитать --_ ID = ceee3724a3674bc096a2a6d2dfde7209 | с2 обновление конфигурации - --access_network = 1.1.1.1 / 32 --admin_network = 1.1.1.1 / 32
2011-06-07 10: 35: 39643 - ИНФО - чтение со стандартного ввода объекта, Ctrl-C, чтобы сломать ...
2011-06-07 10: 35: 39,661 - ИНФО - => GET https://c2core.opdemand.com/config/ceee3724a3674bc096a2a6d2dfde7209
2011-06-07 10: 35: 40573 - ИНФО - <= 200 ОК, чтение 692 байт применения / JSON
2011-06-07 10: 35: 40574 - ИНФО - (Config / чтение) успех в 0.931527s
2011-06-07 10: 35: 40603 - ИНФО - => PUT https://c2core.opdemand.com/config/ceee3724a3674bc096a2a6d2dfde7209
2011-06-07 10: 35: 41316 - ИНФО - <= 200 ОК, чтение 694 байт применения / JSON
{
& NBSP; "_ ID": "ceee3724a3674bc096a2a6d2dfde7209",
& NBSP; "_ оборотов": "2-6a1cac4a1851fead776d4184e1218028",
& NBSP; "access_network": "1.1.1.1/32",
& NBSP; "access_port": "22",
& NBSP; "admin_network": "1.1.1.1/32",
& NBSP; "clone_": {
& NBSP; "parent_id": "ceee3724a3674bc096a2a6d2dfde7209",
& NBSP; "parent_impl": {
& NBSP; "cls_": "c2core.resolve.Config"
& NBSP;}
& NBSP;},
& NBSP; "cloud_name": "нам-востоку-1",
& NBSP; "DOCTYPE": "Config",
& NBSP; "image_id": "АМИ-06ad526f",
& NBSP; "осущ": {
& NBSP; "cls_": "c2core.resolve.Config"
& NBSP;},
и NBSP; "мнения": {
& NBSP; "7bbeacb1082e4810bb1a6643d024496e": [
& NBSP; [
& NBSP; "7bbeacb1082e4810bb1a6643d024496e",
& NBSP; "Config"
& NBSP;]
& NBSP;]
& NBSP;}
}
2011-06-07 10: 35: 41317 - ИНФО - (Config / обновление) успех в 0.730138s
Перечитайте конфигурацию платформы, чтобы подтвердить родительский документ включает в себя обновленную конфигурацию, вложенный:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 платформа прочитать --_ ID = 7bbeacb1082e4810bb1a6643d024496e | с2 довольно | Grep конфигурации
2011-06-07 10: 37: 11131 - ИНФО - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 37: 11825 - ИНФО - <= 200 ОК, чтение 14852 байт применения / JSON
2011-06-07 10: 37: 11977 - ИНФО - (платформа / чтения) успех в 0.862029s
config.access_network "1.1.1.1/32"
config.image_id "Ами-06ad526f"
config.doctype "Config"
config._rev "2-6a1cac4a1851fead776d4184e1218028"
config.access_port "22"
config.cloud_name "нам-востоку-1"
config.clone_.parent_id "ceee3724a3674bc096a2a6d2dfde7209"
config.clone_.parent_impl.cls_ "c2core.resolve.Config"
config.admin_network "1.1.1.1/32"
config._id "ceee3724a3674bc096a2a6d2dfde7209"
config.impl.cls_ "c2core.resolve.Config"
config.views.7bbeacb1082e4810bb1a6643d024496e.0.0 "7bbeacb1082e4810bb1a6643d024496e"
config.views.7bbeacb1082e4810bb1a6643d024496e.0.1 "Config"
metadata.config_info.access_port "Порт прослушивания на сервере"
metadata.config_info.access_network "Маска сети для рядовых пользователей"
metadata.config_info.cloud_name "Имя AWS области"
metadata.config_info.admin_network "Маска сети для пользователей администратора"
Начните платформу
С нашими полномочий АМС на месте, и нашей платформе очереди до мы готовы пойти. Выпуск старт с2 платформы и пусть оркестровка начать:
пользователь @ коробка: начать ~ / рабочее пространство / с2-оболочки $ с2 платформа --_ ID = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 42: 52849 - ИНФО - => После https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e/start
2011-06-07 10: 42: 53816 - ИНФО - <= 202 Принято, чтение 0 байт применения / JSON
2011-06-07 10: 42: 53816 - ИНФО - (платформа / запуска) успех в 0.981219s
Чтобы следовать прогресс платформы, прочитайте полное представление платформы и Grep для статуса всех вложенных объектов:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 платформа прочитать --_ ID = 7bbeacb1082e4810bb1a6643d024496e | с2 довольно | Статус Grep
2011-06-07 10: 43: 06530 - ИНФО - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 43: 07228 - ИНФО - <= 200 ОК, чтение 22227 байт применения / JSON
2011-06-07 10: 43: 07451 - ИНФО - (платформа / чтения) успех в 0.935643s
tiers.0.status_.value "здание"
tiers.0.keypair.status_.detail "пара ключей создана"
tiers.0.keypair.status_.value "построен"
tiers.0.sg.status_.detail "правила уполномоченным успешно"
tiers.0.sg.status_.value "построен"
tiers.1.status_.value "здание"
tiers.1.server.status_.detail "ждет работает, в настоящее время на рассмотрении"
tiers.1.server.status_.value "здание"
status_.detail "начать операции срабатывает"
status_.value "начиная"
Мы видим статус платформы уровень запуска. Переиздание этой команды несколько раз, чтобы "опрос" статуса. Оглавлению для государства также полезно для демонстрации, какие компоненты в настоящее время перехода. После того, как платформа будет сделано, статус должен выглядеть следующим образом:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 платформа прочитать --_ ID = 7bbeacb1082e4810bb1a6643d024496e | с2 довольно | Статус Grep
2011-06-07 10: 44: 21015 - ИНФО - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 44: 21 736 - ИНФО - <= 200 ОК, чтение 27129 байт применения / JSON
2011-06-07 10: 44: +21988 - ИНФО - (платформа / чтения) успех в 0.990599s
tiers.0.status_.detail "успешно начал"
tiers.0.status_.value "работает"
tiers.0.keypair.status_.detail "пара ключей создана"
tiers.0.keypair.status_.value "работает"
tiers.0.sg.status_.detail "правила уполномоченным успешно"
tiers.0.sg.status_.value "работает"
tiers.1.status_.detail "успешно начал"
tiers.1.status_.value "работает"
tiers.1.server.status_.detail "слушатель готов на 22 / TCP"
tiers.1.server.status_.value "работает"
status_.detail "начать операцию успешной"
status_.value "работает"
Обратите внимание на состояние родительского уровня "работает" с сервера слушателя готовы на 22 / TCP. Наша платформа готова.
Использование платформы
Все платформы публиковать информацию о том, как они используются. Большинство платформ публиковать некоторую комбинацию:
- URL-адреса
- Имя хоста / порт комбинации
- Логины
- Пароли
Если мы читаем платформу и Grep для публикации мы видим эта платформа опубликовал простой SSH URL:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 платформа прочитать --_ ID = 7bbeacb1082e4810bb1a6643d024496e | с2 довольно | Grep публиковать
2011-06-07 10: 51: 30694 - ИНФО - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 51: 31 764 - ИНФО - <= 200 ОК, чтение 27129 байт применения / JSON
2011-06-07 10: 51: 32038 - ИНФО - (платформа / чтения) успех в 1.367026s
tiers.1.server.publish.access_url "SSH: //ubuntu@ec2-50-19-55-84.compute-1.amazonaws.com/"
metadata.publish_info.access_url "URL для доступа к платформе"
Общий шаблон для платформы опубликовать:
- URL Админ
- Администратор Войти
- Пароль администратора
- URL доступа
Остановка платформы
После того, как платформа остановилась, ее статус будет выглядеть примерно так:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 платформа прочитать --_ ID = 7bbeacb1082e4810bb1a6643d024496e | с2 довольно | Статус Grep
2011-06-07 10: 57: пятьдесят одна тысяча триста сорок-пять - ИНФО - => GET https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 10: 57: 52128 - ИНФО - <= 200 ОК, чтение 27966 байт применения / JSON
2011-06-07 10: 57: 52424 - ИНФО - (платформа / чтения) успех в 1.093576s
tiers.0.status_.detail "успешно остановлена"
tiers.0.status_.value "остановился"
tiers.0.keypair.status_.detail "пара ключей создана"
tiers.0.keypair.status_.value "остановился"
tiers.0.sg.status_.detail "правила уполномоченным успешно"
tiers.0.sg.status_.value "остановился"
tiers.1.status_.detail "успешно остановлена"
tiers.1.status_.value "остановился"
tiers.1.server.status_.detail "ждет остановился, в настоящее время остановлен"
tiers.1.server.status_.value "остановился"
status_.detail "операция остановка успешным"
status_.value "остановился"
Платформа по-прежнему не существует в облаке, но это уже не навлечь дорогие затраты вычислительных (это, однако каких незначительные затраты на хранение). Не Вы также больше не навлечь сборы С2 платформы. В этот момент, ваша платформа не стоит ничего эффективно.
Платформы могут быть остановлены и запущены без ограничений.
Уничтожить платформу
Чтобы на самом деле уничтожить все облачных компонентов, включенных в вашей платформы, вы должны выдать с2 платформа уничтожить и обеспечить _id целевой платформы:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 платформа уничтожить --_ ID = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 11: 04: 10,667 - ИНФО - => После https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e/destroy
2011-06-07 11: 04: 11953 - ИНФО - <= 202 Принято, чтение 0 байт применения / JSON
2011-06-07 11: 04: 11953 - ИНФО - (платформа / уничтожить) успех в 1.300462s
Удалить платформы
Если вы перечислите платформы вы увидите, что разрушенный платформа все еще существует:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 список платформа | с2 довольно
2011-06-07 11: 12: 02771 - ИНФО - => GET https://c2core.opdemand.com/platform
2011-06-07 11: 12: 03149 - ИНФО - <= 200 ОК, чтение байта 1577 применения / JSON
2011-06-07 11: 12: 03150 - ИНФО - (платформа / список) успех в 0.394324s
0.views.7bbeacb1082e4810bb1a6643d024496e.0.0 "7bbeacb1082e4810bb1a6643d024496e"
0.time_.disconnect.date_ "1307466249,487580"
0.time_.stop.date_ "1307465858,607597"
0.time_.start.date_ "1307465019,767619"
0.time_.build.date_ "1307465019,475195"
0.time_.destroy.date_ "1307466249,487347"
0.time_.connect.date_ "1307466240,220381"
0.status_.detail "уничтожить работу успешной"
0.status_.value "уничтожили"
0.doctype "Платформа"
0._rev "7-38fe44c5a900894adf48f4a416c94338"
0.template.cls_ "lib.platform.vanilla.natty.UbuntuNattyPlatform"
0._id "7bbeacb1082e4810bb1a6643d024496e"
0.state.running ложным
0.state.transitioning ложным
0.state.built ложным
0.impl.cls_ "lib.platform.vanilla.natty.UbuntuNattyPlatform"
0.interval_.destroy 9,3936290740966797
0.interval_.stop +33,600441932678223
0.interval_.build +57,54404091835022
0.interval_.start +57,836580991744995
С интервалом вы можете видеть это взял:
- 58 секунд, чтобы начать эту платформу
- 33 секунд, чтобы остановить его
- 9 секунд, чтобы уничтожить его
Вы всегда можете повторно начать разрушенный платформу и это восстановить облачных компонентов снова. Однако для завершения удаления платформы и ее вложенные документы, необходимо выдать c2 платформу удаления:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 платформа удалить --_ ID = 7bbeacb1082e4810bb1a6643d024496e
2011-06-07 11: 15: 45235 - ИНФО - => DELETE https://c2core.opdemand.com/platform/7bbeacb1082e4810bb1a6643d024496e
2011-06-07 11: 15: 46474 - ИНФО - <= 204 No Content, чтение 0 байт применения / JSON
2011-06-07 11: 15: 46474 - ИНФО - (платформа / удаление) успех в 1.252582s
Чтобы подтвердить, мы можем видеть наш список платформа теперь пуст:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 список платформа
2011-06-07 11: 15: 51890 - ИНФО - => GET https://c2core.opdemand.com/platform
2011-06-07 11: 15: 52296 - ИНФО - <= 200 ОК, чтение 2 байта применения / JSON
2011-06-07 11: 15: 52297 - ИНФО - (платформа / список) успех в 0.423616s
Разлогиниться
Выдавая информацию c2 мы можем видеть состояние нашей сессии:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки Информация $ с2
2011-06-07 11: 17: 11656 - ИНФО - => GET https://c2core.opdemand.com/session/73c2e9b49d01c695fb6c74927b8eb0eee5cdc82c2064cd728a8033eb83ea5b95
2011-06-07 11: 17: 12134 - ИНФО - <= 200 ОК, чтение байта 4082 применения / JSON
{
& NBSP; "счет": "с2-opdemand",
& NBSP; "электронная почта": "gabriel@opdemand.com",
& NBSP; "expires_at": "Пятница, 10 Июнь 2011 08:44 AM",
& NBSP; "session_id": "73c2e9b49d01c695fb6c74927b8eb0eee5cdc82c2064cd728a8033eb83ea5b95"
}
2011-06-07 11: 17: 12138 - ИНФО - (данные) успех в 0.497018s
Выход из просто с2 выход:
пользователь @ окно: ~ / рабочее пространство / с2-оболочки $ с2 выход
2011-06-07 11: 17: 44903 - ИНФО - => DELETE https://c2core.opdemand.com/session/73c2e9b49d01c695fb6c74927b8eb0eee5cdc82c2064cd728a8033eb83ea5b95
2011-06-07 11: 17: 45330 - ИНФО - <= 204 No Content, чтение 0 байт применения / JSON
2011-06-07 11: 17: 45330 - ИНФО - (выход) успех в 0.443405s
пользователь @ окно: ~ / рабочее пространство / с2-оболочки Информация $ с2
2011-06-07 11: 17: 49025 - ИНФО - (данные) успех в 0.000376s
О С2
Команда & техника управления OpDemand в (С2) автоматизирует развертывание и управление инфраструктурой облачных вычислений. С интерфейсом как просто, как "запустить, остановить клон и уничтожить", С2 дает команду вашего облака
Требования :.
- Python
Комментарии не найдены