Возможно ли с помощью charm попросить juju запустить другую машину, добавить экземпляры службы или уничтожить экземпляры? Например, сделав что-то похожее на juju gui: как juju gui выполняет создание машин, например? Мне бы хотелось иметь службу, которая отслеживает другие службы и добавляет экземпляры для масштабирования, например.
решение1
Это возможно несколькими способами.
Установка и вызов двоичных файлов Juju
Charms.reactive слой наhttps://github.com/galgalesh/juju-clientделает это. Основной процесс заключается в том, чтобы сначала загрузить среду, затем развернуть charm, передавая все файлы конфигурации, состояния и секретов, необходимые для управления средой. Charm устанавливает клиент juju, перестраивает ~/.juju и теперь может управлять средой изнутри.
Этот слой все еще экспериментальный. Если у вас возникнут какие-либо проблемы, отправьте отчет об ошибке в репозиторий github.
Использование клиента Python Juju
EстьКлиент Python для управления средами Juju. Этот клиент вызывает Juju api. Вы можете поместить это в Charm.
Использование API Go
API Go можно найти здесь:https://godoc.org/github.com/juju/juju/api
Использование привязок Perl
Если вам нравятся такие вещи:https://metacpan.org/release/Juju
Вызов API напрямую
Более подробную информацию по этому вопросу см. в этом вопросе:Существует ли API Juju REST?