Подготовка виртуальных машин Azure с настраиваемого виртуального жесткого диска с помощью saltstack

Я использую профиль соляного облака для предоставления виртуальной машины на лазурном сервере с пользовательского виртуального жесткого диска, но это занимает около 40 минут, а затем не могу сказать "

Не удалось выполнить подготовку. Подготовка ОС для виртуальной машины customtestpsvm не завершена в отведенное время. Виртуальная машина все еще может успешно завершить подготовку. Проверьте состояние инициализации позже. OSProvisioningTimedOut

"

Я выполняю следующие шаги:

  1. Создайте лазурную виртуальную машину на портале.
  2. RDP в эту виртуальную машину и внесите необходимые изменения (открытый порт и все) и sysprep.
  3. Скопируйте виртуальный жесткий диск OSDisk виртуальной машины в хранилище BLOB-объектов с помощью команды Start-AzureStorageBlobCopy powershell.
  4. Дождитесь завершения копирования.
  5. Затем используйте uri vhd (в хранилище BLOB-объектов) в качестве изображения в профиле солевого облака.

Я использую солевой профиль:

azure-win:
  cleanup_data_disks: True
  cleanup_disks: True
  cleanup_interfaces: True
  cleanup_vhds: True
  deploy: False
  expire_group_cache: 86400
  expire_interface_cache: 3600
  expire_network_cache: 3600
  expire_offer_cache: 604800
  expire_publisher_cache: 604800
  expire_sku_cache: 604800
  expire_subnet_cache: 3600
  expire_version_cache: 604800
  image: https://crimasterdisks791.blob.core.windows.net/vhds/custompsimage.vhd
  location: EastUS
  network: AzureARM-SanRamon-New
  network_resource_group: AzureARM-SanRamon-New-ResGrp
  os_disk_size_gb: 140
  provider: P_Azure
  resource_group: AzureARM-SanRamon-New-ResGrp
  security_group: cri-azure
  size: Basic_A1
  win_password: Spam99$$
  win_username: azureuser
  storage_account: crimasterdisks791
  subnet: ARM-Subnet1

person Narinder Verma    schedule 08.02.2018    source источник


Ответы (2)


См. Предложения, указанные в приведенных ниже ссылках. https://github.com/saltstack/salt/issues/38907 https://github.com/saltstack/salt/issues/41315

Пользовательское выполнение, состояние и другие модули Salt могут быть переданы миньонам Salt с помощью файлового сервера Salt. Под корнем любой среды, определенной с помощью параметра file_roots на главном сервере, могут использоваться каталоги, соответствующие типу модуля. Каталоги начинаются с подчеркивания: https://docs.saltstack.com/en/latest/ref/file_server/dynamic-modules.html

Azure - это облачная служба Майкрософт, предоставляющая виртуальные машины, службы SQL, мультимедийные службы и многое другое. В этом документе описывается, как использовать Salt Cloud для создания виртуальной машины в Azure с установленной Salt. https://docs.saltstack.com/en/latest/topics/cloud/azure.html

Операция подготовки. Это причина, по которой вы столкнулись с этой проблемой, и это может быть по нескольким причинам (в зависимости от конфигурации виртуальной машины, местоположения, размера)

Не могли бы вы попробовать импортировать следующее: https://github.com/saltstack/salt/blob/develop/salt/cloud/clouds/azurearm.py#L77-L112 Это все необходимые зависимости для azurearm. Так что это поможет сузить круг вопросов, если у вас есть правильные зависимости. Вы можете протестировать этот импорт, запустив python -c 'import azure.storage' для этого импорта в своем солевом облаке. И если вы получаете ошибку импорта на любом из них, значит, вам не хватает этой зависимости.

person SumanthMarigowda-MSFT    schedule 08.02.2018
comment
Когда я использую образ из Marketplace, подготовка идет нормально. - person Narinder Verma; 09.02.2018

Это было решено путем выполнения шагов из https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sa-copy-generalized?toc=%2Fazure%2Fvirtual-machines%2Fwindows%2Ftoc.json Но для того, чтобы он заработал, требуется еще одно изменение в солевом коде,

Для пользовательского изображения параметр os_type зависит от параметра win_installer,

if vm_['image'].startswith('http'):
# https://{storage_account}.blob.core.windows.net/{path}/{vhd}
source_image = VirtualHardDisk(vm_['image'])
img_ref = None
if win_installer:
os_type = 'Windows'
else:
os_type = 'Linux'

Но если мы сделаем развертывание как False, мы не дадим win_installer, а в случае пользовательских образов Windows также os_type будет установлен на Linux, и поэтому это не помогло.

Я внес некоторые изменения в код, который n дал os_type прямо в профиле, чтобы он работал

person Narinder Verma    schedule 09.03.2018