0

Как пользоваться утилитой yc

26.04.2022

Что такое 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… — MySQL
  • yc managed-postgresql… — PostgreSQL
  • yc managed-clickhouse… — ClickHouse

Есть ещё небольшая группа служебных команд:

  • yc init — первоначальная настройка CLI
  • yc version — показывает версию CLI
  • yc help — выводит описание всех команд или справку о команде

Документация о CLIНа предыдущих курсах вы пользовались консолью управления облаком и документацией сервисов Yandex.Cloud. Так вот: любое действие в облаке можно выполнить не только из консоли управления, но и из командной строки — с помощью утилиты yc.На каждой странице документации, где описывается операция, можно посмотреть, как выполнить её в консоли управления и в CLI. Это понадобится, например, если вы захотите автоматизировать действия и написать скрипт.

image

Иногда проще найти команду в документации о CLI: там есть краткий хорошо структурированный справочник команд.

image

Кроме того, в документации о CLI описано, как установить yc и что делать, если возникают ошибки.Структура команды CLIБольшинство команд yc строится по следующему принципу:

  • Сначала указывается сервис Yandex.Cloud (или группа служебных команд). Например, compute.
  • Затем ресурс, которым управляет сервис. Например, instance.
  • Потом действие, которое необходимо выполнить над ресурсом. Например, get.
  • И в конце — параметры и флаги, меняющие поведение команды, а также (если нужно) идентификатор ресурса.

Например:

image

В первой команде мы обращаемся к сервису 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.

Свежие комментарии

Подписка

Лучшие статьи


Fatal error: Uncaught Error: Call to a member function have_posts() on null in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php:380 Stack trace: #0 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/widget.php(257): fox56_blog_grid(NULL, Array) #1 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/register.php(33): include('/home/host18670...') #2 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/class-wp-widget.php(394): Wi_Widget_Latest_Posts->widget(Array, Array) #3 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/widgets.php(837): WP_Widget->display_callback(Array, Array) #4 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(417): dynamic_sidebar('sidebar') #5 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(136): fox56_single_sidebar() #6 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(7): fox56_single_inner() #7 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/single.php(23): fox56_single() #8 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/template-loader.php(106): include('/home/host18670...') #9 /home/host1867038/the-devops.ru/htdocs/www/wp-blog-header.php(19): require_once('/home/host18670...') #10 /home/host1867038/the-devops.ru/htdocs/www/index.php(17): require('/home/host18670...') #11 {main} thrown in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php on line 380