company_banner

Awless — мощная альтернативная CLI-утилита для работы с сервисами AWS



    Все пользователи облачных сервисов 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:

    $ awless 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).

    P.S.


    Читайте также в нашем блоге:

    Флант
    286,00
    Специалисты по DevOps и высоким нагрузкам в вебе
    Поделиться публикацией

    Комментарии 4

      0
      … Но зачем, если для управления ресурсами AWS (и не только) есть более развитый и более удобный terraform?
        0
        Я не думаю, что все несколько тысяч людей, поставивших плюсики новому awless, не слышали про Terraform ;-) Это всё-таки решение совсем другого масштаба (пусть не лучший критерий, но я не поленился сравнить объёмы репозиториев: 31M против 339M — ровно на порядок!). В реальности, как правило, сосуществуют решения более простые-узкоспециализированные-прикладные и более сложные-универсальные. Ведь разные люди выбирают разное, причём даже в тех случаях, когда разницы сильно меньше, чем между awless и terraform (достаточно взглянуть на зоопарк Linux-дистрибутивов). Вопрос удобства тоже субъективен (зависит не только от предпочтений, но и специфики применения).
          0
          Насколько я понимаю, это совсем разные вещи.
          Terraform — скорее аналог AWS CloudFormation, нужна для поднятия инфраструктуры. Удобно сделать темплейт для полного dev окружения, например, и раскатывать его потом десятки раз.
          Awless — аналог awscli, штука для управления aws окружением из консоли.
            0
            Все верно.
            Моё недоумение возникло в свете того, что есть отличный инструмент управления инфраструктурой(т.е., в том числе, и ресурсами AWS), которым удобно пользоваться.
            Я же воспринимаю awscli (и его аналоги) как способ произвести некоторые действия внутри уже развернутой инфраструктуры, в скриптах, по триггеру, расписанию и т.п.
            А awsless это попытка сделать «удобный awscli» — удобный инструмент управления ресурсами AWS из командной строки. В связи с этим, функционал, который описан: оффлайн слепок инфраструктуры, темплейтирование, автодополнение и т.п. мной воспринимается как: «но зачем?».
            Тем не менее — пришлось немного поизучать вопрос — спрос на такие инструменты у сообщества есть.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое