Автоматическое развертывание Windows Failover кластеров в Azure и еще один пример неработающего публичного кода и поддержки от Microsoft


Смотри на действование Microsoft: ибо кто может выпрямить то, что Он сделал кривым? (Екк. 7:13)

Верить в наше время нельзя никому, порой даже самому себе. Мне — можно. (Старина Мюллер)

Северный пушной зверек подкрался незаметно, откуда его никто не ждал… (Работа)

Начало этой истории (которая по странному стечению обстоятельств практически совпала с другой историй про Microsoft support, о которой я писал ранее и с еще более печальной историей про бан моего курса по экзамену AZ-900 со стороны Microsoft) было драматичным… Заказчик присылает на развертывание дизайн ресурсной группы в Azure, в котором кроме всего прочего – еще и 6 Windows Failover Clusters по 2 сервака в каждом и с обычными сроками «на завтра». В принципе, все есть – ARM templates много раз деланы-переделаны, отдельные ARM template/DSC для кластеров официально опубликованы Microsoft на GitHub – https://github.com/Azure/azure-quickstart-templates/tree/master/301-storage-spaces-direct . Звоню заказчику, торгуюсь по срокам, договариваемся «на послезавтра, иншааллах». В моем отделе не принято «сетапить ручками» или сдавать заказчику непроверенные пакет ARM/DSC/PowerShell скриптов – потому день будет на тестирование «на всякий случай», хотя скрипты уже множество раз протестированы и отлажены на предыдущих деплойментах, в том числе и для этого заказчика буквально месяц назад – в общем, на 100% уверены и тестовое развертывание – это «чистая формальность»…

Ага! «Формальность»! Как же! До того момента, как следом за Microsoft с его комплектом ARM/DSC/PowerShell для развертывания кластера на GitHub не подкрался тот самый северный пушной зверек. Народ сразу взялся за дело и … смотрит на меня слегка офигевшими от прихода зверька глазами. Microsoft’овский скрипт для развертывания кластера выдает при тестовом прогоне ошибку:

“DSC Configuration \u0027ConfigS2D\u0027 completed with error(s). Following are the first few: PowerShell DSC resource MicrosoftAzure_xCluster failed to execute Set-TargetResource functionality with error message: The running command stopped because the preference variable “ErrorActionPreference” or common parameter is set to Stop: The network path was not found.\r\n The SendConfigurationApply function did not succeed. LCM failed to start desired state configuration manually.”

и деплоймент всего ARM шаблона обваливается 😦 Понятно, что «на послезавтра» сделать кластеры можно, но «ручками», а это не наш стиль – все инфраструктуры клиентов у нас хранятся в ARM/DSC/PowerShell и даже если нет полной копии сайта в Azure Site Recovery, а только бекапы – восстановление/развертывание копии инфраструктуры заказчика с наличием таких скриптов занимает от минут до нескольких часов.

И вот тут до меня начинает доходить весь круг тех проблем, которые очертил своими лапками пушной зверек, вызванный нежеланием Microsoft сопровождать и тестировать свои скрипты после очередных апдейтов (типа, мы вам их «кинули» 3 года назад и чего это вы еще недовольны?). А проблема в том, что примерно в 1/3 от всех развернутых клиентских инфраструктур у нас присутствуют кластеры и это означает, что случись сейчас что или клиенты захотят «дубликаты» – то у нас нет рабочих скриптов «быстро все повторить». В общем, «зверек» разгулялся по полной…

Быстрое изучение вопроса и поиск решения показало только то, что проблема не только у нас, но есть еще люди на просторах Интернета и даже успели опубликовать проблему в репозитории – https://github.com/Azure/azure-quickstart-templates/issues/6932 – но самое главное в данной ситуации, что никому в Microsoft проблема со скриптом на GitHub для развертывания кластера в Azure не интересна – запрос висит уже месяц и только дополнился еще одним пострадавшим… Ну не работает у людей инфраструктура в Azure – проблемы индейцев пользователей шерифа Microsoft не волнуют, Azure не требует поддержки для пользователей по мнению самого Microsoft. Кстати, и запрос к техническому специалисту в Microsoft, который привязан к конкретному заказчику «пошуршать по продуктовой команде и найти тех, кто выправит то, что сделалось кривым» – так и ушел «вникуда»… Периодически пингую «специалиста» последнюю неделю без какого-либо успеха… А что, Рождество же, Azure и проблемы могут и подождать, «ручками развернете и сконфигурите кластеры»…

Заранее предполагая такую проблему с тем, что в Microsoft об восстановлении скрипта никто и «не почешится», решил сделать запасной вариант развертывания кластеров в Azure, интегрированный в ARM template и использующий «чистый» PowerShell – разбираться, что пошло не так со сценарием DSC в «оригинальном» решении Microsoft, времени и желания не было.

Потому, пока Microsoft не пофиксит (может быть) «главный скрипт», вот вам основная идея, как автоматически развертывать кластеры в Azure через ARM с zero-touch. Да, получилось не так универсально, как в оригинале, но оно простое и понятное для всех, легко модифицируется и, главное, работает 😉

Итак, основные технические нюансы и сам код:

Первое – в Azure можно поднять только Windows Failover Cluster в режиме Storage Spaces Direct на 3 узла максимум. Кроме того, не все нагрузки поддерживаются в таком режиме в Azure, и, самое главное – цена вопроса, поскольку требуются производительные премиумные SSD диски для работы дисковой системы в режиме репликации Storage Spaces Direct в таком кластере.

Второе – чтобы развернуть кластер, необходимо, чтобы виртуальные машины, в нем участвующие, как узлы, имели частные статические IP в виртуальной сети Azure и были добавлены в единый Availability Set. ОС внутри этих ВМ должны быть добавлены в домен (кстати, если нужно только добавить ВМ в домен, то это можно сделать и непосредственно в ARM через расширение JsonADDomainExtension), на них установлены необходимые роли и службы. Это не проблема, такую работу выполняет простой PowerShell скрипт:

[CmdletBinding()]

param (

    [Parameter()]

    [string]

$domainname,

    [string]

$biosname,

    [string]

$adminname,

    [string]

$adminpwd

)

#Online the cluster’s disks

Get-Disk |  Where-Object IsOffline -eq $true | Set-Disk -IsOffline $false

#install failover clustering services and tools

Install-WindowsFeature Failover-Clustering -IncludeAllSubFeature -IncludeManagementTools

Start-Sleep -Seconds 5

Install-WindowsFeature FS-FileServer

Start-Sleep -Seconds 5

# generate domain admin’s credentials for domain join

$adminusername = “$biosname\$adminname”

$password = ConvertTo-SecureString -String $adminpwd -AsPlainText -Force

$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $adminusername, $password

Add-Computer -DomainName $domainname -Credential $cred -Restart -Force

Скрипт помещается в виде файла в какой-то Azure BLOB Storage (не забудьте разрешить анонимный доступ к объектам внутри контейнеров, хотя можно и заморочиться с атрибутам ресурса и указанием ключа доступа к этому BLOB) и запускается такой скрипт внутри VM из ARM template, как ресурс для создаваемой виртуальной машины с использованием extentions типа CustomScriptExtention, с указанием правильного пути к скрипту, который вы только что скопировали в BLOB (атрибут fileUris) и генерацией правильной командной строки (атрибут commandToExecute). Вот пример фрагмента кода именно ресурса (должен быть пристыкован к BМ) для ARM template:

“resources”: [

            {

“type”: “extensions”,

“name”: “CustomScriptExtension”,

“apiVersion”: “2017-03-30”,

“location”: “[parameters(‘location’)]”,

“dependsOn”: [

“[concat(‘Microsoft.Compute/virtualMachines/’, parameters(‘vmname1av1’))]”,

“[concat(‘Microsoft.Compute/virtualMachines/’, parameters(‘vmname2av1’))]”

              ],

“properties”: {

“publisher”: “Microsoft.Compute”,

“type”: “CustomScriptExtension”,

“typeHandlerVersion”: “1.8”,

“autoUpgradeMinorVersion”: true,

“settings”: {

“fileUris”: [

https://mystorage.blob.core.windows.net/CL/pre-setupVM.ps1”

                  ],

“commandToExecute”: “[concat(‘powershell -ExecutionPolicy Unrestricted -File pre-setupVM.ps1 -domainname ‘, parameters(‘domainname’), ‘ -biosname ‘, parameters(‘netbiosname’), ‘ -adminname ‘, parameters(‘adminUsername’), ‘ -adminpwd ‘, parameters(‘adminPassword’))]”

}

}

}

]

Еще хочу обратить внимание на формирование строки для выполнения пользовательского скрипта – начинается она с вызова powershell с правильными параметрами -ExecutionPolicy Unrestricted и указанием имени файла вашего скрипта в параметре -File.

Данный скрип будет запущен после развертывания самой виртуальной машины ARM шаблоном и сконфигурирует диски, установит нужные роли и службы в виртуальную машину, добавит ее в домен и перезагрузит.

Третье – и вот тут, после выполнения скрипта и перезагрузки каждой машины начинаются проблемы. ARM считает свою работу по запуску скриптов выполненной и, самое главное, в описание каждой из виртуальной машины в ARM template вы можете добавить только один ресурс типа extensions/CustomScriptExtension. А после перезагрузки нам нужно запустить на одном из узлов будущего кластера еще один скрипт, который сформирует кластер. Сделать это в ARM template нельзя – второй скрипт не указывается, и объяснить ARM, что после перезагрузки на машине стартует еще один скрипт и окончания его работы тоже нужно дождаться – тоже не получится… Потому – занимаемся «лайфхакингом». Если нельзя сделать внутри ARM template, это можно сделать в скрипте PowerShell, который запускает развертывание ARM template. Схематически такой скрипт выглядит следующим образом:

  1. Запускаем команду PowerShell на развертывание ARM – New-AzResourceGroupDeployment с указанием файла «большого» ARM, который развернет всю требуемую инфраструктуру и запустит на требуемых виртуалках скрипт конфигурации машины (выше);
  2. А теперь «хак» – для каждой из виртуальных машин, где уже был выполнен скрипт, запускаем команду по удалению расширения, что позволит выполнить еще одно развертывание ARM со вторым скриптом, который и сконфигурирует кластер – Remove-AzAMCustomScriptExtention . Единственное НО тут – это то, что данная команда для каждой из ВМ выполняется достаточно долго – 3-5 минут.
  3. Снова запускаем New-AzResourceGroupDeployment – на этот раз для развертывания второго шаблона ARM, в котором для каждой второй виртуальной машины (одной из пары узлов кластера) выполняется другой скрипт, как extensions/CustomScriptExtension.

Четвертое – для работы кластера требуется кворум, который для нашего варианта в Azure реализуется с использованием Cloud Witness. Для этого требуется создать Azure BLOB Storage, получить Access Key этого хранилища и использовать ключ для конфигурирования кворума кластера в режиме Cloud Witness. Потому в логике скрипта выше появляется еще один пункт 2а, где после создания инфраструктуры и сервисов (в том числе и хранилища для Cloud Witness) и удаления первых расширений, мы получаем ключи доступа для созданных хранилищ и на следующем шаге передаем их как параметр в новый ARM template – и дальше уже внутри ARM они будут переданы в вызываемый через extensions/CustomScriptExtension скрипт PowerShell для создания непосредственно кластера.

Итого, общий код PowerShell скрипта, который будет выполнять развертывание двух ARM template, с переключением extensions/CustomScriptExtension и получением ключей хранилища:

# deploy basic infrastructure from main ARM template (defined in $templateFilePath)

New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -Mode Incremental -TemplateFile $templateFilePath -TemplateParameterObject $Params | Out-Null

# delete CustomScriptExtension from deployed VMs (names should be defined in $deployedVMs array)

foreach($vmname in $deployedvms){

Remove-AZVMCustomScriptExtension -ResourceGroupName $ResourceGroupName -VMName $vmname -Name “CustomScriptExtension” -Force | Out-Null

}

# get storage account’s key for Cluster quorum Cloud Witness and set values in $Params object for next ARM deployment

$keys = Get-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $Params[‘storagename1’]

$Params[‘key1’] = $keys[0].Value

# deploy second CustomScriptExtension (build the cluster) from second ARM template (defined in $templateFilePath2)

New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -Mode Incremental -TemplateFile $templateFilePath2 -TemplateParameterObject $Params | Out-Null

Теперь дело за малым – за созданием кластера.

Сам код вызова extensions/CustomScriptExtension во втором ARM template выглядит аналогично первой части (второй скрипт тоже не забудьте поместить в правильный контейнер, как и в первом случае), единственно – в параметрах скрипта передается 2 имени узлов будущего кластера и другие его параметры:

“resources”: [

        {

“type”: “Microsoft.Compute/virtualMachines/extensions”,

“name”: “[concat(parameters(‘vmName2av1′),’/customscript’)]”,

“apiVersion”: “2015-06-15”,

“location”: “[parameters(‘location’)]”,

“properties”: {

“publisher”: “Microsoft.Compute”,

“type”: “CustomScriptExtension”,

“typeHandlerVersion”: “1.4”,

“settings”: {

“fileUris”: [

https://mystorage.blob.core.windows.net/CL/setupCluster.ps1”

                    ],

“commandToExecute”: “[concat(‘powershell -ExecutionPolicy Unrestricted -File setupCluster.ps1 -domainname ‘, parameters(‘domainname’), ‘ -biosname ‘, parameters(‘netbiosname’), ‘ -adminname ‘, parameters(‘adminUsername’), ‘ -adminpwd ‘, parameters(‘adminPassword’), ‘ -vmnames \”‘, parameters(‘vmname1av1′),’,’,parameters(‘vmname2av1’),’\” -clustername ‘, parameters(‘availabilitysetname1’), ‘ -clusterip ‘, variables(‘cluster1’), ‘ -storageaccount ‘, parameters(‘storagename1’), ‘ -storageacckey ‘, parameters(‘key1’))]”

                }

            }

        }

]

Пятое – чтобы развернуть кластер, скрипт должен выполняться с правами администратора домена, а вот CustomScriptExtension исполняет скрипт с правами ОС внутри виртуальной машины. Но скрипт PowerShell нельзя имперсонализировать в самом скрипте, но, как вариант, можно выполнить команду с правами администратора на удаленном компьютере через Invoke-Command. Т.е. запускаем скрипт через ARM template, передаем логин/пароль админа в скрипт, который создает идентити админа и вызывает команду через Invoke-Command с правами администратора.

Шестое – Windows Failover Cluster НЕЛЬЗЯ развернуть удаленно через Invoke-Command даже с правами администратора. НО, можно сконфигурировать удаленное исполнение команд Invoke-Command через аутентификацию CredSSP, которую предварительно надо настроить на обоих узлах с использованием пары перекрестных команд Enable-WSManCredSSP:

  • Для каждого из узлов включаем режим сервера Enable-WSManCredSSP Server -Force
  • Для каждого из узлов включаем доверие Enable-WSManCredSSP Client -DelegateComputer <имя второго узла> -Force

После конфигурации CredSSP для каждого узла появляется возможность использования Invoke-Command для создания кластера.

Таким образом второй скрипт PowerShell, который создает кластер, будет выглядеть следующим образом:

[CmdletBinding()]

param (

    [Parameter()]

    [string]

$domainname,

    [string]

$biosname,

    [string]

$adminname,

    [string]

$adminpwd,

    [string]

$vmnames,

    [string]

$clustername,

    [string]

$clusterip,

    [string]

$storageaccount,

    [string]

$storageacckey

)

# create domain admin credential’s object

$adminusername = “$biosname\$adminname”

$password = ConvertTo-SecureString -String $adminpwd -AsPlainText -Force

$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $adminusername, $password

#get nodes name from parameter string like “node1,node2”

$nodesArr = $vmnames -split “,”

$n1 = $nodesArr[0]

$n2 = $nodesArr[1]

#enable CredSSP authentication for admin impersonation by remote calls

#set both nodes as CredSSP’s servers

Invoke-Command $nodesArr -Credential $cred {Enable-WSManCredSSP Server -Force}

#set current node CredSSP’s client that trusts other node

Enable-WSManCredSSP Client -DelegateComputer $n1 -Force

#set other node CredSSP’s client that trusts current node

Invoke-Command $n1 -Credential $cred {Enable-WSManCredSSP Client -DelegateComputer $Using:n2 -Force}

Start-Sleep -Seconds 5

# create cluster as domain admin with one node by remote call over CredSSP

Invoke-Command $n1 -Credential $cred {New-Cluster -Name $Using:clustername -Node $Using:n1 -NoStorage -AdministrativeAccessPoint ActiveDirectoryAndDns -StaticAddress $Using:clusterip -Force} -Authentication Credssp

Start-Sleep -Seconds 30

Invoke-Command $n1 -Credential $cred {Get-Cluster $Using:clustername} -Authentication Credssp

Start-Sleep -Seconds 5

# add second node to the cluster as domain admin by remote call over CredSSP

Invoke-Command $n1 -Credential $cred {Get-Cluster -Name $Using:clustername | Add-ClusterNode -Name $Using:n2 -NoStorage} -Authentication Credssp

Start-Sleep -Seconds 30

Invoke-Command $n1 -Credential $cred {Get-Cluster $Using:clustername} -Authentication Credssp

Start-Sleep -Seconds 5

# configure cluster’s Storage Spaces Direct as domain admin by remote call over CredSSP

Invoke-Command $n1 -Credential $cred {Enable-ClusterStorageSpacesDirect -Confirm:$false} -Authentication Credssp

Start-Sleep -Seconds 30

# configure cluster’s cloud witness as domain admin by remote call over CredSSP

Invoke-Command $n1 -Credential $cred {Get-Cluster -Name $Using:clustername | Set-ClusterQuorum -CloudWitness -AccountName $Using:storageaccount -AccessKey $Using:storageacckey} -Authentication Credssp

Start-Sleep -Seconds 5

# configure cluster’s cloud witness as domain admin by remote call over CredSSP

Invoke-Command $n1 -Credential $cred {Get-StoragePool S2D* | New-Volume -FriendlyName Data -FileSystem CSVFS_ReFS -UseMaximumSize} -Authentication Credssp

Вот и все готово… Получилось, как я уже писал выше – куда более лаконично, нежели нагромождение кода DSC у Microsoft (который и обвалился в результате), более понятно и читаемо (хотя да, есть некоторые «странности», но это опять таки – вопросы к МС с его Invoke-Command и ограничениями для extensions/CustomScriptExtension) и, главное – оно работает, в отличие от «элитарного» кода Microsoft.

Сейчас держим про запас 2 набора файлов IaC для наших заказчиков с кластерами в Azure – один с «классическим» и нерабочим сейчас кодом Microsoft для создания кластеров через ARM/DSC – в надежде, что Microsoft таки читает запросы на разрешение проблем и хоть как-то сопровождает свой код, и второй – вот данный момент рабочий и приведенный выше.

Я уже писал про компетенцию и поддержку своих продуктов со стороны Microsoft – этот случай из той же оперы, причем тут Microsoft явно забил на свой публично опубликованный код (типа, а вот сопровождать не обещали). Так что, как сказано в предисловии к посту – верить никому нельзя и мы таки попытались выправить то, что Microsoft сделал кривым.

И да, если Microsoft не в состоянии поддерживать документацию, код и вообще – оказывать качественный саппорт – может, им стоит прислушаться к тому совету, который мне написали в комментариях к предыдущему моему посту (хотя Microsoft пошел простым путем – находит тех, кто делает это бесплатно за непонятные и совершенно эфимерные плюшки статуса MVP, который еще и довольно таки “подозрителен”, как я уже писал ранее):

Игорь, привет. По поводу твоего свежего поста – совет: предложить им сделать аналог Bug Bounty/Marketplace: за чужой хороший код и документацию платить премии.

Друге посты и видео по теме Azure и ИТ-карьеры:

Microsoft Azure Functions на PowerShell–включение аутентификации пользователя для HTTP Trigger, получаем информацию об аутентификации пользователя в коде функции на PowerShell и про “поддержку” Microsoft.


Начнем с технической части повествования – чтобы народу было интересно и полезно почитать, а уже потом перейдем к «политическо-ИТшной» – это уже по желанию, но как по мне так смешно, что аж печально… 😉

Итак, в некоем решении используются Azure Functions, написанные на PowerShell Core (потому что все мои админы знакомы и легко могут модифицировать, развивать решение при необходимости) и в качестве безопасности (аутентификации пользователей) работающие со стандартной идентификацией от Azure AD при вызове того, что называется Http Trigger, т.е. функции, имеющей свой персональный URL, по которому ее и можно запустить, передав требуемые параметры.

Требуется – при развитии решения появилась потребность не только аутентифицировать пользователей, но и иметь некие аналоги аудита (кто какие функции вызывает) и ролевой модели (запрет некоторым людям вызывать функции или использовать глобальные параметры).

Аутентификация на базе Azure AD для Azure Functions включается в пару кликов и не требует какого-либо изменения кода самой Azure Functions – для функции вся аутентификация работает при описанном ниже сценарии «прозрачно», всю работу по аутентификации на себя берет «движок» Azure. Не путать, кстати, с опцией Identity, которая позволяет имперсонализировать сам исполняемый экземпляр Azure Functions в Azure и выполнять код под определенным аккаунтом в Azure, которому можно предоставлять разные права – чем, собственно, мы и пользуемся – используя Azure Functions для выполнения различных задач обслуживания, предоставляя толпе из L1 для выполнения базовых операций не доступ к порталу Azure и клиентским подпискам, а только к функциям, которые уже все сделают «как нужно и правильно»…

Но вернемся к аутентификации пользователей при вызове Azure Functions. Итак:

Заходим на основную страницу требуемой Azure Functions, переключаемся в закладку Platform Features, и там кликаем на опцию Authentication / Authorization

clip_image002

На открывшейся странице устанавливаем переключатель App Service Authentication в положение On и в появившемся ниже выпадающем списке Action to take when request is not authenticated выбираем опцию Log in with Azure Active Directory, а в следующем списке Authentication Providers кликаем на пункт Azure Active Directory / Not Configured

clip_image004

Откроется новое окно настроек – создания экземпляра приложения для аутентификации в Azure AD, где в Managed Mode выбираем опцию Express и далее, в появившихся ниже опциях, выбираем правильный каталог Azure AD (если в вашем профиле их несколько зарегистрировано), Managed Mode оставляем, как есть – Create New AD App – и оставляем имя по умолчанию.

clip_image006

Кликаем Ok в данном диалоге, ждем окончания процесса создания объекта, и в форме Authentication / Authorization, куда вас вернет портал, кликаем вверху на иконку Save. Опять таки – ждем окончания операции и получаем сконфигурированное приложение с аутентификацией от Azure AD. Теперь, при обращении к Azure Functions, которые зарегистрированы, как Http Trigger, Azure будет запрашивать у вызывающего пройти аутентификацию и предъявить аккаунт пользователя из указанной выше Azure Active Directory. Так что анонимные пользователи такую функцию теперь не вызовут.

НО! Такой сценарий достаточен только для «отсечения» анонимных пользователей, а вот если требуется какое-либо подобие RBAC внутри самих Azure Functions – например, пользователь аутентифицируется, но при этом часть параметров функции ему недоступна или доступ к данным внутри самой функции должен быть ограничен – здесь, увы, такая аутентификация не поможет. Да и вообще, у Azure нет толкового RBAC для Functions.

Т.е. после вызова функции вызов перенаправляется на аутентификацию в Azure AD и если все ок – управление передается на Azure Functions и нам надо теперь внутри исполняемой функции получить клейм пользователя и все атрибуты его учетной записи – ID в аутентифицирующей системе, имя, саму систему и прочие токены. При этом все это еще требуется получить в PowerShell.

И тут начинается самое интересное – хотя Microsoft со всех трибун кричит про внедрение Serverless решений, рассказывает про использование Azure Functions вместе с PowerShell для процессов автоматизации – в реальности никакой официальной документации от Microsoft, особенно фундаментальной, по теме Functions/PowerShell вы не найдете. В Интернете ее тоже нет, даже на любимом всеми StackOverflow – просто никто не использует решение, не смотря на громкие заявления Microsoft.

Нашел пару документов про работу с идентити/информацией аутентификации в Functions/Web Apps применительно к C#, но это нагромождение классов и вызовов было явно не релевантно для кода PowerShell. Чтобы понять всю глубину проблемы, стоит сказать, что ни я, ни моя команда – ни разу не девелоперы – только PowerShell скрипты для автоматизации процессов заказчиков и auto-healing, только хардкор, как, например, скриптик PowerShell на 1000 строк для правильного «развертывания всего» с соответствующими внутренностями VM. Для нас вообще удивительно, кстати, почему работа с тем же Azure Storage Queues в PowerShell пишется в 3 строки, а в C# сначала надо создать десяток классов при неочевидном выигрыше в производительности самой Functions. Но это уже лирика, а вывод простой – для людей, которые занимаются автоматизацией процессов на PowerShell, документации по разработке на сайте Microsoft совершенно недостаточно, приходится собирать по крупицам с разных источников, работать «методом тыка» или открыть тикет в саппорте. На том и порешили – продолжаем «копать» и обращаемся в саппорт.

Методом логического анализа кода («методом тыка») на C# обнаружилось, что чтобы работать cо всей информацией по аутентификации пользователя, вызывающего Functions с аутентификацией в Azure AD (как настроено выше) в PowerShell коде можно через Headers одной командой:

$Request.Headers

Ниже – представленный в JSON объект заголовка вызова Http Trigger в Azure Functions (тот самый $Request.Headers). Все поля, как на ладони и далее работаем с ними, как с обычным hashtable в PowerShell, т.е. получаем нужное значение по имени ключа (которым являются поля заголовка ниже).

clip_image008

Т.е., чтобы получить имя пользователя, его ID, его Access Token и т.п. в коде PowerShell – требуется максимум 1-2 команды:

$headersObj = $Request.Headers # get call’s headers

$username = $headersObj[“x-ms-client-principal-name”]   # get user account name

$userid = $headersObj[“x-ms-client-principal-id”]       # get user AAD ID

$userip = $headersObj[“x-forwarded-for”]                # get user IP

И все, далее используем переменные или обращаемся к нужному элементу по имени ключа. Все, тема закрыта, используем нужную информацию для журналирования и внутренних проверок.


И тут начинается вторая часть истории – которая смешная и печальная, особенно в разрезе предыдущей моей истории про то, как Microsoft Ukraine заблокировала и удалила мои видео по курсу для сертификации AZ-900 по Azureпродолжения истории c Microsoft Ukraine после).

Итак, открыл я кейс в Microsoft support по данной проблеме и вот выдержка переписки:

1. Я описываю проблему

clip_image010

2. И получаю от Microsoft Support ответ, что в моем сценарии (option 1, процесс конфигурирования которого и описан выше) такую информацию получить нельзя:

clip_image012

3. Причем, получив такой ответ – я уже 100% уверен в возможности получения этих данных, просто еще не имею на руках конкретного кода. И я отправляю письмо типа – «точно нельзя с опцией 1? Уверены?» и получаю от Microsoft support еще один отрицательный ответ – нет, вы не можете получить такую информацию (причем, происходит это через 5 дней, три из которых – рабочие):

clip_image014

4. И в ответ на это дело я уже пишу, что нашел сценарий, код из 2х строк работает и можно закрывать кейс.

И вот тут начинается самое интересное и «смешное». Мне сразу же перезванивает (буквально в течение 15 минут, до этого отвечал только по почте и то – через сутки) сотрудник службы поддержки Microsoft, который просит поделиться с ними решением проблемы и кодом!!! Т.е. Microsoft, который до этого активно удалял мои технические видео про Azure из принадлежащей мне группы в Facebook, а потом и удалил мой аккаунт из админов – про это читайте тут и тут – теперь вдруг другой рукой просит поделиться информацией со своей поддержкой?! Серьезно?! Я должен бесплатно делать за сотрудников Microsoft их работу? Той информацией, которую Microsoft в качестве базовой просто обязан опубликовать в документации, поскольку и продукт – платный, и везде, со всяких трибун, Microsoft кричит о важности безопасности вообще и правильного кода – в частности. И уж точно этой информацией должна владеть служба поддержки Microsoft…

Чтобы вам было еще смешнее – я и сейчас продолжаю получать письма с просьбами отдать код, последнее пришло уже сегодня, 25 декабря, через 9 дней после того, как я сообщил, что задача имеет решение. Вот реально?! За 9 дней внутри Microsoft собственный отдел поддержки не смог найти техническое решение и продолжает ждать у моря погоды – поделюсь ли я кодом?!

clip_image016

И самое смешное – Microsoft за последние 3-5 лет сократил практически весь высококвалифицированный технический персонал из своих локальных офисов ввиду того, что Azure поддержки не требует, его надо только продавать, а технической поддержкой пусть занимаются партнеры «за деньги». Azure, как показывает опыт, просто за бла-бла-бла девочек из маркетинга Microsoft не продается (про это я говорю тоже в первой серии курса AZ-900), а партнеры, при таких отношении, «экспертизе», «документации» и «поддержке» от Microsoft – точно не будут вкладываться в «прибыльный и простой бизнес Azure» и не будут развивать компетенции Azure, как и клиенты не горят желанием платить деньги «каким-то партнерам», один раз столкнувшись с подобным невежеством поддержки «самого Microsoft». И, особенно, партнерам не интересно это делать, если развитие компетенций не интересно самому Microsoft и даже поддержка Microsoft не в состоянии дать ответ на простой, как оказалось, вопрос.

И если объективно смотреть на ситуацию c поддержкой Azure, то можно смело сказать, исходя из своего опыта работы С Microsoft последние пару лет, что никакой реальной поддержки и технической компетенции «на местах» у Microsoft сейчас просто нет. Выгребайте сами. И иметь у себя классного специалиста по Azure в штате – это будет даже лучше и безопаснее, чем вам пришлют какого-то «технического консультанта» от Microsoft, который в реальности окажется «не пойми кто», как я уже писал во второй части большого поста про Microsoft.

Но и это еще не все про Microsoft и поддержку Azure… Читайте в следующем посте про развертывание Windows кластеров в Azure и про официальные скрипты от Microsoft.

Друге видео то теме Azure и ИТ-карьеры:

Microsoft Exam AZ-900 Azure Fundamentals–бесплатная подготовка к сертификационному экзамену, часть.02: экономика облачных технологий, вопросы по CapEx и OpEx в Azure


Продолжаю серию видео – http://bit.ly/Exam-Az-900 – по подготовке к сертификационному экзамену Microsoft AZ-900 Azure Fundamentals. В этой серии – сразу несколько небольших (вопросов на 4-5), но достаточно неприятных для ИТ-специалистов тем экзамена – Модель Shared Economy в облачных технологиях для снижения стоимости и главная экономическая фишка, под которой продаются любые “облака” – CapEx/OpEx в ИТ. Да-да, в AZ-900 есть такие вопросы, потому я в обзорном видео к экзамену AZ-900 – https://youtu.be/_2-txkA3Daw – и говорил, что для “простого” технического специалиста некоторые вопросы могут быть весьма “далекими” и совершенно непрактичными. Хотя, в реальности – оно так и есть – Microsoft предлагает “правильные ответы” согласно своей маркетинговой идеологии… Так что смотрите и запоминайте, не забудьте пройтись и по линкам.

Подписаться на канал ►►► http://bit.ly/iwalker2000_subs
Мой LinkedIn ►►► https://www.linkedin.com/in/iwalker2000/
Подготовка к AZ-900 ►►► http://bit.ly/Exam-Az-900
Как стать системным администратором ►►► http://bit.ly/ITProSysAdmin
ИТ карьера – что для этого нужно ►►► http://bit.ly/ITcarriera_
Обзор GPD P2 Max ►►►
https://youtu.be/HZfN_geAvQI
Все обзоры Windows 10 ►►► http://bit.ly/Windows10_review
Про производительность дисков ►►► http://bit.ly/Disk_perf_p01


Exam AZ-900 Azure Fundamentals – подготовка к экзамену, ч.02: CapEx и OpEx, экономические вопросы

Предыдущие видео данной серии про экзамен AZ-900 смотрите здесь – http://bit.ly/Exam-Az-900 :

  • Exam AZ-900 Azure Fundamentals – подготовка к экзамену, ч.01: общий обзор экзамена и как готовиться – https://youtu.be/_2-txkA3Daw

Azure и совместное потребление

  • Microsoft покупает много серверов сразу по цене, которая значительно ниже розничной (в реальности – Microsoft заказывает блоки у компаний типа QCT и собирает в стойки по своей архитектуре – Open Compute Project (OCP) – https://azure.microsoft.com/en-us/global-infrastructure/hardware-innovation/ ).
  • Microsoft собирает их облако, которое позволяет максимально плотно заполнить нагрузкой каждый физический сервер – 80% нагрузки на сервер в сравнении с 30% «обычной» нагрузки на сервер в организациях.
  • Аналогично – для хранилищ и сетевой инфраструктуры.
  • Microsoft перепродает «плотно упакованные» серверы по частям – в виде виртуальных машин и прочих сервисов.
  • Суммарная стоимость виртуальных машин, запущенных клиентами на таких серверах – выше стоимости всех серверов. Профит!
  • Чем больше клиентов и плотнее упаковка и выше нагрузка на серверы – тем выше профит… Есть возможность снижать цены или предоставлять доп.сервисы дешевле.
  • Про экономику облачных датацентров – http://cloudscaling.com/blog/cloud-computing/understanding-cloud-datacenter-economies-of-scale/
  • Клиент арендует по принципу «заплатил только за использование» и не нуждается:
    • В приобретении серверов и начальных крупных затратах
    • Помещении для хранения, средств энергопитания
    • Не нуждается в обслуживании физических серверов
    • Клиент быстро может нарастить мощности своих вычислений без дополнительных затрат


СapEx & OpEx в ИТ и облаках:

  • CapEx – разовые крупные покупка любого «железа», «софт», оплата проектов по строительство ЦОД (серверных комнат), разработка программного обеспечения и т.п.
  • OpEx – регулярные выплаты по потребностям – зарплата ИТ-специалистам, связь и коммуникации от провайдеров, электричество, обслуживание и комплектующие материалы, подписка на ПО и сервисы.
  • Облачные провайдеры сдают в аренду готовые сервисы (виртуальные машины или программные комплексы – например, Office 365 – это почта, взаимодействие в команде, хранилища и т.п.) с помесячной оплатой за услуги – по размеру ресурса или количеству пользователей и берут на себя все затраты по аппаратному и программному обеспечению, строительству и обслуживанию сервисов.
  • Таким образом – облако переводит для конечного пользователя CapEx в OpEx – пользователю не нужно тратить деньги на начальные инвестиции (CapEx) и он просто арендует те ресурсы, которые ему требуются, выплачивая помесячно стоимость только потребленных ресурсов (OpEx).
  • OpEx в облаках – фактически, рассрочка выплаты тех же денег, которые потратила бы компания на покупку железа и т.п. в течение 5 лет (обычно).
  • Эффективность переноса решения в облако Azure позволяет посчитать Total Cost Ownership (TCO) Calculator на сайте Azure.

В следующем видео – разбор вопросов AZ-900 по теме характеристики облака – эластичность, масштабируемость, высокая доступность, отказоустойчивость, аварийное восстановление.

Друге видео то теме Azure и ИТ-карьеры:

  • Доклады по серверным технологиям Microsoft Windows Server – http://bit.ly/WindowsServer_overview
  • ИТ-карьера: как стать ИТ-специалистом, основные шаги для успешной карьеры в ИТ – http://bit.ly/ITcarriera_

Microsoft Exam AZ-900 Azure Fundamentals–бесплатная подготовка к сертификационному экзамену, часть.01: общий обзор экзамена и как готовиться


Подписаться на канал ►►► http://bit.ly/iwalker2000_subs | Мой LinkedIn ►►► https://www.linkedin.com/in/iwalker2000/ | Подготовка к AZ-900 ►►► http://bit.ly/Exam-Az-900 | Как стать системным администратором ►►► http://bit.ly/ITProSysAdmin ИТ карьера – что для этого нужно ►►► http://bit.ly/ITcarriera_ | Загляните на мой блог ►►► http://iwalker2000.com | Обзор GPD P2 Max ►►► https://youtu.be/HZfN_geAvQI | Все обзоры Windows 10 ►►► http://bit.ly/Windows10_review | Про производительность дисков ►►► http://bit.ly/Disk_perf_p01
 

Я уже несколько раз начинал серию “серьёзных” видео про ИТ для системных администраторов и вообще 😉 Это была и серия про ИТ-карьеру – http://bit.ly/ITcarriera_  – в рамках которой я планировал перейти от простых рекомендаций по карьере в ИТ к техническим рекомендациям, и серия про Microsoft Azure для системных администраторов – http://bit.ly/WindowsServer_overview – где я планировал рассказать про Azure с точки зрения миграции ИТ-инфраструктур и гибридных решений. И обе эти серии тихо закрылись – ввиду малого интереса аудитории к ним и больших временных затрат на их подготовку – как бы – “если людям не интересно, то чего я буду тратить на это свое время”.

И вот, я таки снова решил начать новую серию – которая будет менее абстрактной, чем предыдущая, поскольку она будет отвечать конкретным задачам – не научить некоего “Васю-будущего админа облаков” чему-то вообще, а помочь в подготовке и сдаче достаточно специфического сертификационного экзамена Microsoft – Exam AZ-900: Microsoft Azure Fundamentals (Основы Microsoft Azure). И даже если вы не собираетесь сдавать сам экзамен, то я постараюсь построить материал так, чтобы вы могли получить современные и обширные знания по облачным технологиям вообще и технологиям Microsoft Azure в частности. И да, видео не будут иметь ограничений по уровню начальных знания – их можно (и нужно) смотреть и нетехническим людям в ИТ – для расширения кругозора и понимания того, что вы продаете и с чем каждый день сталкиваетесь в повседневной работе/жизни – например, как мне сказали “Облако – это OneDrive” 😉 Нет, это один из множества сервисов, которые предоставляет облако. И да, поскольку я пообещал этими видео помочь людям – я постараюсь оперативно создавать новые и закончить всю серию, охватив все очень обширные темы экзамена. Так что подписывайтесь на канал –http://bit.ly/iwalker2000_subs – продолжение следует. А между сериями будут другие обычные видео про гаджеты и т.п.


Exam AZ-900 Azure Fundamentals – подготовка к экзамену, ч.01: общий обзор экзамена и как готовиться



Для кого это серия видео про Azure?


  • Для всех, кто планирует сдать экзамен Exam AZ-900: Microsoft Azure Fundamentals – Основы Microsoft Azure.

      – Для тех, кто планирует подготовиться самостоятельно, но им тяжело сконцентрироваться на конкретных направлениях изучения ввиду того, что материал экзамена очень обширный.
      – Для тех, кто «не дружит» с английским языком на достаточном уровне и ищет в Интернете возможность поучиться на русском бесплатно.
      – Для тех, кто ищет в Интернете брейндампы данного экзамена бесплатно 😉 но хочет еще и понимать, что он там заучивает

  • Для моих бывших коллег из Microsoft, особенно из отделов продаж, которые ходят и рассказывают, какой классный Azure
    , но потом компания потребовала всех их сдать экзамен – и они его успешно провалили и обратились ко мне за помощью (а вы думали, я вас не потроллю? %) )

  • Для всех, кто собирается работать в ИТ (даже без экзаменов) по направлению облаков, и не обязательно Microsoft Azure
    – эта серия видео будет также идти, как часть моей серии «ИТ-карьера» –
    http://bit.ly/ITcarriera_ и http://bit.ly/itcar_post1

  • А! И для моего сына, которому нужно написать в его Slovenská technická univerzita v Bratislave (STU) курсовую по введению в облака
    😉 Останется только перевести на словацкий.

  • Планы на серию? Это примерно 20-25 роликов по 30-45 минут каждый, с детальным изложением одной из тем экзамена, с ориентировочными вопросами, практическими примерами и т.п.
    – будут выходить по 2-3 видео в неделю, т.е. в общем – около 2х месяцев 😉



Особенности экзамена AZ-900


  • Экзамен абсолютно дурацкий!

  • Это не технический в общем понимании экзамен…

  • В экзамене очень много всякого маркетингового булшита от Microsoft.

  • В экзамене много теоретических и абстрактных вопросов (типа authentication vs authorization, CapEx vs OpEx)

  • В экзамене много спорных вопросов, которые сам Microsoft озвучивает по разному, исходя из ситуации – например, снижения стоимости владения потому, что не нужно столько админов? – в жизни МС руководству рассказывает, что ДА – вы уменьшите потребность в персонале, в экзамене – он же для админов – НЕТ, админов сокращать не надо!

  • В экзамене много вопросов по подпискам, лицензированию, планам поддержки и прочим.

  • В экзамене много вопросов по международным регулятивным требованиям – типа GDPR, NIST, ISO – и сервисам для государственных учреждений.



Особенности экзамена AZ-900 – Если вы ТЕХНИЧЕСКИЙ СПЕЦИАЛИСТ, который работает с Azure, то вы имеете шанс НЕ СДАТЬ его потому, что:

az900-01-05

Особенности экзамена AZ-900 – Если вы НЕ ТЕХНИЧЕСКИЙ СПЕЦИАЛИСТ, а менеджер по продажам Microsoft, или другой «эффективный менеджер», особенно новомодный миллениал – то вы НЕ СДАДИТЕ:

az900-01-06

Основные группы вопросов на AZ-900

az900-01-07

Как подготовиться к сдаче сертификационного экзамена Microsoft AZ-900 Azure Fundamentals?

  • Набраться терпения и просмотреть все видео этой серии 😉
  • У меня на канале еще много видео по теме Azure, особенно здесь – http://bit.ly/WindowsServer_overview и здесь – http://j.mp/Azure_IaaS_2015
  • Подписаться на мой канал, поставить лайк и перешарить эти видео в соц.сетях – это +100 в карму, а карма, как известно, очень помогает на экзамене.
  • Почитать рекомендуемую литературу (см.дальше) и различные источники – я первоисточниками для подготовки буду делиться в следующих, более практических видео по AZ-900.
  • Официальные курсы? Если хотите – идите. Все зависит от самого тренера – как повезет. В мою бытность тренером я подстраивал материал курса под реальные вопросы экзаменов, потому как сам материал курса не предназначен для подготовки к экзамену.
  • Брейндампы? Да, если найдете – сейчас это очень прибыльный бизнес и «бесплатных» найти проблематично, тем более – с комментариями и рекомендациями.
  • Практическая работа – без более-менее внятного представления, как же выглядит Azure Portal и чем отличается Virtual Machine от Web App, сдать будет проблематично.
  • Начните с создания бесплатной подписки и страницы https://azure.microsoft.com/en-us/get-started/

Список книг для самоподготовки к экзамену AZ-900

  • Exam Ref AZ-900 Microsoft Azure Fundamentals – собственно, материалы официального курса Microsoft
  • Learn Microsoft Azure
  • Azure: Microsoft Azure Tutorial for Beginners
  • Microsoft Azure For Beginners: Getting Started with Microsoft Azure
  • Azure: Microsoft Azure Tutorial The Ultimate Beginners Guide
  • Hands-On Cloud Administration in Azure: Implement, monitor, and manage important Azure services and components including IaaS and PaaS

Новые Microsoft Surface – телефон Surface Duo, складной планшет Surface Neo, Surface Pro X на ARM


Итак, Microsoft, на прошедшем в среду, 2 октября 2019, мероприятии, посвященном своим новым устройства линейки Microsoft Surface, презентовала целую гамму новых устройств, которые, фактически, полностью закрывают всю инфраструктуру лептопов и мобильных устройств – лептоп Microsoft Surface 3, профессиональный планшет Surface Pro 7, его облегченную версию на ARM процессоре Surface Pro X, новый и ожидаемый складной планшет Surface Neo (ранее называемый Centaurus), работающий с новой версией Windows – Windows 10X – облегченной и “заточной” под работу с двумя экранами и, совершенно неожиданно – новый телефон-раскладушку с двумя экранами 5.6″ и под управлением Android с глубоко модифицированным UI – Microsoft Surface Duo. Также Microsoft показала беспроводные наушники-вкладыши, от одного вида которых хочется сказать НЕТ!, а услышав цену в 250уе – НЕТ, НЕТ И ЕЩЁ РАЗ НЕТ! НО – вернёмся к обзорам всех этих традиционных Surface Laptop 3, Surface Pro 7, Surface Pro X и раскладушек Surface Neo и Surface Duo.


Новые Microsoft Surface – телефон Surface Duo, складной планшет Surface Neo, Surface Pro X на ARM


Surface Laptop 3 –
https://youtu.be/eITjrh267vs?t=189 – довольно проходной девайс, здесь интересно то, что Microsoft вместе с AMD создал для новых моделей специальный процессор AMD RYZEN Microsoft Surface Edition, пересмотрел концепцию ремонтопригодности и замены комплектующих, расширил линейку моделью с большим размером экрана – 15″ и убрал эту ужасную тряпку на клавиатуре 😉 В общем – такой себе качественный и не очень дешевый ноутбук премиум класса с очень высокой ценой – https://www.microsoft.com/en-us/surface – цены появились на сайте МС уже ближе к утру – с максимальным ценником в 2900уе за i7/Ryzen R7 и 32ГБ ОЗУ – не взлетит, я думаю…
 

Еще более “проходным” оказался Surface Pro 7 –
https://youtu.be/eITjrh267vs?t=577 – улучшения настолько “бедные”, что даже сказать нечего… Типа, “ну вот мы добавили USB Type-C, и поменяли процессор, и…, и… – ах, ну да, новое перо, а еще мы пофиксили Эксель и теперь пером можно писать прямо в ячейках”…. Вау!!!! 😦 Но, надо отдать должное серии Microsoft Surface Pro – его улучшать – только портить. Достаточно просто менять компоненты. А так, начиная с Surface Pro 3 – шикарный девайс, пользуюсь уже 5 лет без всяких нареканий (кроме сдыхающей батарейки) – https://youtu.be/aI6He06ZHY8



Microsoft Surface Earbuds – таблетки АСС в уши? За такую цену? Нет и еще раз НЕТ!



Microsoft Surface Pro X – https://youtu.be/eITjrh267vs?t=844 – это, конечно, что-то такое, что очень хочется посмотреть и пощупать! Легкий и тонкий – при 13″ экрана и … полноценной Windows 10, но на ARM процессоре, который Microsoft разработал совместно с Qualcomm на базе их процессора Snapdragon 8cx – теперь это называется Microsoft SQ1 и имеет на борту модуль AI в 9TFLOPS. Слушая выступление, у меня сложилось чувство, что Microsoft и сам не знает, нафига в таком планшете такой модуль и как его использовать в реальных задачах – пример интеллектуального улучшения картинки в рельном времени как-то не очень нагляден. А вообще – при таком ценнике – МС решила не конкурировать с другими моделями Microsoft Surface Pro – и выставила одинаковый ценник и на Pro 7, и на Pro X – https://www.microsoft.com/en-us/p/surface-pro-x/8vdnrp2m6hhc – такой планшет выглядит очень привлекательно для тех, кто много бывает в разъездах. Кроме того – очень интересны мелкие инновации – типа стилуса, для которого предусмотрены контейнер и беспроводная зарядка прямо в клаве. В общем – это тот момент, когда количество переходит в качество, но, правда, не то, которое бы хотелось лично мне. Про свои “хотелки” к мобильным устройствам я писал тут – http://bit.ly/FutureGadgets01



И новые ультрамобильные устройства c двумя экранами в линейки Microsoft Surface – планшет-раскладушка Microsoft Neo – https://youtu.be/eITjrh267vs?t=1350 – под управлением Windows 10X (про которую никаких реальных деталей так и не рассказали – хотя бы потому, что она еще “не совсем готова”) и раскладушка-телефон Microsoft Duo – https://youtu.be/eITjrh267vs?t=1777 – этот под управлением Android с переточенной под работу с двумя экранами оболочкой от Microsoft (кстати, кто не вкурсе, у Microsoft есть отличный Microsoft Launcher для Android – пользуюсь им и очень доволен).

“Икспёрды” уже начали крик “зачем нам 2 экрана, что с ними делать?!” – хотите или нет – но 2 экрана и раскладушки – это тренд 3-5 лет – а для меня постоянная реальность, поскольку раскладушками – пусть и с экраном и клавой – пользуюсь все годы своей мобильной эпопеи… И могу сказать, что более продуктивного мобильного устройства, чем телефон-раскладушка с аппаратной клавой (или, как предлагает Microsoft – вирутальной, но все же привычной, в стиле мини-ноутбука) – лучший рабочий телефон.

Кстати, Microsoft на протяжении всей презентации говорила, что создает устройства для креативной части населения, которая будет создавать тот или иной контент при помощи их устройств. Я, кстати, создаю создаю контент в виде текста – по дороге на работу/с работы, в роскошном “золотом классе” метро Дубаи – можно отлично поработать 40 мин, чем я и пользуюсь – на ноутбуке не очень комфортно, а вот на мобиле-раскладушке Gemini PDA 4G или теперь – на мини ультрабуке GPD P2 Max – очень даже хорошо получается поработать. Например, этот текст и был как раз написан в метро по дороге на работу – как и многие другие – будь то документы или книги. 1.5 часа каждый день для креатива – это же отлично! Вы так не делаете, просто скролите картинки – вы не просто созданы быть креативным, вы только потреблять… Winking smile Большинство упомянутых выше “икспёрдов” – как раз из такой категории. Так что если вы ничего не создаете – вы для Microsoft – просто лишний баланс, поскольку не относитесь к креативному классу и устройства Surface – точно не для вас. Продолжайте молча, потреблять, а не рассуждать, кому же нужен телефон с двумя экранами – просто ввиду ограниченности вашей жизненной модели – вы даже не можете понять его назначение… Winking smile

Понравилось ли что-то из продемонстрированного Microsoft лично мне и что бы я себе купил?

Как я уже писал выше – очень интересно выглядит на презентации Microsoft Surface Pro X, хотя окончательное решение о покупке я бы принимал, только подержав Surface Pro X в руках и глянув на его экран. Вопрос вызывает и ARM архитектура процессора Surface Pro X, и, не смотря на заявления Microsoft о том, что там работает “полноценная” и “полностью совместимая” сборка Windows 10 – я бы все же протестировал бы некоторые приложения, работа которых может быть под вопросом.     

Microsoft Neo? Да, очень интересно, учитывая, что он появится только в следующем году – я успею “укатать” мой нынешний мини ультрабук GPD P2 Max – и с чистой совестью перейти на Microsoft Neo. Надеюсь, к тому времени его уже доведут до ума и хорошо попатчат, особенно новую ОС, а наличие нового процессора Intel 11 поколения как раз оправдывает такую покупку – сразу с Core m3-8100Y на 11 – отличный апгрейд. И, конечно же, еще хотелось бы клаву и стилус. То, что Microsoft придумал с совместным использованием аппаратной и виртуальной клавы/экрана в Surface Neo – выглядит куда интереснее и правильнее того же TouchBar в MacBook – куда больше сценариев применения. В общем – осталось подождать полгодика – и брать Winking smile

Microsoft Duo? я не уверен… Сейчас у меня отлично с поддержкой моего креатива справляется Gemini PDA 4G и мне очень нравится его аппаратная клавиатура. Именно аппаратная QWERTY – лучший инструмент для работы с текстом, даже круче двух экранов Winking smile. Хотя ему уже больше года, новый вариант Gemini – под названием Cosmo – не не особо нравится, так что, может, после выхода в следующем году пощупаю Microsoft Duo тут, в Дубаи (если буду продолжать жить и работать тут) и прикуплю себе. Особенно, если они добавят и в Microsoft Duo вариант аппаратной клавы-вкладыша, как у Microsoft Neo.

Что же разочаровывает в Surface Duo и, впрочем, в Surface Neo – это опять замкнутость на одном устройстве – печально, что никто не сказал ни слова про сценарии работы, подобные Continuum в Windows Mobile 10 – было бы очень круто иметь возможность использовать эти маленькие, но мощные устройства в режиме “обычного” десктопа – по проводам или без. И да, так классно начавшаяся тема того, что называется простым доступом к компонентам и возможность замены хранилищ в Surface Laptop 3 и Surface Pro X – не нашла продолжения в Surface Neo и Surface Duo. И тут я снова возвращаюсь к теме, “почему для меня Microsoft Duo – не “ВАУ!”?” – да потому, что устройство все же не стало изменением существующей на рынке парадигмы “все в одном – а потом просто выкините”… Sad smile Думаю, пора снова в руки брать Gemini PDA и на его аппаратной клаве настрочить новую статью про будущее мобильных гаджетов, развитие старой – http://bit.ly/FutureGadgets01 – с учетом современных реалий. 


И обзоры других гаджетов у меня на канале iWalker2000:

СофТы: как в Windows 10 вернуть планы управления питанием Ultimate Performance, High Performance


Тут в видео про мой новый ультрабук GPD P2 Max и его тест батарейки некоторые очень внимательные личности разглядели, что у меня больше различных опций настройки планов управления энергопотреблением Windows 10, чем у них 😉 У меня есть такие планы, как Ultimate Performance, High Persormance и даже Power Saver к стандартному Balance Performance в новых сборках Windows 10. Как так? И как включить все эти планы себе?

Подписаться на мой канал iWalker2000 ►►► http://bit.ly/iwalker2000_subs |
Купить GPD P2 Max ►►►
http://bit.ly/2ktSUZ0 |
Магазин GPD – проверено покупками ►►►
http://bit.ly/2PrZPke |
Мой LinkedIn ►►►
https://www.linkedin.com/in/iwalker2000/ |
Обзор Acer Predator Helios 300 ►►►
https://youtu.be/P-YFuA6ZmyY |
Все обзоры Windows 10 и полезных системных утилит ►►►
http://bit.ly/Windows10_review |
Azure для сисадминов ►►►
http://bit.ly/Azure_IaaS_p04 |
Про производительность дисков – как оценить скорость диска и как разогнать ваш ПК ►►►
http://bit.ly/Disk_perf_p01 |
Как стать системным администратором ►►►
http://bit.ly/ITProSysAdmin

В действительности – примерно 2 года назад, с очередной осенней сборки Windows 10, Microsoft решил, что выбор плана управления энергопотреблением для лептопов под Windows 10 – слишком сложная вещь для понимания простым пользователем и поэтому – скрыл для доступа все привычные планы, оставив для совместимости только Balanced Performance и добавив в диалоговое окно управления питанием (то, что вы видите при клике на иконку батарейки в панеле таскбара) переключение режимом от Best battery life до Best Performance – но при этом Windows 10 будет балансировать работу в пределах достаточно зажатого по производительности Balanced Performance. Но для многих – ручной выбор планов энергопотребления остается актуальным – хотя бы потому, что они знают, что это такое и им все равно, как долго проживет батарейка, особенно, когда ноут больше 70% времени проводит на зарядке, зато хочется получить чуть больше производительности – и переключение на High Performance и Ultimate Performance планы очень даже поможет.


СофТы: как в Windows 10 вернуть планы управления питанием Ultimate Performance, High Performance


Так вот, Microsoft пока не отключил полностью в Windows 10 все эти планы, а только “припрятал” их и восстановить их видимость в списке – не проблема, нужно только запустить командную строку (или PowerShell) и выполнить следующие команды, которые создают “правильные” дубликаты нужных планов в вашей Windows 10:


Для включения Power saver
powercfg -duplicatescheme a1841308-3541-4fab-bc81-f71556f20b4a


Для включения High Performance

  powercfg -duplicatescheme 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

Для включения Ultimate Performance
powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61


После дубликации можете убедиться в том, что все планы на месте, использовав команду powercfg /L и включив нужный план прямо из командной строки, скопировав его ID из списка и использовав в команде powercfg /S {Plan ID} , чтобы потом не лазить по настройкам.


И еще пару слов насчет батареи в ноуте, который постоянно стоит на зарядке – недавно на моем корпоративном ноуте Lenovo Thinkpan T480, который 80% времени проводит на зарядке, отрубилась внутренняя батарея. И на этот счет Lenovo на своем сайте саппорта рекомендует установить приложение Lenovo Vantage и в нем настроить Battery Charge Threshold с ограничением по максимальной зарядке в 90-95% – это позволяет сохранить батареи ноута “вечно молодыми”…

И обзоры других гаджетов у меня на канале iWalker2000:


GPD P2 Max–отличный производительный дешевый мини ультрабук с Intel Core m3-8100Y/16GB/512GB NVMe–обзор, тестирование производительности и времени автономной работы


Компания GPD продолжает радовать хорошими компактными и мощными устройствами, продолжая совершенствовать и “железо”, и качество, и поддержку своих устройств. И лучшим устройством этого года у GPD, безусловно можно назвать новый производительный мини ультрабук (или еще UMPC, как называют подобный класс в англоязычной тусовке”) GPD P2 Max – отличное легкое и компактное мобильное устройство для “работы в полях”, при этом способное конкурировать по производительности с “большими” ноутбуками и планшетами, поскольку GPD P2 Max имеет на борту очень даже производительное железо – процессор Intel Core m3-8100Y 1.1GHz/3.4GHz , 16GB ОЗУ и хранилище 512GB на базе NVMe M.2. И после всех этих детальных тестов производительности GPD P2 Max и времени автономной работы, после просто использования GPD P2 Max в рабочих задачах – могу смело порекомендовать GPD P2 Max к приобретению тем, кому нужен действительно мобильный помощник. 


Подписаться на мой канал iWalker2000 ►►► http://bit.ly/iwalker2000_subs |
Купить GPD P2 Max ►►►
http://bit.ly/2ktSUZ0 |
Магазин GPD – проверено покупками ►►►
http://bit.ly/2PrZPke |
Мой LinkedIn ►►►
https://www.linkedin.com/in/iwalker2000/ |
Обзор Acer Predator Helios 300 ►►►
https://youtu.be/P-YFuA6ZmyY |
Все обзоры Windows 10 и полезных системных утилит ►►►
http://bit.ly/Windows10_review |
Azure для сисадминов ►►►
http://bit.ly/Azure_IaaS_p04 |
Про производительность дисков – как оценить скорость диска и как разогнать ваш ПК ►►►
http://bit.ly/Disk_perf_p01 |
Как стать системным администратором ►►►
http://bit.ly/ITProSysAdmin



И что вам таки сказать за новый GPD P2 Max?! Вот таки приехал, хотя в анонсе – https://youtu.be/VgJ-1NDZjCo и https://youtu.be/11RmnJplu4g – обещали доставку предзаказов только в сентябре 2019. Но компания GPD – http://bit.ly/2PrZPke – взяла на себя повышенные капиталистические обязательства и запустила первую серию GPD P2 Max на месяц раньше.

Хотя не обошлось и без шероховатостей – некоторые из пользователей репортили залипающие клавиши (как выяснилось – механическая проблема из-за избытка клея), синие экраны смерти под активной нагрузкой в виде игр и сверхчувствительный тачпад, который реагирует на касания, как на клик. Надо отдать должное GPD – на две последние проблемы они прореагировали моментально, выпустив свеженькое обновление BIOS и драйверов – и сразу стало все хорошо. Но, в любом случае – мой экземпляр GPD P2 Max был без каких-либо изъянов прямо из коробки (хотя я сразу и обновил BIOS) и я имею возможность наслаждаться отличным миниультрабуком сразу из коробки – например, этот текст я очень даже комфортно пишу на GPD P2 Max, пока еду на работу в метро, любуясь при этом из окна достопримечательностями утреннего Дубаи…




ГадЖеТы: достаем из коробки мини ультрабук GPD P2 Max с Intel Core m3 и 16ГБ ОЗУ


Что касается первых впечатлений от GPD P2 Max – то они самые, что ни на есть, приятные. Очень и очень хорошо скроенная машинка с хорошим качеством деталей и качеством сборки. GPD P2 Max своим качеством радует меня куда больше, чем тот же GPD Win 2 – https://youtu.be/Knq2ytzxE4g – компания с каждой новой моделью существенно улучшает качество своих продуктов. Алюминиевый корпус и крышка экрана чем-то, скорее, по тактильным ощущениям и внешнему виду, напомнила “дорогие сорта” ноутбуков Asus, только в уменьшенном виде. Корпус нигде не люфтит, не продавливается, не гнется и не скрипит, впрочем, как и экран. С экраном вообще такие впечатления, будто его крышка-подложка – это такая себе монолитная пластина металла миллиметра на 3-4, уж больно он негнущийся и “цельный”. Сам GPD P2 Max очень компактный – по площади чуть больше 8дюймогово планшета (в видео можно увидеть сравнение), в реальности – это лист А5 (сложенный пополам лист формата А4) и достаточно тонкий, но из-за небольшого отношения толщины к другим размерам – кажется «пузатеньким», хотя в реальности чуть тоньше, чем два iPhone XS, положенных друг на друга. И при этом GDP P2 Max – достаточно легкий, как и положено всем ультрабукам – 650 грамм, что делает его отличным инструментом для работы в коротких поездках в командировки или просто к заказчикам.



И, конечно же, главная особенность GPD P2 Max – в такой компактный корпус ребята из GPD впихнули отличное, по современным требованиям к работе, «железо» – процессор 8го поколения Intel Core m3-8100Y с рабочими частотами 1.1/1.6/3.4ГГц, 2 ядра/4 потока, встроенная графика Intel HD Graphics 615 300/900МГц, ОЗУ 16ГБ двухканальное DDR3L-1600 и 512ГБ хранилища NVMe M.2 (которое уже и SSD становится сложно назвать) и отличный экран 2560х1600 при размере 9” (картинку и читабельность текста при 200% скейлинга дает замечательную). Да, в мощные игрушки не поиграть (собственно, не для того и предназначается GPD P2 Max), но вот как рабочая админская машинка для удаленки и облачных консолей, утилит типа VS Code, виртуальных машин в том же Hyper-V, документов, браузинга и т.п. Но это не значит, что на GPD P2 Max нельзя «погонять чертиков» типа тех же Героев, Цивилизации, всяких КС и Танчиков с Корабликами на минимальных настройках. Про производительность и игры на GPD P2 Max будут, конечно же, отдельные видео.

И самый животрепещущий вопрос – где сейчас купить GPD P2 Max подешевле?! К сожалению, той халявы, которая была при предзаказе – https://igg.me/at/p2max/emal/16201645 – на Indiegogo уже нет, цена чуть ниже рыночной, но совсем не 500евро, как это было в начале. Так что – или покупаем по той, что есть, или ждем, когда GPD начнет продажи в своем магазине на AliExpress – http://bit.ly/2PrZPke – там в начале продаж или на разные праздники бывают хорошие скидки.


После недели использования – в основном в режиме тестирования (а ведь сложно использовать ноут «на полную», если надо, например, протестировать его время автономной работы) – можно уже с полной уверенностью сказать, что GPD P2 Max удался, как законченный оригинальный продукт, и представляет из себя очень интересный, удобный в повседневном использовании и достаточно мощный мини ультрабук.

Для меня GPD P2 Max – это отличный инструмент повседневной мобильной работы, которая включает в себя, кроме емейлов, документов, браузинга и прочей офисной возни (хотя современные браузеры – еще те прожорливые потворы, запросто поглощающие любое количество «железа»), еще и такие вещи, как создание и администрирование облачных инфраструктур заказчиков в Azure с применением всего набора возможностей Infrastructure-as-Code (про который я рассказывал уже на докладах – ) с применением различных ресурсожрущих утилит типа VS Code. И при этом – еще и достаточно часто надо работать вне офиса, на выездах (и не хочется таскать за собой по жаре тяжесть «обычного» ноута), проводить презентации и воркшопы – это когда приходится еще и показывать лабы, часто – с локальными виртуалками.

Так что именно мини ультрабук GPD P2 Max – с его размерами, весом и техническими характеристиками – стал для меня тем самым бескомпромиссным мобильным рабочим местом, который позволяет решать все мои задачи с требуемой производительностью и комфортом (хотя один компромисс все же есть – на GPD P2 Max не поиграешь в «тяжелые» игры, хотя я и не планировал ). Напомню основные технические характеристики этого чуда китайского миникомпьютеростроения:

  • Процессор: GPD P2 Max имеет на борту 8е поколение Intel Core m3 – 8100Y 1.1/1.6ГГц (макс 3.4ГГц), 2 ядра, 4 потока – вполне себе такой производительный – для офисной работы и рабочего места админа/скриптописателя – процессор. Причем не просто так, а с куллером, что позволяет ему работать в куда «разогнанном» режиме. И, кстати, те, кто писали в комментах, что «а вот у Apple Macbook на таком проце без куллера» – были жестоко на….. обмануты Apple по причине того, что плохо охлаждаемый процессор не показывает всей своей мощности ввиду троттлинга по температуре, что и видно в результатах тестов.
  • ОЗУ: 16ГБ – да-да, в этом мелком на вид GPD P2 Max – 16ГБ ОЗУ, которые, по моему личному мнению, являются сейчас тем самым рекомендуемым размером ОЗУ для нормальной работы. И да, минимумом для ноутов сейчас я считаю 8ГБ. Эти 16ГБ худо-бедно позволят мне запустить 3-4 виртуальные машины для различных лаб во время воркшопов и «быстрых» рабочих демо/PoC. И Google Chrome вполне хватает для работы.
  • Хранилище: 512ГБ NVMe M.2 – достаточно быстрое, как показали синтетические тесты и работа и при этом 512ГБ – вполне достаточно и для ОС, и для приложений, и для виртуальных машин (если не наглеть и диски-шаблоны хранить на внешнем диске). И да, всегда можно воспользоваться 3 портами USB – USB 3 и USB Type C, который используется и для зарядки. Кроме того, в пользовательских форумах уже пишут об успешных операциях замены в GPD P2 Max «родного» хранилища 512ГБ М.2 на такое же «родное китайское» 1ТБ М.2.
  • Экран: тачскрин 9 дюймов 2560х1600 с хорошей картинкой и вполне равномерной подсветкой. Экран небольшой, но вполне удобный для всех моих задач, да и глазки не ломает, даже если работать с ним в транспорте… А если вам нужен «большой» монитор – добро пожаловать – у GPD P2 Max есть microHDMI порт, который поддерживает подключение внешних мониторов до 4K. А если у вас нет под рукой монитора – можете использовать отличную утилиту SpaceDesk, которая позволяет расшаривать экраны других ПК/ноутов/планшетов/смартфонов (в том числе и под Android или iOS) как дополнительные экраны вашего ноута по сети.
  • И о размерах GPD P2 Max – это получился «настоящий» мини ультрабук или UMPC – размер составляет всего лишь половину альбомного листа A4 (210х150мм), что сравнимо с размерами обычного планшета 8 дюймов, правда, при этом GPD P2 Max будет значительно толще – до 14мм. Зато вес GPD P2 Max – всего 650 граммов, что при таком «железе» делает его самым лучшим в отношении мощность к весу 😉 Собственно – именно из-за компактных размеров и высокой производительности при этом – я и остановил свой выбор на GPD P2 Max, как на основном рабочем ноуте.

А в видео – я постарался развеять все «легенды» про «китайское происхождение» GPD P2 Max и прочие фантазии некоторых комментаторов в первом видео – https://youtu.be/upfqusJEKQI .



GPD P2 Max – подробный обзор производительного китайского мини ультрабука


Продолжаем тему про GPD P2 Maxhttp://bit.ly/2ktSUZ0в этом видео смотрите много цифр – сравнение производительности GPD P2 Max в различных синтетических тестах (PCmark, 3Dmark, GFXBench, Final Fantasy XIV/XV benchmark и прочих тестах браузеров – Octane, Kraken, JetStream, Speedometer Banchmark) с предыдущими моделями GPD – GPD Win, GPD Win 2 – и различными другими устройствами – Microsoft Surface Pro 3, Surface Pro 6 – так, чтобы понять место модели на рынке.

И что вам таки сказать? – в целом, в отношении цена/производительность – GPD P2 Max в настоящий момент – лучший выбор на рынке. И хотя GPD P2 Max не показывает производительности того же Surface Pro 6 с процессором Core i5 8gen, но при этом уступает только 16.5% в тесте PCmark Extended – по цене (особенно если говорить про предзаказ с ценой 500 евро) в 2 раза дешевле Surface Pro 6 8GB/256GB SSD (который с клавиатурой стоит 1100евро)… И даже 720евро нынешней цены GPD P2 Max – это 35% разницы в пользу GPD, при том, что проигрываем всего в 16% 🙂 Да, есть другие нюансы, почему стоит купить Surface Pro – качество устройства, стилус, стиль работы. Кстати, о качестве –  в тестах принимает участие и мой старенький Surface Pro 3 – которому уже 5 лет – и он все еще прекрасно (почти, если не считать додыхающую батарейку) себя чувствует и справляется с задачами проведения митингов с клиентами и рисованием красивых схем в процессе уточнения разных аспектов облачных проектов. А GPD P2 Max очень уверенно обгоняет Surface Pro 3 – что говорит о том, что в работе производительности GPD P2 Max будет вполне хватать. И единственное, что расстраивает в GPD P2 Max – это то, что ребята так и не выполнили своих начальных обещаний насчет активного дигитайзера в GPD P2 Max, потому привычно рисовать на нем пока не получается, но я над этим вопросом активно работаю – и если все получится, как ожидается – значит, GPD P2 Max будет для меня полноценной заменой 2х устройств – рабочего тяжелого ноутбука Lenovo ThinkPad T480 (от которого по характеристикам он отличается только процессором m3 vs i5) и старичка Surface Pro 3 (который у меня для “ручного рисования” всяких схем).


И самое интересное сравнение в этом видео – это сравнение производительности GPD Win 2 и
GPD P2 Max. Напомню, что GPD Win 2 – модель прошлого года – https://youtu.be/Knq2ytzxE4g – имеет на борту предыдущий Core m3 – 7Y30 и 8ГБ ОЗУ и представляет из себя весьма удачную игровую консольку под управлением Windows 10 для игр класса AAA. Сейчас GPD обновил GPD Win 2 –  http://bit.ly/2mjKTGp – теперь там стоит такой же Intel Core m3-8100Y, а стоит он на 120 евро дешевле, чем GPD P2 Max. Так вот, GPD все время говорила про то, что GPD Win 2 “слегка разгнаный” благодаря лучшей системе охлаждения и т.п. – и тесты показали, что таки ДА – разница между синтетикой у GPD Win 2 7Y30 и GPD P2 Max 8100Y практически не заметна – около 5%, если говорить об одинаковых разрешениях экрана, а так, на родном 720р экране GPD Win 2 успешно лидирует 😉 После этого сравнения мне даже захотелось прикупить обновленный GPD Win 2 – http://bit.ly/2mjKTGp – и посмотреть, что оно такое и насколько шустрее будет в “разгоночном корпусе”. А детальное сравнение GPD и некоторые другие синтетические тесты – смотрите в видео.



ГадЖеТы: поизводительность GPD P2 Max в синтетических тестах – PCmark, 3Dmark, FF XV bench и т.д.


И еще один очень “болезненый” вопрос о GPD P2 Max после собственно его производительности (тесты производительности GPD P2 Max смотрите здесь – https://youtu.be/djR5o0e6jQ4 ) с таким железом – сколько времени работает GPD P2 Max от батарейки? Ведь GPD P2 Max позиционируется, как ультрамобильное решение для работы “на ходу и в полях”, потому время автономной работы для GPD P2 Max – очень важно, а засунуть в компактный тонкий корпуc GPD P2 Max (обзор P2 Max смотрите здесь https://youtu.be/HZfN_geAvQI) батарею достаточного объема и небольшого веса – весьма проблематично.

Но у GPD это вполне получилось – что показывают тесты автономной работы. Я традиционно сделал свои “стандартные тесты” – замер длительности работы GPD P2 Max при проигрывании видео – получилось более 6 часов – и замер работы в браузере (когда специальный скрипт открывает 10 случайных вкладок в Microsoft Edge и дает им “поработать”) – получилось почти 5 часов. Также я решил расширить набор тестов еще и тем, что запустил Final Fantasy XV benchmark (про результаты самого теста производительности P2 Max я рассказывал в предыдущем видео – https://youtu.be/djR5o0e6jQ4 ) в зацикленном режиме, чтобы посмотреть, насколько долго проживет P2 Max в очень даже нагружающей его игре (хотя, если честно, особо играть в такие игры на P2 Max не стоит) – и результат тут не очень порадовал – 2.5часа – это не так и много, но, экстраполируя такой результат на более простые HoMM V/VI – это будет часа 4 игры… А более подробные выводы и результаты тестирования времени автономной работы GPD P2 Max смотрите в этом видео.



ГадЖеТы: GPD P2 Max – тест времени автономной работы в разных сценариях – видео, браузер, игры



И обзоры других гаджетов у меня на канале iWalker2000: