Проверьте, работает ли виртуальная машина Azure.

Я хочу запросить существующую виртуальную машину Azure, чтобы проверить, полностью ли она развернута и к ней можно подключиться удаленно. Есть ли способ сделать это с помощью Azure Rest API?

Ниже я описал свой текущий процесс и почему я хочу такого звонка.

Я использую библиотеку управления Windows Azure для создания виртуальной машины с помощью ComputeManagementClient и функция CreateDeploymentAsync. Затем это возвращает статус Succeeded, если я затем выполняю развертывание, он имеет статус DeploymentStatus.Running.

После этого я пытаюсь создать удаленное соединение powershell, чтобы отформатировать диск. Я продолжаю получать сообщение об ошибке, поскольку он не может создать сеанс.

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

Если я перейду на портал управления Azure, статус будет подготовлен, я предполагаю, что именно поэтому я не могу создать сеанс.

Процесс

CreateAzureVM()
CheckAzureVmCanBeConnectedTo() //I am unable to do this correctly
RunPowershellScriptOnVM() // this fails

person Andrew Poland    schedule 14.08.2014    source источник


Ответы (3)


Вы должны иметь возможность использовать Get Deployment для опроса роли InstanceStatus (обратите внимание, что InstanceStatus != Статус). Когда InstanceStatus имеет значение ReadyRole, вы сможете войти в свою машину.

Существует различие между статусом развертывания и статусом экземпляра роли. Думайте о роли как о реальной виртуальной машине, тогда как развертывание может описывать несколько виртуальных машин.

person Greg D    schedule 15.08.2014

SubscriptionCloudCredentials certificate = new CertificateCloudCredentials(subscriptionId, x509Certificate);

IComputeManagementClient ComputeManagementClient = new ComputeManagementClient(certificate);

var deployments = ComputeManagementClient.Deployments.GetBySlot(hostedServiceName, DeploymentSlot.YourDeploymentSlot);

var state = deployments.RoleInstances.First().PowerState;

Я надеюсь, что это поможет вам.

person HuckFin.7b    schedule 25.06.2015

Не видя вашего кода, трудно точно сказать, что вам нужно сделать, но я бы порекомендовал вам использовать ключевое слово await, чтобы дождаться завершения вызова API Azure для создания виртуальной машины. См. примеры кода в разделе «Развертывание виртуальной машины» в этом руководстве MSDN: http://msdn.microsoft.com/en-us/library/azure/dn722415.aspx#bk_createres

person Simon W    schedule 15.08.2014