Что такое yc и для чего она нужна
Предположим, вы пишете скрипт, который автоматизирует рутинные задачи в облаке: выгружает аналитику об аккаунте или пересоздаёт виртуальные машины (ВМ) при обновлении операционной системы. Или, возможно, вы гик и писать команды в консоли вам куда приятнее, чем кликать мышкой в веб-интерфейсе. В обоих случаях вам понравится утилита yc.Утилита предоставляет интерфейс командной строки (command-line interface, CLI) для управления Yandex.Cloud. На курсе мы станем использовать термины yc и CLI как синонимы, потому что других консольных интерфейсов у нас не будет. Утилита yc также подходит для взаимодействия с облаком из систем без графического интерфейса, например прямо с ВМ.Совсем скоро вы выполните три практических работы по утилите yc. А пока давайте просто познакомимся с ней поближе.Работа в командной строке — это всегда последовательный запуск команд. В нашем CLI команды выглядят примерно так:
Скопировать кодyc compute instance list
Эта команда выводит список ваших ВМ:
Скопировать код+----------------------+------+---------------+---------+-------------+
| ID | NAME | ZONE ID | STATUS | INTERNAL IP |
+----------------------+------+---------------+---------+-------------+
| epdnq5kcsgs8tg31c2id | api1 | ru-central1-b | RUNNING | 172.17.0.23 |
| ef3jbvule3hhd05fd8s6 | api2 | ru-central1-c | RUNNING | 172.18.0.5 |
| fhm90d339g7vhu2971f9 | api3 | ru-central1-a | RUNNING | 172.16.0.5 |
+----------------------+------+---------------+---------+-------------+
Обратите внимание: все команды yc и вообще все команды, которые вы будете запускать в этом курсе, выполняются из терминала на компьютере или виртуальной машине с Linux / macOS / Windows Subsystem for Linux. Они не будут работать в стандартной консоли Windows.CLI и сервисы Yandex.CloudКоманды CLI разделены на группы, каждая из которых соответствует сервису или компоненту Yandex.Cloud. Например:
yc resource-manager…
— управление облаками и каталогамиyc compute…
— управление ВМyc load-balancer…
— управление балансировщиками нагрузки
Управление кластерами баз данных:
yc managed-mysql…
— MySQLyc managed-postgresql…
— PostgreSQLyc managed-clickhouse…
— ClickHouse
Есть ещё небольшая группа служебных команд:
yc init
— первоначальная настройка CLIyc version
— показывает версию CLIyc help
— выводит описание всех команд или справку о команде
Документация о CLIНа предыдущих курсах вы пользовались консолью управления облаком и документацией сервисов Yandex.Cloud. Так вот: любое действие в облаке можно выполнить не только из консоли управления, но и из командной строки — с помощью утилиты yc.На каждой странице документации, где описывается операция, можно посмотреть, как выполнить её в консоли управления и в CLI. Это понадобится, например, если вы захотите автоматизировать действия и написать скрипт.
Иногда проще найти команду в документации о CLI: там есть краткий хорошо структурированный справочник команд.
Кроме того, в документации о CLI описано, как установить yc и что делать, если возникают ошибки.Структура команды CLIБольшинство команд yc строится по следующему принципу:
- Сначала указывается сервис Yandex.Cloud (или группа служебных команд). Например,
compute
. - Затем ресурс, которым управляет сервис. Например,
instance
. - Потом действие, которое необходимо выполнить над ресурсом. Например,
get
. - И в конце — параметры и флаги, меняющие поведение команды, а также (если нужно) идентификатор ресурса.
Например:
В первой команде мы обращаемся к сервису resource-manager
и просим его создать (create
) каталог (folder
), указав имя каталога в параметре --name
:
Скопировать кодyc resource-manager folder create --name project-1
В ответ мы получаем идентификатор только что созданного каталога и другую полезную информацию:
Скопировать кодid: b1g4i1fr007e94ut1kc7
cloud_id: b1gttd235imdk2fdud9p
created_at: "2021-03-27T06:26:39.656888Z"
name: project-1
status: ACTIVE
Идентификаторы ресурсов уникальны. Идентификаторы ваших ресурсов будут отличаться от тех, что приведены в примерах уроков. Копируя команды из урока, подставляйте свои идентификаторы.Некоторые команды принимают сразу несколько параметров. Например, давайте поменяем описание только что созданного каталога:
Скопировать кодyc resource-manager folder update \
--name project-1 \
--description "Learning CLI"
Теперь в информации о каталоге выводится и его описание:
Скопировать кодid: b1g4i1fr007e94ut1kc7
cloud_id: b1gttd235imdk2fdud9p
created_at: "2021-03-27T06:26:39Z"
name: project-1
description: Learning CLI
status: ACTIVE
Чтобы команды лучше читались, их разбивают на несколько строк с помощью символа \ (благодаря ему командная строка поймёт, что вы ввели единую команду, а не три разных строчки).Использование ycВо всех вызовах yc есть что-то общее. Например, для любой команды можно указать, в каком облаке и каталоге её выполнить. Для некоторых команд можно указать, в каком формате вы хотите получить данные: в текстовом, JSON или YAML.Параметры, которые можно использовать с любой командой, называются глобальными. Пример такого параметра — название каталога, в котором надо выполнить команды:
Скопировать кодyc compute instance list --folder-name project-1
Некоторые глобальные параметры нельзя указывать вместе. Например, вы можете выбрать либо название каталога (--folder-name…
), либо его идентификатор (--folder-id …
), но не оба сразу.ПрофилиОбычно для каждого проекта в Yandex.Cloud создаётся отдельный каталог, работа ведётся в нём. Если у вас несколько каталогов — вам быстро надоест указывать --folder-id
или --folder-name
в каждой команде. Чтобы облегчить вашу жизнь, придуманы профили. Профиль — это набор настроек, таких как имя облака и каталога, которые автоматически применяются к каждой команде. Чтобы переключиться на другой каталог, вы создаёте профиль (или переключаетесь в созданный ранее) и продолжаете работу уже в нём.Представьте, что вы только начали проект. Создали для него каталог и теперь создаёте профиль project-1:
Скопировать кодyc config profile create project-1
yc config set folder-name project-1 --profile project-1
Убедимся, что профиль запомнил имя каталога:
Скопировать кодyc config list --profile project-1
Результат выполнения команды должен быть таким:
Скопировать кодfolder-name: project-1
В большинстве случаев при работе с облаком достаточно профиля по умолчанию — default. Он создаётся при первом использовании программы. Давайте снова переключимся из профиля project-1 в профиль по умолчанию и продолжим работу в нём:
Скопировать кодyc config profile activate default
Какие параметры можно задать в профиле, а какие — только для команд, смотрите в разделе Конфигурация CLI документации Yandex.Cloud.
Свежие комментарии