Запустите эмулятор хранилища Azure как службу

Мы используем Azure Storage Emulator на машинах разработки и CI-сервере, чтобы иметь возможность локально использовать очереди хранения. Теперь каждый раз, когда я выхожу из Windows или перезагружаюсь, мне нужно вручную запускать эмулятор хранилища.

Есть ли способ запустить эмулятор хранилища Azure как службу, чтобы он автоматически запускался, когда Windows это делает?

2 ответа

Решение

Обновленный ответ после опробования вариантов ответа Гаурава Мантриса

Запуск командного файла, как описано Гауравом Мантри, оставляет командное окно открытым. Вот способ избежать этого:

  • Открыть планировщик заданий
  • Создать новое задание
  • Добавьте триггер "При входе в систему"
  • Добавьте действие "Запустить программу" со следующими настройками:
    • Программа / скрипт: AzureStorageEmulator.exe
    • Добавьте аргументы: start
    • Начинать: C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator (или там, где эмулятор хранилища находится на вашем диске)

Одним из вариантов запуска любого не обслуживающего процесса, такого как консольное приложение, в качестве службы является использование диспетчера неосасывающих услуг в качестве хоста. (Исторически вы могли использовать SRVANY.EXE из Windows NT Resource Kit.)

С помощью NSSM это так же просто, как:

> choco install nssm -y
> nssm install AzureStorageEmulator "C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" start -inprocess

Файлы эмулятора хранилища можно найти в C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator, Я заметил, что пакетный файл там называется StartStorageEmulator.cmd,

Что вы могли бы создать ярлык этого файла в вашем Startup папка (например, C:\Users\<your user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup). Затем при повторном входе в систему эмулятор хранилища запустится автоматически. [Пожалуйста, смотрите инструкции здесь: http://www.tech-recipes.com/rx/28206/windows-8-how-to-add-applications-startup-folder/].

Другой альтернативой является создание новой задачи, которая запускает этот пакетный файл и запланирует выполнение этой задачи при запуске компьютера. Пожалуйста, просмотрите эту ветку для получения более подробной информации: Запустите пакетный файл при запуске.

В нашей среде разработки AX OneBox уже была запланированная задача DynamicsStartAzureStorageEmulatorэто запускает эмулятор как NT AUTHORITY\SYSTEM при запуске. Эмулятор хранения Azure был обновлен (автоматически? Разработчиками?), А затем перестал работать.

Проблема была двоякой:

  1. Он пытался использовать экземпляр LocalDB(SQL Express Subset)

  2. Необходимо было инициализировать новую БД, как СИСТЕМУ.

(Например, раньше было AzureStorageEmulatorDB49, теперь это AzureStorageEmulatorDB510)

Как только я запустил shell / cmd как SYSTEM(используя PSEXEC, и попытался запустить эмулятор, чтобы увидеть вывод ошибки, все остальное было довольно простым).

Решение было довольно простым: запустить оболочку как систему (с помощью Psexec).

PsExec.exe -i -s cmd

И как СИСТЕМА, инициализируйте новую базу данных (в нашем случае, используя "Настоящий" SQL, а не LocalDB / Express.):

AzureStorageEmulator.exe init -server localhost

(Если вы хотите использовать LocalDB, AzureStorageEmulator.exe init должно работать нормально)

Поскольку это было несколько виртуальных машин, я использовал удаленное взаимодействие с PowerShell:

$ListOfHostnames | foreach {.\PsExec.exe \\$_ -i -s "C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" init -server localhost}

(Да, если у вас PwSH 7, вы можете использовать -parallel;)

После этого была простая перезагрузка, чтобы убедиться, что все сработало автоматически.

Дополнительные элементы: я установил запланированное задание на запуск только один раз в день, например, в 5 часов утра, на случай, если оно по какой-то причине не запущено.

У некоторых envs была БД эмулятора на экземпляре LocalDB, который я удалил. Не обязательно, просто чище.

Ссылки:

https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator и https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator

Другие вопросы по тегам