#visual-studio-code #containers #azure-cli
#visual-studio-code #контейнеры #azure-cli
Вопрос:
Я запускаю скрипт bash как postCreateCommand при создании контейнера удаленной разработки VSCode. В этом сценарии bash команда az login
. Проблема в том, что эта команда не выводит данные, и поэтому я не могу войти в Azure CLI. При запуске вручную в терминале это работает.
в devcontainer.json есть эта команда: "postCreateCommand": "bash .devcontainer/install.sh",
install.sh содержит только одну строку: az login
Ожидаемый результат должен запрашиваться Azure CLI для входа microsoft.com/devicelogin
с использованием кода.
Вывод VSCode не показывает никаких выходных данных Azure CLI; он только сообщает, что install.sh
скрипт выполняется, и он ожидает, пока az login
команда не выдаст ошибку тайм-аута и не завершится.
Ответ №1:
Команда CLI az login
является интерактивной командой. Если вы хотите использовать его в сценарии без ввода, вам нужно изменить его на неинтерактивную команду. Я рекомендую вам использовать принцип службы для его достижения:
az login --service-principal -u username -p password --tenant tenantId
Эта команда CLI будет выполняться напрямую без ввода и выдаст результат, если у участника службы нет проблем.
Комментарии:
1. Да, это один из вариантов, но я намерен войти в систему пользователя, который запускает контейнер разработки, чтобы у него был доступ ко всей Azure через личную учетную запись.
2. @tomab Если у вашей учетной записи пользователя есть только учетные данные пароля, вы можете напрямую ввести имя пользователя и пароль в скрипт. Но если вы используете устройство или другую аутентификацию, у вас нет выбора.
3. @tomab Есть еще обновления по вопросу? Решает ли это вашу проблему?
4. Я неохотно прошу пользователя ввести пароль, и я не могу перейти к участнику службы для всех. Вероятно, на данный момент можно попросить пользователя запустить пользовательский сценарий powershell, чтобы они могли использовать всю его интерактивность.
5. @tomab Ну, вам нужно выбрать между безопасностью и автоматическим сценарием. Но это все. Ни один способ не может идеально сочетать все преимущества. И если ответ решит вашу проблему, пожалуйста, примите его.