Все пользователи облачных сервисов Amazon давно знают про родной консольный инструмент для работы с ними — aws-cli. Но оказалось, что далеко не всем его достаточно: по этой причине компания WALLIX выпустила альтернативное и более функциональное решение под названием awless.

Исходный код awless написан на языке Go (использует AWS Go SDK) и опубликован на GitHub под свободной лицензией (Apache License 2.0). Текущая версия awless — 0.1.0. Поддерживаются операционные системы GNU/Linux, Mac OS X и Windows. Что же позволяет эта утилита?

Возможности


Awless поддерживает работу со следующими сервисами/возможностями AWS:
  • EC2;
  • IAM;
  • S3;
  • RDS;
  • Auto Scaling;
  • SNS;
  • SQS;
  • Route53;
  • CloudWatch;
  • CloudFormation;
  • Lambda.

Одной из главных особенностей утилиты является возможность вывода в разные форматы: как в human-readable (таблицы, совместимые с разметкой Markdown), так и в машинные (CSV, TSV, JSON), что обеспечит удобство работы с данными в скриптах, использующих awless. Если же вы будете взаимодействовать с инструментом вручную, другая приятная опция — автодополнение команд (поддерживаются оболочки Bash и Zsh — как её активировать, см. в выводе awless completion).

Ещё одна интересная возможность awless — движок шаблонов для команд, позволяющий создавать наборы операций, выполняемых в AWS. Примером может служить уже встроенная в awless операция для создания нового экземпляра EC2:
create instance subnet=subnet-356d517f image=ami-70edb016 type=t2.micro

Как видно, особенностью команды является передача параметров в виде ключа-значения, которые используются для выполнения дополнительных операций (в данном случае — подсеть и образ AMI для запуска в новом экземпляре).

Среди прочих фич awless:
  • фильтрация данных по свойствам и тегам ресурсов;
  • возможность использования произвольных алиасы для названий ресурсов;
  • поддержка AWS userdata для provisioning (исполнения произвольных удалённых или локальных скриптов) на новых создаваемых экземплярах;
  • логирование выполняемых операций (awless log);
  • отмена созданных с помощью шаблонов ресурсов (awless revert с идентификатором операции из журнала);
  • простой SSH-доступ к экземплярам (awless ssh);
  • просмотр данных о ресурсах в offline (требует предварительного запуска awless sync для локального хранения данных).

Установка


Установка awless сводится к выполнению команды:
curl https://raw.githubusercontent.com/wallix/awless/master/getawless.sh | bash

… или (при наличии установленного Go):
go get -u github.com/wallix/awless

Кроме того, готовые архивы с awless для разных платформ доступны для скачивания на странице с релизами.

Примеры использования awless


Разработчики подготовили классное видео, демонстрирующее работу с утилитой. Внимание, используется формат анимированного PNG — APNG, для просмотра в Chrome понадобится последняя версия 59 или специальное дополнение, а поскольку после очередного его просмотр в Firefox привёл к неадекватному потреблению памяти, оставлю это видео ссылкой вместо встраивания в пост.

Примеры конкретных операций (взяты из документации и встроенной справки):
  • Список экземпляров с сортировкой по времени их работы:
    $ awless list instances --sort uptime
  • Показать пользователя по его имени или ID:
    $ awless show jsmith
  • Создание экземпляра и provision в него из Gist:
    $ awless create instance name=my_machine image=ami-3f1bd150 keypair={keypair.name} \
    subnet={main.subnet} securitygroup={securitygroup} \
    userdata=https://gist.github.com/simcap/360dffae4c6d76ab0e89621dd824a244
  • Определение политики для пользователя:
    $ awless attach policy user=jsmith arn=arn:aws:iam::aws:policy/AmazonEC2FullAccess
  • Загрузка локального файла в S3:
    $ awless create s3object bucket=my-existing-bucket file=./todolist.txt
  • Создание экземпляра и вход в него по SSH (по локальному ключу):
    $ awless run repo:instance_ssh
    Please specify (Ctrl+C to quit):
    instance.name ? my-new-instance-name
    instance.subnet ? @my-existing-subnet
    instance.vpc ? @my-existing-vpc
    keypair.name ? my-new-keyname
    $ awless ssh my-new-instance-name

Заключение


Количество звёзд awless на GitHub приближается к 3 тысячам, а это явный индикатор того, что подобного инструмента ждали. У проекта есть wiki, в которой можно получить больше информации по его установке и использованию. Кроме того, у всех команд есть достаточно подробная встроенная справка — флаг -h (например, awless create instance -h).
Поделиться с друзьями
-->

Комментарии (0)