Как узнать, управляется ли виртуальная машина Azure (не)?

Как узнать, является ли виртуальная машина (не)управляемой? Это означает, что у VM есть только (не)управляемые диски, поскольку они не могут быть смешаны (насколько мне известно).

Первоначально я использовал Azure Fluent SDK< /а>. Но у меня с этим проблемы, и есть даже некоторые проблемы.

Единственный способ выяснить это — просмотреть диски (или проверить только один, поскольку их нельзя перепутать) и проверить, не является ли (не)управляемым сам диск (диски). Это правильно?

Вопрос в том, как узнать, является ли диск (не)управляемым? Моя первая идея — проверить свойство OSDisk. (или DataDisk, если на то пошло)

  • Если у него есть свойство manageDisk/id, то это явно управляемый диск.
  • Если у него есть свойство vhd/uri, то это явно неуправляемый диск.

Это кажется достаточно простым (и я почти уверен, что это работает по крайней мере в 99% случаев, но мне действительно нужно быть уверенным на 100%), но если вы проверите исходный код библиотеки Fluent SDK (от Microsoft, так что является лучшим источником правды ?) логика намного сложнее. Кроме того, у меня есть сомнения, что это правильно (см. ошибку выше).

Короче говоря, какой в ​​100% случаев надежный способ проверить, управляется ВМ или нет?


person robot40q    schedule 03.02.2021    source источник
comment
Кстати, вы смотрели на Azure Resource Explorer?   -  person Dai    schedule 03.02.2021
comment
Глядя на свой собственный Azure Resource Explorer ( resources.azure.com ), я могу перечислить виртуальные машины под subscriptions/{sub}/providers/Microsoft.Compute/virtualMachines и после разбора Ответ JSON, определите, имеет ли виртуальная машина 100% или не 100% управляемые диски — достаточно ли этого для ваших целей? Если да, то написать клиент для этого несложно.   -  person Dai    schedule 03.02.2021
comment
2Dai: Остается вопрос. Вы написали после анализа ответа JSON, определите, имеет ли виртуальная машина 100% или не 100% управляемые диски. Отличается ли JSON от REST API? Если да, то как? Если нет, то по каким свойствам вы определяете, является ли диск управляемым или нет?   -  person robot40q    schedule 03.02.2021
comment
Вы смотрели в Resource Explorer?   -  person Dai    schedule 03.02.2021
comment
Да, похоже, он возвращает тот же JSON, что и REST API. Для ответа на ваш вопрос этого недостаточно. Как на 100% определить, управляемый диск или нет? Как я уже писал в исходном вопросе, я не совсем уверен...   -  person robot40q    schedule 03.02.2021


Ответы (1)


Все ваши рассуждения о (не)управляемой виртуальной машине верны, я просто могу это подтвердить. И чтобы определить, является ли виртуальная машина управляемой виртуальной машиной, вам нужно только проверить, является ли диск ОС управляемым диском, что означает, не является ли свойство managedDisk диска ОС не равным нулю.

Как известно, управляемые и неуправляемые диски нельзя смешивать. Таким образом, если диск операционной системы является управляемым, то виртуальная машина должна быть управляемой виртуальной машиной, поскольку каждая виртуальная машина должна иметь один диск операционной системы.

person Charles Xu    schedule 04.02.2021
comment
Спасибо за ответ. Имеет смысл проверить только диск ОС. Я думаю, мы могли бы проверить любой диск, но диск ОС, вероятно, всегда там. Ваш ответ более или менее соответствует тому, что я предлагаю в своем исходном сообщении (если у него есть свойство manageDisk/id, то это, очевидно, управляемый диск). Но вы уверены, что это на 100% надежно? У вас есть источник, подтверждающий это? Причина, по которой я сомневаюсь, заключается в том, что этот ответ в основном говорит о том, что логика в библиотеке MS (упомянутая в исходном сообщении) неверна, что странно, потому что логика более сложная и менее интуитивная, поэтому может быть причина. - person robot40q; 04.02.2021
comment
@ robot40q Где вы обнаружите, что эта логика неверна в библиотеке MS? - person Charles Xu; 04.02.2021
comment
@ robot40q На самом деле нет документа, который показал бы вам, как проверить, управляется ли виртуальная машина или нет. Вам нужно сделать это самостоятельно. Возможно, это один будет полезен. - person Charles Xu; 04.02.2021
comment
См. исходный код на GitHub. - person robot40q; 04.02.2021
comment
@ robot40q Вы можете видеть все условия и результаты, когда условие истинно. Наконец, вы можете обнаружить, что когда каждое условие истинно, managedDisk будет таким, как мы ожидали. Так что не должно быть ничего, что смущало бы вас. - person Charles Xu; 18.02.2021
comment
Спасибо за ответ, но я не уверен, что следую. Первоначально вы сказали, что я могу отличить его, как я написал в исходном сообщении (свойство ManagedDisk/id или vhd/uri). Теперь вы говорите, что я могу следовать коду, где другая логика (и есть некоторые открытые вопросы по этому поводу). Так что я даже не уверен, что вы считаете правильным решением. Как я уже писал, я ищу окончательное 100% надежное решение, но вы просто предлагаете решения из исходного сообщения без каких-либо резервных копий, что на данный момент не очень полезно. - person robot40q; 19.02.2021
comment
@ robot40q Это одна и та же логика, а не другая. Я думаю, ты не умеешь находить истину логики. - person Charles Xu; 25.02.2021
comment
Можете ли вы уточнить? Я действительно не понимаю, как логика такая же. - person robot40q; 25.02.2021
comment
Как я уже сказал, свойство виртуальной машины @ robot40q managedDisk является базовой логикой. А можно проверить, к чему приводит логика в примере с Github? Если условия в Github верны, как выглядит виртуальная машина? Конечно, виртуальная машина должна иметь свойство managedDisk, и оно не равно нулю. Просто проверьте это! - person Charles Xu; 25.02.2021
comment
Я согласен, что если он управляемый, то должен быть управляемый диск. Но вы в основном говорите, что логика в примере с GitHub по крайней мере не нужна (если не ошибочна). Почему существует несколько проверок нескольких свойств, если можно было просто проверить свойство manageDisk? Я просто не могу игнорировать это, ищу простое решение и надеюсь, что оно будет работать каждый раз. - person robot40q; 25.02.2021