2016-08-23 9 views
0

Я работаю над настройкой процесса сборки для использования развертывания AWS-кода с группой автомасштабирования. Мне удалось получить код, построенный и зашифрованный с помощью файлов appspec.yml и BeforeInstall.bat, которые были правильно перемещены до S3. При правильном развертывании кода файл zip распаковывается, распаковывает его и вызывает PreInstall.bat. Пакетный файл 3 шагиРазвертывание кода AWS при вызове Msdeploy

  1. Остановка приложения бассейн
  2. Остановить сайт
  3. Вызов website.deploy.cmd

Он правильно получает через шаги 1 и 2, но потом, когда его попадает к шагу 3, она вызывает MSDeploy и возвращает эту ошибку:

Error: There was an error reading IIS configuration schema from 'C:\Windows\system32\inetsrv\config\schema\'

Th что это, скорее всего, проблема с разрешением, я зашел на один из серверов и вручную запускал скрипт cmd. Он отлично развертывается, что неудивительно, учитывая, что я вошел в систему как администратор. Затем я открыл сценарий powershell как пользователя LocalSystem (что и запускает CodeDeploy Host Agent Service) и запускает скрипт cmd. Он успешно завершен. Я запустил весь пакетный файл как пользователь LocalSystem. Он прошел успешно.

Затем я вернулся и добавил echo %username% в пакетный скрипт, совершил, построил и запустил новое развертывание. Я вижу этого пользователя в блоке развертывания кода WIN-49GNL2FRHJ4$. Развертывание все еще не выполняется. Когда я запускаю пакетный скрипт в окне из окна powershell, как Administrator, я, конечно, вижу, что вышло Administrator. Сценарий преуспевает. Когда я запускаю командный скрипт из окна powershell в качестве LocalSystem, я вижу WIN-49GNL2FRHJ4$, так же, как когда он запускается из CodeDeploy через консоль AWS, но он успешно запускается.

Что отличаетс от того, как консоль AWS вызывает этот пакетный файл как пользователь LocalSystem и как я называю его этим пользователем через окно powershell?

ответ

0

Похоже, проблема заключалась в установке старой версии Web Deploy. Я пошел искать журналы и понял, что я как-то установил v2 (возможно, по умолчанию, когда я установил IIS на экземпляр EC2). Я загрузил и установил последнюю версию (v 3.6 на момент написания этой статьи) и создал новое развертывание. Код развернут, как ожидалось.