Перейти к содержимому

Установка yc CLI — разбор официального скрипта

Официальный скрипт Yandex MIT License Без sudo

Для подключения Yandex Cloud к OpsMan AI удобно использовать yc — официальный CLI Yandex Cloud. Его устанавливают одной командой:

Окно терминала
curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash

Ниже — полный разбор скрипта. Если вы по понятным причинам не хотите запускать curl | bash вслепую — эта страница для вас.

  • Скрипт официальный, публикуется Yandex и распространяется по лицензии MIT.
  • Он не требует root, не трогает системные директории и не запускает демоны.
  • Всё, что делает: определяет вашу ОС и архитектуру, скачивает бинарник yc в ~/yandex-cloud/bin/, и опционально добавляет одну строку в ваш ~/.bashrc / ~/.zshrc (для $PATH и автодополнения).
  • Перед установкой в ~/yandex-cloud бинарник сначала скачивается во временную директорию, проверяется (yc version), и только если проверка прошла — перемещается на место.
  • URL: https://storage.yandexcloud.net/yandexcloud-yc/install.sh
  • Размер: ~10 KB, ~320 строк.
  • Лицензия: MIT, Copyright (c) 2018 YANDEX LLC — прописана в самом скрипте.
  • Тот же скрипт рекомендован в официальной документации Yandex Cloud.

Скачать скрипт без выполнения, чтобы сравнить самому:

Окно терминала
curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh -o yc-install.sh
less yc-install.sh # читаем
sha256sum yc-install.sh # фиксируем хеш
bash yc-install.sh # запускаем вручную после проверки
СвойствоЗначение
Запускает sudo?Нет
Трогает системные пути (/usr/..., /etc/...)?Нет
Скачивает что-то помимо бинарника yc?Нет
Запускает демоны / cron / службы?Нет
Отправляет телеметрию?Нет (сам скрипт — нет; CLI при работе может отправлять служебные запросы в API Yandex Cloud)
Куда кладёт файлы~/yandex-cloud/
Какие env-переменные меняетДобавляет ~/yandex-cloud/bin в $PATH через source файла в rc
Как удалитьrm -rf ~/yandex-cloud + удалить 2–3 строки из ~/.bashrc/~/.zshrc
Окно терминала
set -euo pipefail

Любая ошибка, неинициализированная переменная или падение в pipeline — немедленный выход. Это хороший знак: скрипт написан аккуратно.

Окно терминала
SYSTEM=${CLI_INSTALL_SYSTEM:-$(uname -s)}
MACHINE=${CLI_INSTALL_MACHINE:-$(uname -m)}
  • Linux, macOS (Darwin), Windows (Cygwin/MinGW/MSYS) — поддерживаются.
  • Архитектуры: amd64, 386, arm64. Для Windows ARM — скрипт откажется с понятной ошибкой.
Окно терминала
SHELL_NAME=$(basename "${SHELL}")
DEFAULT_RC_PATH="${HOME}/.bashrc"
# для zsh → ~/.zshrc, для macOS + bash → ~/.bash_profile

Решает, какой файл потом предлагать модифицировать. Это действие — опциональное; вы можете отказаться (см. ниже про флаг -n).

Окно терминала
while getopts "hi:r:na" opt ; do ...
ОпцияЧто делает
-i DIRУстановить в DIR вместо ~/yandex-cloud
-r FILEМодифицировать указанный rc-файл
-nНе модифицировать rc и не спрашивать об этом
-aАвтоматически модифицировать дефолтный rc без вопроса
-hПоказать help
Окно терминала
CURL_OPTIONS=("-fS")
# + --retry 5 --retry-delay 0 --retry-max-time 120
# + --connect-timeout 5 --max-time 300
# + --retry-connrefused

Все HTTP-запросы к storage.yandexcloud.net идут с нормальными таймаутами и ретраями — не повиснет намертво.

Окно терминала
SDK_STORAGE_URL="https://storage.yandexcloud.net/yandexcloud-yc"
VERSION=$(curl_with_retry -s "${SDK_STORAGE_URL}/release/stable")

Один HTTPS-запрос за номером версии. Переопределяется переменной CLI_VERSION=... — удобно, если нужно зафиксировать конкретный релиз.

7. Скачивает бинарник во временную директорию

Заголовок раздела «7. Скачивает бинарник во временную директорию»
Окно терминала
TMP_INSTALL_PATH=$(mktemp -d "${TMPDIR}/yc-install.XXXXXXXXX")
trap cleanup EXIT # cleanup: rm -rf "${TMP_INSTALL_PATH}"
curl_with_retry "${SDK_STORAGE_URL}/release/${VERSION}/${GOOS}/${GOARCH}/yc" \
-o "${TMP_INSTALL_PATH}/yc"

Бинарник сначала попадает в /tmp (или ваш $TMPDIR). При любом падении сработает trap cleanup EXIT — временная директория удалится. Никаких «частично установленных» состояний.

Окно терминала
chmod +x "${TMP_CLI}"
${TMP_CLI} version || echo "Installation failed..."

Запускает скачанный бинарник с флагом version. Если что-то не так — в stdout будет понятное сообщение. Ни одного действия в вашей системе на этом этапе ещё не сделано.

9. Перемещает бинарник в целевую директорию

Заголовок раздела «9. Перемещает бинарник в целевую директорию»
Окно терминала
mkdir -p "${CLI_INSTALL_PATH}/bin" # ~/yandex-cloud/bin
mv -f "${TMP_CLI}" "${CLI_BIN_FULL_PATH}"
mkdir -p "${CLI_INSTALL_PATH}/.install"

По умолчанию — ~/yandex-cloud/bin/yc. Одна директория в вашем $HOME, ничего вне её.

10. Генерирует файлы для PATH и автодополнения

Заголовок раздела «10. Генерирует файлы для PATH и автодополнения»
Окно терминала
# completion.bash.inc или completion.zsh.inc
"${CLI_BIN_FULL_PATH}" completion bash > "${CLI_BASH_COMPLETION}"
# path.bash.inc: добавляет ~/yandex-cloud/bin в $PATH

Два вспомогательных файла внутри ~/yandex-cloud/:

  • completion.bash.inc или completion.zsh.inc — автодополнение команд.
  • path.bash.inc — экспортирует ~/yandex-cloud/bin в $PATH для текущей shell-сессии, когда этот файл будет подключён.

Это единственное место, где скрипт трогает что-то вне ~/yandex-cloud/. Добавляются две строки в конец .bashrc / .zshrc / .bash_profile:

Окно терминала
# The next line updates PATH for CLI.
if [ -f '/.../yandex-cloud/path.bash.inc' ]; then source '/.../yandex-cloud/path.bash.inc'; fi
# The next line enables shell command completion for yc.
if [ -f '/.../yandex-cloud/completion.bash.inc' ]; then source '/.../yandex-cloud/completion.bash.inc'; fi

Скрипт проверяет grep -Fq, что таких строк ещё нет — значит повторный запуск не задублирует.

Поведение:

  • Без флагов, в интерактивном терминале — спрашивает [Y/n] перед правкой. На «n» не трогает ничего.
  • С флагом -n — не трогает и не спрашивает.
  • С флагом -a или при curl | bash (stdin не TTY) — модифицирует дефолтный rc автоматически.
Окно терминала
"${CLI_BIN_FULL_PATH}" components post-update

Финальный шаг: yc подготавливает свои локальные компоненты в ~/yandex-cloud/.install/. Никаких сетевых запросов здесь нет.

  • Не требует root и не запрашивает пароль.
  • Не пишет в /usr/local/bin, /etc, /var, системные cron.
  • Не скачивает бинарников помимо yc.
  • Не запускает никакие службы в фоне.
  • Не модифицирует PATH окружения без вашего согласия — только через rc-файл, куда вы сами решаете, добавлять ли.

Перед запуском можно:

  1. Скачать без выполнения:

    Окно терминала
    curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh -o yc-install.sh
  2. Прочитать: less yc-install.sh — он читается за 5 минут.

  3. Проверить подпись источника (TLS-сертификат storage.yandexcloud.net подтверждает, что это действительно Yandex).

  4. Запустить с контролем флагов:

    Окно терминала
    bash yc-install.sh -n # без модификации rc
    bash yc-install.sh -i ~/bin/yc-install -n # в произвольную директорию
~/yandex-cloud/
├── bin/
│ └── yc # бинарник, 50–70 MB
├── completion.bash.inc # автодополнение для bash
├── completion.zsh.inc # автодополнение для zsh
├── path.bash.inc # экспорт PATH
└── .install/ # локальные метаданные yc

И максимум две добавленные строки в ~/.bashrc / ~/.zshrc / ~/.bash_profile — легко находятся и легко удаляются.

Окно терминала
# 1. Удалить директорию
rm -rf ~/yandex-cloud
# 2. Убрать ссылки из rc-файла
sed -i.bak '/yandex-cloud\/path.bash.inc/d;/yandex-cloud\/completion\./d' \
~/.bashrc ~/.zshrc ~/.bash_profile 2>/dev/null || true

После этого в системе не остаётся следов yc.

После установки — запустите yc init и следуйте подсказкам.

Далее выполняйте команды создания service account из раздела Подключение Yandex Cloud.