postCreateCommand в разработке удаленного контейнера VSCode не показывает вывод Azure Cli

#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 Ну, вам нужно выбрать между безопасностью и автоматическим сценарием. Но это все. Ни один способ не может идеально сочетать все преимущества. И если ответ решит вашу проблему, пожалуйста, примите его.