Практическая работа. Начало работы в CLI
Кратко:
- Установка и настройка утилиты yc для работы с CLI.
- Настройка программы для работы с аккаунтом и облаком с помощью команды yc init.
- Получение токена для доступа к аккаунту и облаку после настройки.
- Использование флага --help для уточнения синтаксиса и порядка действий при работе с CLI.
- Синхронный и асинхронный режимы работы с CLI для выполнения команд без задержек или с ожиданием завершения операций.
- Использование флага --async для выполнения команд асинхронно.
- Проверка результатов выполнения операций с помощью идентификатора операции.
Практическая работа. Начало работы в CLI
На этой практической работе мы установим утилиту
yc, познакомимся с режимом подсказок --help и выполним несколько простых команд.Установка CLI
Первым делом скачайте и установите CLI (если вы ещё не сделали этого в предыдущих курсах).
curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash
sudo mv ~/yandex-cloud/bin/* /usr/local/bin
rm -rf ~/yandex-cloud/
Теперь настройте программу для работы с вашим аккаунтом и облаком. Для этого запустите командную строку и введите команду:
yc init
Срок жизни токена — один год. Через год необходимо получить новый токен и повторить аутентификацию.
Если кто-то узнал ваш токен, отзовите его и запросите новый.
Продолжайте установку: выберите облако, каталог и зону доступности по умолчанию. Следуйте указаниям системы и завершите настройку.
Готово!
При установке автоматически создается профиль
default, в него записываются выбранные настройки.Список профилей можно посмотреть командой:
yc config profile list
На прошлом уроке вы узнали о флагах, которые используются при запуске команд. Пожалуй, самый важный и частый флаг —
--help (сокращенно -h), поэтому поговорим о нём подробнее.Команд для управления ресурсами облака много. Вы запомните некоторые, но помнить всё невозможно. Пользуйтесь флагом
--help, когда пишете команду. В этом случае она не выполняется, а в консоль выводится информация о ресурсах, которыми управляет команда, и параметрах запуска.Помните, на предыдущем уроке мы говорили о типичной структуре большинства команд CLI (сервис — ресурс — действие — флаги)?
Важная особенность флага
--help заключается в том, что его можно применять для каждого уровня этой структуры и писать команду постепенно.В этой практической работе нам понадобится ВМ в облаке. Если у вас нет ВМ — создайте её в консоли управления, как мы это делали в предыдущих курсах.
Допустим, вы хотите перезапустить эту ВМ, но не помните полный синтаксис команды.
- Сначала вызовите описание сервиса Yandex Compute Cloud:
yc compute --help
Вы увидите синтаксис команды (раздел Usage), список ресурсов, которыми можно управлять (Groups), а также действий (Commands) и флагов:
Usage:
yc compute <group|command>
Groups:
instance Manage virtual machine instances
disk Manage disks
disk-type Show available disk types
image Manage images
snapshot Manage snapshots
zone Show availability zones
instance-group Manage instance groups
placement-group Manage placement groups
host-type Show available host types
host-group Manage host groups
disk-placement-group Manage disk placement groups
filesystem Manage filesystems
Commands:
connect-to-serial-port Connect to serial port
Global Flags:
--profile string Set the custom configuration file.
--debug Debug logging.
--debug-grpc Debug gRPC logging. Very verbose, used for debugging connection problems.
--no-user-output Disable printing user intended output to stderr.
--retry int Enable gRPC retries. By default, retries are enabled with maximum 5 attempts.
Pass 0 to disable retries. Pass any negative value for infinite retries.
Even infinite retries are capped with 2 minutes timeout.
--cloud-id string Set the ID of the cloud to use.
--folder-id string Set the ID of the folder to use.
--folder-name string Set the name of the folder to use (will be resolved to id).
--endpoint string Set the Cloud API endpoint (host:port).
--token string Set the OAuth token to use.
--format string Set the output format: text (default), yaml, json, json-rest.
-h, --help Display help for the command.
- Вам нужна ВМ — ресурс
instance. Теперь узнайте, как получить список активных ВМ и какая команда отвечает за перезапуск:yc compute instance --help
- Сначала получите список ВМ, это команда
list:yc compute instance list
- На шаге 2 вы нашли команду перезапуска —
restart, теперь можно посмотреть её синтаксис:
yc compute instance restart --help
- Наконец, вы получили полный синтаксис команды перезапуска. Примените её к ВМ:
yc compute instance restart --name <имя_ВМ>
По такому принципу вы можете сформировать в консоли любую команду.
Итак, подведём итоги. Чтобы уточнить синтаксис или порядок действий при работе с CLI, выберите один из трёх путей:
- найдите нужное действие на странице сервиса Yandex Cloud в документации и там переключитесь на вкладку CLI;
- найти команду в справочнике о
yc; - воспользуйтесь флагом
--help, шаг за шагом уточняя возможности и синтаксис команды.
Синхронный и асинхронный режимы работы
Некоторые команды выполняются очень быстро. Например, создание каталога или просмотр настроек профиля. Такие команды можно выполнять подряд, одну за другой — без задержек.
Если при выполнении команды ресурс изменяет состояние, создается операция. Примеры операций — перезапуск ВМ после обновления или резервное копирование базы данных.
Если каждая следующая команда ждёт завершения предыдущей операции, такой режим выполнения называется синхронным. Когда какая-то операция в синхронном режиме выполняется долго, CLI выводит в консоли точки и время с начала операции, чтобы показать, что процесс не завис:
...1s...6s...12s...17s
Чтобы выполнить команду асинхронно, используйте флаг
--async.Перезапустите одну из ранее созданных ВМ в асинхронном режиме (в команде укажите имя этой ВМ):
yc compute instance restart --name <имя_ВМ> --async
В ответ на асинхронный вызов CLI выводит идентификатор операции (в поле
id) и информацию о ней:id: fhm5k7iq03rm2s7enhdk
description: Restart instance
created_at: "2021-03-27T08:32:47.562595036Z"
created_by: aje9cb7k03512mrugcee
modified_at: "2021-03-27T08:32:47.562595036Z"
metadata:
'@type': type.googleapis.com/yandex.cloud.compute.v1.RestartInstanceMetadata
instance_id: fhm2p20bifmg3k3voda7
id: fhm5k7iq03rm2s7enhdk
...
done: true
...