From 9fe211cd990de3d3ad90db7dfc0748378e992a6d Mon Sep 17 00:00:00 2001 From: Jaromir Kaspar Date: Thu, 11 Feb 2021 19:16:18 +0100 Subject: [PATCH 1/5] new chapter + some fixes --- .../06-Creating-Volumes/.gitkeep | 0 .../07-Deploying-VMs/.gitkeep | 0 .../02-AzSHCI-Deployment/07-deploying-vms.md | 39 +++++++++++++++++++ Docs/AzureStackHCI/readme.md | 12 ++++++ 4 files changed, 51 insertions(+) delete mode 100644 Docs/AzureStackHCI/02-AzSHCI-Deployment/06-Creating-Volumes/.gitkeep delete mode 100644 Docs/AzureStackHCI/02-AzSHCI-Deployment/07-Deploying-VMs/.gitkeep create mode 100644 Docs/AzureStackHCI/02-AzSHCI-Deployment/07-deploying-vms.md create mode 100644 Docs/AzureStackHCI/readme.md diff --git a/Docs/AzureStackHCI/02-AzSHCI-Deployment/06-Creating-Volumes/.gitkeep b/Docs/AzureStackHCI/02-AzSHCI-Deployment/06-Creating-Volumes/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Docs/AzureStackHCI/02-AzSHCI-Deployment/07-Deploying-VMs/.gitkeep b/Docs/AzureStackHCI/02-AzSHCI-Deployment/07-Deploying-VMs/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Docs/AzureStackHCI/02-AzSHCI-Deployment/07-deploying-vms.md b/Docs/AzureStackHCI/02-AzSHCI-Deployment/07-deploying-vms.md new file mode 100644 index 00000000..7c46b989 --- /dev/null +++ b/Docs/AzureStackHCI/02-AzSHCI-Deployment/07-deploying-vms.md @@ -0,0 +1,39 @@ +# Deploying VMs + +Depending on scale, you might consider using PowerShell to deploy Virtual Machines and join these machines to domain in one iteration. The process is two part. In first part you create a VM on one cluster node (preferably random) and second part adds this VM as clustered resource + +## Simple example + +```powershell +$VMName="MyVM" +$VolumeName="MirrorDisk1" +$ClusterName="AzSHCI-Cluster" +$ClusterNode="AzSHCI1" +$SwitchName="SETSwitch" +$DiskSize=128GB +$MemoryStartupBytes=1GB + +New-VM -Name $VMName ` +-NewVHDPath "c:\ClusterStorage\$VolumeName\$VMName\Virtual Hard Disks\$VMName.vhdx" ` +-NewVHDSizeBytes $DiskSize ` +-SwitchName $SwitchName ` +-Generation 2 ` +-Path "c:\ClusterStorage\$VolumeName\" ` +-MemoryStartupBytes $MemoryStartupBytes ` +-CimSession $ClusterNode + +Add-ClusterVirtualMachineRole -VMName $VMName -Cluster $ClusterName + +``` + +Since above example just creates blank VM, let's experiment with creating Windows Server Virtual Machine. + +## Creating Windows Server/Windows 10 VHD + +To create Windows vhd/vhdx can be tool convert-windowsimage used. https://github.com/MicrosoftDocs/Virtualization-Documentation/blob/master/hyperv-tools/Convert-WindowsImage/Convert-WindowsImage.ps1 + +To simplify conversion process you will find **CreateParentDisk.ps1** tool in wslab. It is available [WSLab GitHub](https://github.com/microsoft/WSLab/blob/master/Tools/CreateParentDisk.ps1) and the only thing needed is to right-click and select "run with PowerShell". The script will download convert-windowsimage and will ask for ISO and MSU (Cumulative Update and Servicing Stack Update). To Download CU and SSU you can use another tool - [DownloadLatestCUs.ps1](https://github.com/microsoft/WSLab/blob/master/Tools/DownloadLatestCUs.ps1). + +![](07-Deploying-VMs/media/Explorer01.png) + +Once parent VHD is created, we can proceed with VM creation. The end-to-end process on how to create domain-joined VMs with various parameters is documented [here](https://github.com/microsoft/WSLab/tree/master/Scenarios/S2D%20and%20Bulk%20VM%20creation) \ No newline at end of file diff --git a/Docs/AzureStackHCI/readme.md b/Docs/AzureStackHCI/readme.md new file mode 100644 index 00000000..79cad30c --- /dev/null +++ b/Docs/AzureStackHCI/readme.md @@ -0,0 +1,12 @@ +# About AzSHCI documentation + +This documentation was released as an addition to [official documentation](https://docs.microsoft.com/en-us/azure-stack/hci/) with intent to demonstrate IT Professionals deployment and management of Azure Stack HCI and S2D at scale using PowerShell. + +This documentation is intended to be used by IT Professionals who want's to learn or already are proficient with PowerShell. + +The documentation is divided into 4 main parts + +* Everything you have to know before you buy/deploy Azure Stack HCI solution **01-AzSHCI-Planning** +* Everything you have to know to successfully deploy Azure Stack HCI solution **02-AzSHCI-Deployment** +* Everything you have to know to operate and understand Azure Stack HCI solution **03-AzSHCI-DeepDive** (Work in Progress) +* Everything you have to know to troubleshoot Azure Stack HCI solution **04-AzSHCI-DeepDive** (Work in Progress) \ No newline at end of file From 338d6c161805e1a5702152d626e8102ff237d961 Mon Sep 17 00:00:00 2001 From: Jaromir Kaspar Date: Thu, 11 Feb 2021 19:17:06 +0100 Subject: [PATCH 2/5] screenshot --- .../07-Deploying-VMs/media/Explorer01.png | Bin 0 -> 18779 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Docs/AzureStackHCI/02-AzSHCI-Deployment/07-Deploying-VMs/media/Explorer01.png diff --git a/Docs/AzureStackHCI/02-AzSHCI-Deployment/07-Deploying-VMs/media/Explorer01.png b/Docs/AzureStackHCI/02-AzSHCI-Deployment/07-Deploying-VMs/media/Explorer01.png new file mode 100644 index 0000000000000000000000000000000000000000..500bf827c61de2ba70bd794c6a64e800d59f5403 GIT binary patch literal 18779 zcmcG#1ymhTn=N>83-0c2!S&+qPVnF^!5xCT6WkqwyC=B2yCpaTcbH3lneKkm^WOAY z!&*?cE~lzaeaH5<_delD3X+KMc<=xK08v^>Oa%ad0DS~Zz=DJRLLXlGgAQO$Dv~0A zstJNa&yU1x+kM;ldEK2UtG~)s@(TQoZw8vO)`3nlLYjU22SeaLTY!QC?*E zp;y*=IVUJeCrI>3ez5q8LL5dRku5LwNG zQ-wl+_p-Ua`~mOpEi?)S1_?U)e}e%3Tb>aH5(RV)&_;qKc|SG~pa{JmEqKyp0l=5* z*}Dy|YCiYPr>gcd-b?T60%D)z%H|;lePq+Fr?YlKLc+5aNSQ=3zduT**b2Oa+-gck zs@>IHkL4c{Cc_Yk;G!cO^BWj29ZT^RNi!yb>Dl)D?zcnNzlyV3QaBGeaa+xm%4cwX z3CJc8c8jMn&q(~4J)mF@i5Lz&KsbNtc|hETEiw_-=CvEmHKRb=eFOz+ni}jfalkm! zPRIN~EFhmT@dm6{Cg3iiQm6UoG>EIP9G^%$$LCgSC7a$x3Zp0!`b_4E{=%14XU-0?u0#|b_r;Rz1wg#*M4F=*Ri^*fyU)m07MLIxf*eXS#2 z1PwhC)$>R!M(tW7sO9{I(sqlSDt`WA5u{)huq57o(J61U;DEgrW5tCW-hOg6MT>R` zs~p=S*<$fkh!PP~)`PfA@6?&4`1khXZiLN6SK!_rp|7Smbb9!e5(#+x0VD830#_I? ztspTz0lZr)f5NpLF8m-x9LJa+bca?>;>Ac0cln2?xAMLd&TiB}+ZBSm0iLv5>KiMl zc4sMwxICl-I`*AK9AF+ZF9`}ciZYYEr_GzMXYJ<+Y*s{Yr~wKe69{)m1NX?gOVFiR z;7uDpYhf$bxtEe3>YW@!(J4LITs0JG@*G8qQal}eA1)@ymJryZkyf`8DWF82L>9*6 z7G^>j$LUt;pCp=C^sN%b%!jN34cyOLa@qVIOErdPKSVpoeaQFnJd_Wq(obeMZEjPx4c!v<(qNpnz5k6zTtNm(uS_|16d zh=F-Z?7kzY7lRhaE_CNaGjZ-chkVi0e2HRn;^_n)r3l&P0;*>Lq~^=R@QssART7;; z9Hta9(9xlxc^OmO!^6r%9Z|X^mKj@#`EnPDmF9sjSy@?`64^AM?j$72eOQ=iQQvZq zA1MYAFC4m8h~iZTde@w%wf)ke`-|P-*QG%L2~J#RDd=Dund}~O|BbiTyQ|%TSik4p z6WYLAw3QNSg-n|E#uFBT{LWBLw9Y$}M<-5jN(-<;t{PZIBv2!0{jsC=B8ryZf(((Y zn(T*S*rS#fuK5)1*dnm{D2FSvd$$gG8vj+CQ#dp~n%xpxEd4vsxsKo6<0&EkG0G-V z#VXSl5A6_>X|yN!McH64Wx3#dZ;wW}q`JV!Jgd0D^JiF2Zn~q-@*Al8g;C3ZI^-0J z*jWv91d^UgOgZ?$P9$?SXdwKAAwG#=be2+}JBx9G1QUCMF?gy+-_W+}esNvk-HQiO z!HavL**7?dJ6wyk4g4Ny7;B#&CWPvAK*BT(_o` zQSfLGD%>rp^Q414B`uHxpgQ9;QqC}?vbT;UX2&D!m-;l7efBh+?Q%{R<4K!RuB}(d zAfglV^*~L?nOj<@)G26{Hz)$t89EFLXr!hgD5ef}Jzwpc{3^(gDYRGkc*ZU1Cjim+ zhe~+!LFt^O!AXi{#S8XQmR`iZ!ICvOp;>lFG0i4Lc~MJ=mX2wX$DJ=}A6+fLb77WxJkkkYXGXZB7NMiG_DX zqMEzI`gHo1ADU-N{^%ch!qQMwsZ}4szoMvvT1F;<5kiuI_&_^i3CUv`TS&7!{Z>{o z=Y=&FJV#yH<(vo8JK^j;7nh#c>2kb)ZQvcRkT{v5kmKYIVMbF3rQ|GCNJKYe4{-t5 zQ=(I?+gNc4X6ISWoRngc@s!wODDZoOm!ru5O3y+R<4!5ts!E~lfh&uakq4{O=ZHLHiHIvW~zHkmo@NzkV! z=N57Zk8f`BUtj?KKMVJon(xX=c+M2NmE;b!naFnxXX0Hoz$@elO$_jZHAA4#R~nM+ zj<)Gm##sext_PjM%K%c(K^RYtE6KZA)+*NRCMuKxV92Ua6Pu zd~Jwp$p|T7TNQJxnzl+%N)sr~Lk2Xa+8N9tR;$zK>Ru== zO;hUlCSVkay4T!G1tMCjdSbENsQ`bxGA+PEFFcoJ(G!c?o7HLqBI1xWl3H`Qx)lu{ zp=cLuse(NC5RUh@NhpI{9fGE(tv^t_pZ9p4$u#Jstr*Xw@hfk%>h z|6~dhFhy*ICgfP4-X%@H9(%Jsy2k-C6Ml6e{O^0(f)B~pq?-YUUp)&Kp-w!?VRId{ z<|xTknbhd@8h>I7@plK^NcC|q&kSp2L~TI<=427Uht^E(FfrT?<+WV}B`nKqSK9P@ z>hLpN%i_j{!ZLqa4`YF%tPDuA)Z3UvHz{s|?3WEMBR09ztSJ~ZfN}CT5s$Bs4rxbV zWOSat4FS+GNH4HEN}W+==^8yrK>KV1031q8{*bNbVb@eQWim$G@OQ>~cXdb8$P^DK z4V)3KydiR^N?F=aD2fg(YgA&@$k|t01KPj?weI%yUM)WIog6>Kmt925$2ne67)akfv*7Y++Y8B z0E005Co*ANciRsx4p7!G;IJTYFH1oKQ5~I!RQ37vA9D@>@_#o6{cjV3|Lz9UV&J9q zcgTJRr_L~1a?rgV&TEUn@eqP|b8WXA>#g;qt;aZ{ysvH^ibaoUziG?;^coIIg?RnL z%HaTFpc!Ce@Y6~QmB)snpBunFE9HA)={6rt=;Dn0C5~&bEXkEh~(To~ill^5m=|(Tc z6j2kpC%Bkm*1NVTbUXSqysl14uC*ifXaHH|)Z*%@W>*$I%l6H5!dUnqQb0;t+>W&qN;Wt|0ksPf-)Dv$tqNtkL3Gu&{3GxNV>q_ZwrOcJ2<;k^>%<5^X~(9ii`LkL))X0XsNl&q&Rr5o)PdOi? zYI{Nlo!30#gw=&v+2nO(SFvlxYS|cHUt>7Q1GW3=eNI;oXpK}9)ypySMpaF#%R%v^ zYqljx4plyH_<+dkNtdI^|JLfo=oh^+LMOYqlx)ATV=ZX_WxMz@8&k-5Foy44}6J1S26Ht^=T;Yv}@g`c9|dgYVh;$78J)@wQ{Dnw8tr5kPg&hgu|cba`hl3C(H zV{MVb9XDlUq!gQK#pz67a9xPv3}JVa^JadF#yhZ1r+FRp&0DJQD*BMNr|yQ)W8+Cj zdJFd`xId4mXp*j)BeH)2AQB67bauWZsVZdgTwS)Gb-9f$5MJNxm6zDHTokhjIQ_oA z7>wb+lu9XwJ0kx?#E7vraUM&XWRy{2O3;=r3@MryJW5x69{-!AJQLq}KBP+3b_L8K zn}vsfK}V}+@9GplGsr0J+c{J%24#{rjMo)hW}Q_Y#>ys@j5mOiklcR&-KCO8hMqnw z)sHLF67q$(5-iI_h8>xejcR!?Y8>6-cT)qLv5HOI-Rxu!rg?XvB}MXw%~;k-LXI6P zo0e3(Lb2#W#({;KrI0qY`QM^=F8WYI%(KUKm=A~3JhWAgdGXfD8gaQFTHynnwCS!t zg@?f98prVbUSrO2>y74O?%035ndBdwk@UN<-B@WiS$0|6Tw1^qM48#?wK=jvpR_r2 zU2Rr?m!RwM%BKU;O#4)2 zukz$QFR>ik6FZCGo_)Vj2gG-ShfDmMM+J z?`My^PLp_BXcuR9gU>EPMz((EZM-D$+wu;KWDLP!I?u_1-jDNLjA7eDeZA7tP15X7 z{_cfF!jd>@1_Bzbz8Dc8WuycVrrEAEdX1`cUg9obEfrJ~q zk_5`hEeg^cWZ`Ofq8_-R>{JC(d0E6xU|&}Bd-gNyhM)KkwY-q!6}MN)<8EAL% z5BX-5H9o|b4zy@gA>)ClG+vjZmM^;pPd8j^4QA_X3_g#X_ImBFX@i>Iy-VE=eeMJu z?s~k=v>n_S{I8kpa|yG#9N|k5JL^}e(;!#L?6m%f1&};ye(qm^KIFtuo+sEy&cSS1dsXU-Y`0qoQ1tTvER%+eV5BGWBTk*b=TWZzDLfAlUY}G zr)SwfFV}0V)QvsdZ)9dU*m5C`EqVgB+Si}HZaLV=e2jJpf)$R$MlHIz8dvoe4sdcr zbYbQsVvjijPg3J%aRtuo&AQ=kSp3H5_a`0Yr1NghZCHi z$;wAqgILG>MtX42Ujl0WztbA3ps*v|1;Nx8#{_l=Q=U8zm9#%yEk?R=u)+5~h=S9n zD+*ol$o(av@x;L`2BL85&BoIOd>*O09>ZrR1$L>g&RN?^_9v>Wt6D!l2A5>Hu7s|x zh9ctsUU|=S0%MgKhb55Eq>Mh8q(d)xqgX73=B}=+NW>BWeV^~^CwPy`E2`QaytpZvj8mHI$v`16Vg z^a%MM0yk!u7O>ISLhnxm$iG7((9i!(SVDnaqrQLRPa2cRff)`pwFpXuK}jM*Af5m3 zv9v1?*U*(vla)s6)0M{N zHOJAS6#b*Re-!%wfhn|W6__Xuh@bk>GuU&q@7Ddq_|R;#T<3XnlwsEfhxeCF^-6+< zCAqVX9z_LXH=iJ2^v}G1Shqhs&T`vW?($h3Nv7W)&*1WTydGt0kIHzjC4fD%lhQx) zmh^D<0kPiqr450pC07@)-r$@<{}iexYwtJ#&1#=jp>Pt9#L$L4AI;NhQ<5aO^)ppq zaoh<8ptjvadDgrwz~L9;ggVf^$LSU)vMu5nKVwnMd_KZXgE*e{h9NnJLO)lV>b@Oh z6S#+Adsv582_+wwPQj6=dGFdxVrFjr!oq-sPsTT<(@9@_Ex90zGQ30Tw#}icayh!#RyzJK z#|y%MuXt%}eqB1WCi2@*rqYH_k<$oDGScj`*tl!5D`NY7d8;ikxMj9X5>(3~aEgpt zmq|!za%6`|L+Td77OZ=epA9frnay~QGYS%pXZ%Ej*&2Xf`gZwH@uJyl@|@wuJt!3b7&Jgz);Rc5>{^2ORe zrR3Oq7P-w@BinksY+xI_3_qT}y#ZyJx{or}#0*_8By6^l`^D1aaJhdaSLA4kN{EP) z_zQJTrRQN=Ys=@0OD29lfufUy+e|s4IMOFhLGBlK2E9sfR(~9>NnyARP&;52oH0C| znKfms!ZVO<#s@Y%_gY^u%Z}(UxRlJ(aW{N} z99*h`m{$%m&SUU6m{Et=(xmM=e&r5alqDDalfH5lEsp3M`kD)J~+~8^j9wO`R4PHL393Q(kM%hFTtv z#2-YOi#djhA)mLzKa!GxnFwB7tr`H|j3y(i4PKsgu&X_G0|r4%^_n#`;~Bo!ofEoW z$M5`BH+@bgEH1dI>?#h?9~R)msCl2qjM{?K6sQEG8a`*3_pE{w&1=hii4G$l%o}Qf$q*7~$O&+(D096*3x= z3!n~Rb-~sYmz(qG6Hlc(3O37UB4``IiloZ0Qdm z%M*1BvWI^CF&E%%NMiglF{Pc>`PkIqLdLlO~oT0U-cehDKKTG zza9$OO|*~z8sqf>=4JL4NISm|jW9_}q*;DCh(zjJAjDH+h=8QoihQU_aBGa{Ol8-U zMVxuP?sOLCG0t%etydcH1anj#r` zz~-;?P;teO$Xb~iEZwEl1Q2v&t_zlMnDD;4u5?k)8erltIL?VZN@`9atZb)XL&CD+ zuF(^fVqjXEZyzInK2@mn_ zFMN8B=2_Avu-6EaIWnmzN8F4FS}9-aJe*^*JtMKN7+dQ|l_fj%%A~sRc2`W(n_1b7 z)0U+=e2osx!w!~XN*Yl@p5~e0=}FC zNcypy|CIE^VtyM=7%Xv{7<-fdKn^iSboPpwssYfTfi%qvkU*+YXX!?{`A`}LYT{K# zl@bHH18Ny!uKbs3`9uH90;Q_NMJ6$G?-Xqu`45)M-09l z$Bk4H)JnFgfwA_!85dJ(*|;1y|5G6;aFc>6KTa@!eR5%DueKB~U)=tNftA z;BS-6+t{J%ZaA^M^68ta(_b%J!i+fZmMt#E5n16ctDh7xKdRC$TGjQKyDn=mQNgG3 zr;CHlHF$G6CwIGJ@^k)`7%OnGXH4&R@gqOeb5!W#$u?8$vt6++d8pLYNwpYEQIyl1X^I<% zXHYMtdmF@Mjf-W+L(>jE4zg-`&Lr8^AyN_tXt=m=t=wWJ&{ue=&8cU?KCFp4lMyX? zV9av>gUNVvq^;3@TKZUCHB5BDXO-n(b5t0X69mKML3o+?dhQ&qAb=k%cE8@NU_WMm zdivm3soTCC&VjE{rQZ!&Sm|^0-6r!xC(aLk*auYMDvP|MiPB_f*j(+cy$X;5J4~%< zw^XxHAJdItox*Tfd7qIh4EYy4DRF`DjEivH@BB!nqf+Q!Ezr3`gaCiAT{~)kkTqK= zIP3=$?eJ@4ndoR~{S z;cTl2ze~{2u1dc->)oz4!Xk8n0l?dpnLg_>hM8A02e0zPP^EF>?v|a>35DpNO zB#+_lF%5+L=cO=&&QnhtcLFm)AQ{`goLvrJyVTvn+xK64#jC z#n3H0e=<ZYLSz*f4fsD^(cPuBw$Na-_^y;-~xC(5O|$<1}nHzS@9!CkNz6u5XN+@W(C&Xe&cY$ zHT!n3xyPvlurrrFcwa0@h$LP4+DVa(M#bhf*<#Kh?PJ{WkF}!{TwNmT36S z$cVK?on<2xJ8oSxMldPiJddR3pcQQ1XF}HROmcdDuc~crQR@G~Ty&yNsT=WzM)Mf- zs*_H@_jXxriY9*UxID5xermFNG&tw)IyLa^I!xY>uLd^!y74mbz8O4j^0|||i{*38 zw?+?}7cwBnRMKms5LsDJDXfZduH)JMi6L~nP)WYd=60rAcgVNAw~Yc2#b$i3?AEq@ zj_z91xZ|?woY=tPEV{imVwfx60U#>lGlMn_H#d%j>wk?oEZ>{>#ohbJdc|LLDRa=3~M1>8@^u5Cvfp zIBRhrFzKj2-b&nZz#6!I_QFm~U;IT5Xq;aosw*(Qu+vl?Ri28{j7Ed;Xn)1JldZ_0$OQTUNWmqDcf!Apx4Z44)6p9c!v&Yug zTM(LZzFwk@C-xmNsTxvh_cK~16fkL97|>ymBD{B_?45U5M#b3bQz|~&DGv+hjctKd z6+c8nciEm&ZwjL*Gm0rK#uK2~s!n(-tHCB4Bi+sXW>jc~$KY=vsas=oW7_R$dQ{LZ z@Nh7y`RurVUBpcAyqWVndtPnx6#9!gi_2I{C&L;v7?v9z-XcMkVjbQ42MMTBql~|Li>q3wA z8hhH3l}z1j2e^|fOk=N<;YodDE4urD7doPk%f6X-8D_^vrOou1!|KL`#Vj_qNNW}O$`^0rE0%+kh?27-bCr5bqxnaGOL zevk#&u4`xT&JhxS6;}&x?eVBCW1Sl}k^#@38MiM!H`jQVwF!aylrr z-C!fQB5k0PRO;c>Ngv1U48!Ms?*eHy@?q#g)CL{*F|t&_n-CQA1=>ufMiof#*0$Cl z;9x7@TFj~wlg)nWT-GFWGM9mo_V`kkP2|f=`xy&kDf}CDpF^Cpq`)f??ifKmqa&Hj1 zb<<^4ej^jB=S3$}p|4=Y*Tq5UJmFfg*iJh|5%~N|&S->Y8o^ zwg$p?R?|SbBRYj3?=wA#cus4kxg{#obBplYcBp;v)+;UV@>`>&tJ30zZqMo@4!et zsV}qP3%IW`MZK@JqrR^m{dscRiVE5w{ijYGoD}ONZAK_qfi_9E5-84k@^K5EoM7iZ zk%_OfM|_kD-~0@(Xt>dx00SkblTRL5V0ETDMVt*b_jNc%14GE^)$(U1F++Z}_3M8A z`Sa{#)oV%4YxC;ao7vrqrq5fp{c~?m_uEE5celsS#pw~ zo)s#WLVnA}WluUo&y#>>h9Rh0bl9~{I;QpSvJ|u`KpjV-bC#7N?uw32`0|ObcTL=z zks_@~TJa1|Ss^L&Ml1w{pRRc9W9p+nV1~UNkp8;)dLgPhQBYl=C~y}@?R_y6`+ABx zn8mWQq)4xE++t7t4ErdiUE_8lPJg0(%T-ak?Jo z+AKUjTM~KcdVM^OSDh-@5#&AxM+|;jfD!glj!h1wkkU?{^n)|ls$*Keh(9piM} zcDnnn#Ig_0wmq%YI^nP?pwg3KT~@LYwCO$-%of2E?IK*exUKR#o#Y1=g;`+;5x=!B zV^6-q;2r&Pvg5n7|McQ*wPfJ;%q*Gs_yAj$0}%Cbkw6mCXXG#r}=q#ICyUiLtX-jnkjO*uC%n+}_@*D)6}c9veMxd)i>sahqC9tjKQL9>|!u zA4}UEB<8yuBGW%DIA)3XSQexx^w4Q}L_ry78XOliyuW(t@gBN##|>PA zw3mg|^C=I4FKg!CAJbg#msF8(Z>H~}3H-MH)SmmiO_LAGAKkAs{*9is8sMe)whP)& zt?-siPu*BDL4!0$1VlN4`V`IyVkRK{X@bDHmkMcrXV|$&xuFn57PTmow~g@5VjM1*-Cp12s!$J-I%RY0;L#3tP` zfNZGJCEm}a!~0RZ7vITa-=4?pGu)g6xL(S82jm2SuZD%9)B#q z-8{k(^Gr8NPqnvLfS+PyL>I}Xs7Q)kyBn{!xjf&d*~xBdR%-WWTUU2#Y|Q7IxK3nn z+25V5TXN`8&<#C6x@qPaWL0nOt<)Go5c>Y2H^@70Gl(e`9l;_k!O1MnBQ+&{b4V;j zaJ?)YT3Gjay~-(}@1d4@$0bR=1-0tg(HgyiV7$vO^fgz0pL8+nM=5y_M%xS`I=dUC zCbd0=oNFY5chpo->Q8T@ji7PN6U~4y)l8YY)9&2PM!KemaUzR zEIfxXjeArNhnl=QDd36DV`Zfjt;>I-cCgNS|25|*G|Sr}Bww^~=KqW0m~?Uw3aI;p ziE)g%z$vqRK((Qs${glt7`=?Ko<-b?pSnF=^{_5E z530%?Re@U2vE;~-#uWRejA#D`V`uW`+zhkivMA;d39>Lp8EY2z;+_RN1sP*Pc1%dR z{aOpl4f>o|TP~yk6e!p;X9w-N*sKR1`TS|pqAWP&p0Em_!IGHbcN!{~D{Gi2Gdd;{ zvm5VH5kt&Xn`o22H&w}qrz(|iaoJIm4%uTWeL-$eqOr}Wp9M3A!JScY){@|FWGD9Q zW5bw;LW;nkE{?+|WEt7_l;;1{iSBF@c+CdcF*`L$|1R;Fjir{Umc-z5#dI0?^~zf> z0DEUj?5`FYk8?b{`$s}OQ#Rb*AlyLeb`_MHCYq3j8}~A*vtk+>4R#Mb?k}#YjSYc# z7G+7B(4AsehlJQ}WN1*|uJ$uOgOPsmz8-4|&k=Z4-Jh0tU3l979-deu;azA-ygc{U z2zs37ydnSpr$%n*sF3nn*;FX6%SZ+9;?dr0cFZa0m9WS4f?IJV}Z^>~P zM^#hK;GL9;MiXrtFc07veWbiUgcW_Tl!Pp?G!#~-Yd>_ZTq?^s=Fi0<8G;^q(=-NN@VO8-Ed=8!gJsG_#$DvAh&e z^jz2=N3EZ(DM}o6U5yP-!Ti!>qqbuIM<@5MoZ8Ze^xNhF6FL)VhP&tss@^x$Sk966 z{)}5fef|fV7Nun7%f$rwSQIw1?vb*~PQnOkRmp_PMw>+x0FTf0gl9jK&Es+p4xOr@ zxj9zQ@)>ip?XnhAkwNS6kB^|syR_)h?CLg|4dnAc7_&kV8Agc=Oa4AfkF%J%b-Q6- zGae8!O=|iCe;Aq@*cb}3{rl`Uc}e(Q*W02izKxh}dR$e$y^IxWDx4kozOk4S{rSq` z_ln*7w%6(RK>YUn!|yHU^|^lEcbsF0w4HYOvQ&t#e}Z?|%wo1E`gX;-x=22qQ}0oM z(|$mmzHnXz`LE-exX!b5%05ZaWE9PLL3=q)(kB1ARInBMM>i!gt~}H(lg*8pi3YwN zeJmJ48Q*kWLrz@@dPAtGSD2`W9>QnR1LExSGbYKpQoM#lEM={h`oFq;0UkYx51Lq+-ThcbaFX!$oRrlS&ZvmhQ zb#}|0KaCh}eE_sN3!iPrU;st}4n$fp7$-3#-Yw}tQ&ZD)fn+SP;OqDL ziMFHi3cJ^h@#Zzp;|D^*!5oL4R2E|i5SMr<^lmcGr>}ZBID8|9%c4~5;(op2>UgUb zn7`fb_OLwW)DY}L_Is=l6tLLyeLCI8OUiXK2;h``K>4ufanX-$+CKl(VAnsD_w0*j zd%Op7K`W2f4KkXrEk8nf+{+U$nCy(*j)q=RDX-9$!NAp0^A*;S@k)}I2m8JC%X8W+ z{h0qWChn4dHq?t2Z7Z^0GQ3Bd5v>6-+0BLd1p(;lCy#Rm;7ANXL?T5uVl>DA zt-0yB7-lT!va;#(6h@mu^q41o&S&)Oh0J&Kqbc0)VKE12vWDx&^4Jg_9b}JZ# zbF)|lW&uuC32{q6Sx&5 zcI?X`a=#}&_xs~_pLq8?-TmP9^itv12x57%JO`W?0qkHXLV<99(-{)~^nh{@BMcHW zq0vEEj*y-ZfCK6;ZTderBlA~)1kAy0f{e!i|2BVs6+FmRc);a-{?0A`&6PlzQ|{)U zP6*IGrP9bwW`AA;KS#Z{P8H&cTWaYSVm5W@?emOsvjMFWy76#WzaWl1(>D5GM|$(t zcM|v!ag&e1f53Y?Bl5h(L`4CRCg`tpkN9IC{#D`g6GEWQ6*A>ikQjBgXL$l68Y~Oj z^zsfSZ_!ll3);TPlHm_b3GTU%=D5Xb6Fk69xuJGCkDvslZFQxUOz@q0u2S5($)@Xb z(`iUWe<_GChS~s83J5}VY~0zlc0Frld=+K>COdokgJJIcOvprZk*rQm!C5_!Ww7O6 zb<+UIx456JbpY~BRo@I90=3k`cZ^0Wtm?pI`|XC|m7;Q&sRx2R%NYZ$JW zbT%Ddh7~tnk_KTqZ_O5Mgflh~-V8_1hy5!+g*9|+!|pMbG6a4uXp&kv&pCz;6@0~D z2C=nB?puN@6e!$FyMH=Gxu%C=4csrVyBs7H0Jtx+9KqduDSATW@+RJ9vNZSF(2WJ$ zf8Bs(U7G3#Ng^-H`;X#(U5fIut}>BaGGN#LL73PE=58*%1vWL4qLtw9p!;)?`O;o*? zRaNlf40Vy=n_RAqefCdDk;Wv*#H*P|i!r(?BA#{8j4GsjL#0>#A4E}N;gdOu>84r> z$tQVnvGcFKEgR~1<%2(?UPIEhAyojJZ(uFSWx=@Kf#e_m*2SCq-C20|jsgk|PZH;iobVr@%h)olgT za#h1hw6fIYVB?F56Em;L8|XB~gF6%l3g`tQnXgJhVnKJ9Hslo7Uzb#7Rk&+* zdWRA>^plxW9i*zJvP6#f;52Q1ow|Gf{#*^43+yad+*l-uiZJ7zQRi@_u=KL{{CNx1 z1#3p5sROiwP(P!KLxzxpT00kdhU#ff*5Hn#yAte+H+9Uq>uJ$yQvuUK{(Wo#a5*G?Ln2u8p@+vw!0 zERGa|;>p=Mqr0xSy2;R;6nx_+^nE!tDEW^$5_CFDm)k+`mwrsmu`E8fi=BRJqEw%{ z_I_Ax8gh4+WT-i&&W4UQN;SssmExW|8^)YC+3d^3YIQ4ZbeM)BWdWNl>%pYm>O%d% zDUrMe+X)4jOhOYW*>^+U+>Cdr&^}p-QfdJirbt&%IfnUQUe*1#xjW)K7}H#1{K6d4 zt*j7V{cup=Sd0hcvUpwATE1MrJmTAF*Pr2j6Y$AsuF`uO+ojhKm}|f8dLnM|+6KBY zw(ybrN73XGN?JpSn1qA23S{Tz#QU=JFBM&dvvWu*FR@S>56vl2MztKC-iTCv(z9XJ zMO+R3GP5!s*`hOjhtm*gtw*M?ymI5Kn3gHpYs~TaZvr%t#is?Faud;0Axbtwc6jJt9B@w9rvE@KHnu$`R&ij|Hn;iuf{$x~##Z#TvFVU%vNOaH!DpxDMV|Gdg z6Z@5h@WNhDN5f{)mAch3&l2Bs>8<;l!Mtwq7?O%8$mFs&!TH{bPSp9rdFYBM`L3Y; zv{aLk?EhU#ugs8837rnsVg9(|B|gXD?=LO)H?S%KES?2i8lErSLomz@t?5Ra%|ep*~O%TYt;Wa}J%Kj~MQ z5+_{hLy@Kgo=Z$bQtkI(6-Y#rfw6-`WUYEL`5b{4bc2_^L-U-A#0NLr^;swLMUF+? zk1sv53Vf%%r>DIkh)%ZtMt`7CmVeiV`|u_tgKJSQe~?B=AbhtAUQG%rq6Kv&j?WZY z1vh9Pk%D&PV(f@w31L1)UxwRg1x)ZJNE)G=ijS0k?L^w-Qvhsp2?v&^W^ry93&TrC zeU+O9WFUhhKA|}4=&T-07YxP{E3VF{YwEdN-Pv{hTF{w1Kj3~1LI>F=*^K&NQx*$L zC4nIkvB9^1_o+bs$nfd*lpWe}=5GC#INzL29u9dJ_JwNh@#dJENBy7B+->e(&|LPx zhOLd^km5f;^T78G3rnIz{)!4-IwnxU4z5(q>GlmzahkEU$YN^o8n+yb!xN2q;e(7<-{}Up^ zuw%Z1y{{1m&0qf9!{FdC`wI!;u!H#VE|~vAREPkZTMPh^+P=Ma?`F_kCJ;mg|0nkQ zKZ2F-HxPQi((gZ_&VTqDj*QL`awmFnG#CAVbA$PUN$Dhh17s8)nt5qou-avut_}Dq z=geOY1PhMnM~6U?KMsjAx*lkv1Q|@ToXqt92Y@qZx|?oQCDjU3{+SimcOrjzSRF|~ zud2{L+hKL8fmS!SC)KJLE*lUJkD_Iy9srBXTh1g>?BdqGpcXb;l<#h{zOgZt_(hCI zU^G@-o#Rp-!e{6+W~~c3>MK z{dY5pf_?IMxkw4d(Wb&8G97Zkh9$01>MCVxL~9v!^BPlvilwjjuNb5%v+F2&-3&0Z_IO!vH!8`kmc!TVPkV?#&#CgLNJN z`H2Nzm*ORf4plJqQ=MbR+maZXP2W9DGi)j8$wSsuqajr zKIpnWI@blJmF3Z8fQN`+H4?LfvD>aRG;jK@#{B#Ua!p{@C|%zy8g$QH{?4$Ual;1W z9_D2Xc|#xUB(f0)AX(Sz7p;TiVJTv(Ay``rQ)i>e2g}7s-?A8A5zJtG<1&w;^haii;dbv6jHJaQ7XysKcVi+8r$-(D?8w`2Q#*WSigd6fooDH$i1GOmzyq z4y>#<9`%W$`uP7`VT9+yFI=qszMgE{Q45%ziy zOA*xH7<}%#a(F?IV!uPDz1@5=JIezhiZTEVRmK@5pR*5^Qs!(}J)z;E9f zmUeH9k1uVh+4N+YZdA*cBS({;o%z?l@6YC)C}WNN+x)?sMK0-@WiMym=J@TYJiHIb-x${!{nuMuUG?tGu4l8jm&I4y%3NN%V{a{J zy&P}Ao1^LuDZojAk2@asDO+E)1uhd@@nAl<9h5br7t{{&3fz3H0H-4-^2#qaRP2+ zG&u@8FuYlfrO^PI#NgNGfte}+&?CtXZ a{xd{r&YB~bX|f8my42Iv&t;ucLK6U}Jw{sq literal 0 HcmV?d00001 From f9372442db0b51d6ddf554d7d454aa0e697fe2db Mon Sep 17 00:00:00 2001 From: Jaromir Kaspar Date: Tue, 23 Feb 2021 01:07:42 +0100 Subject: [PATCH 3/5] docs + azshci kubernetes version bump --- .../01-Health-Service/.gitkeep | 0 .../02-Servicing/.gitkeep | 0 .../03-Monitoring/.gitkeep | 0 .../.gitkeep | 0 Docs/AzureStackHCI/readme.md | 2 +- Scenarios/AzSHCI and Kubernetes/Scenario.ps1 | 60 +++++++++---------- Scenarios/AzSHCI and Kubernetes/readme.md | 2 +- 7 files changed, 32 insertions(+), 32 deletions(-) create mode 100644 Docs/AzureStackHCI/04-AzSHCI-Troubleshooting/01-Health-Service/.gitkeep create mode 100644 Docs/AzureStackHCI/04-AzSHCI-Troubleshooting/02-Servicing/.gitkeep create mode 100644 Docs/AzureStackHCI/04-AzSHCI-Troubleshooting/03-Monitoring/.gitkeep create mode 100644 Docs/AzureStackHCI/04-AzSHCI-Troubleshooting/04-Validation-and-Troubleshooting-Tools/.gitkeep diff --git a/Docs/AzureStackHCI/04-AzSHCI-Troubleshooting/01-Health-Service/.gitkeep b/Docs/AzureStackHCI/04-AzSHCI-Troubleshooting/01-Health-Service/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Docs/AzureStackHCI/04-AzSHCI-Troubleshooting/02-Servicing/.gitkeep b/Docs/AzureStackHCI/04-AzSHCI-Troubleshooting/02-Servicing/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Docs/AzureStackHCI/04-AzSHCI-Troubleshooting/03-Monitoring/.gitkeep b/Docs/AzureStackHCI/04-AzSHCI-Troubleshooting/03-Monitoring/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Docs/AzureStackHCI/04-AzSHCI-Troubleshooting/04-Validation-and-Troubleshooting-Tools/.gitkeep b/Docs/AzureStackHCI/04-AzSHCI-Troubleshooting/04-Validation-and-Troubleshooting-Tools/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Docs/AzureStackHCI/readme.md b/Docs/AzureStackHCI/readme.md index 79cad30c..0e098255 100644 --- a/Docs/AzureStackHCI/readme.md +++ b/Docs/AzureStackHCI/readme.md @@ -9,4 +9,4 @@ The documentation is divided into 4 main parts * Everything you have to know before you buy/deploy Azure Stack HCI solution **01-AzSHCI-Planning** * Everything you have to know to successfully deploy Azure Stack HCI solution **02-AzSHCI-Deployment** * Everything you have to know to operate and understand Azure Stack HCI solution **03-AzSHCI-DeepDive** (Work in Progress) -* Everything you have to know to troubleshoot Azure Stack HCI solution **04-AzSHCI-DeepDive** (Work in Progress) \ No newline at end of file +* Everything you have to know to troubleshoot Azure Stack HCI solution **04-AzSHCI-Troubleshooting** (Work in Progress) \ No newline at end of file diff --git a/Scenarios/AzSHCI and Kubernetes/Scenario.ps1 b/Scenarios/AzSHCI and Kubernetes/Scenario.ps1 index 5b81d208..0a1a906d 100644 --- a/Scenarios/AzSHCI and Kubernetes/Scenario.ps1 +++ b/Scenarios/AzSHCI and Kubernetes/Scenario.ps1 @@ -195,9 +195,9 @@ Invoke-Command -ComputerName $ClusterName -ScriptBlock { #endregion #region Download AKS HCI module -Start-BitsTransfer -Source "https://aka.ms/aks-hci-download" -Destination "$env:USERPROFILE\Downloads\AKS-HCI-Public-Preview-Dec-2020.zip" +Start-BitsTransfer -Source "https://aka.ms/aks-hci-download" -Destination "$env:USERPROFILE\Downloads\AKS-HCI-Public-Preview-Feb-2021.zip" #unzip -Expand-Archive -Path "$env:USERPROFILE\Downloads\AKS-HCI-Public-Preview-Dec-2020.zip" -DestinationPath "$env:USERPROFILE\Downloads" -Force +Expand-Archive -Path "$env:USERPROFILE\Downloads\AKS-HCI-Public-Preview-Feb-2021.zip" -DestinationPath "$env:USERPROFILE\Downloads" -Force Expand-Archive -Path "$env:USERPROFILE\Downloads\AksHci.Powershell.zip" -DestinationPath "$env:USERPROFILE\Downloads\AksHci.Powershell" -Force #endregion @@ -208,6 +208,8 @@ Expand-Archive -Path "$env:USERPROFILE\Downloads\AksHci.Powershell.zip" -Destina $vSwitchName="vSwitch" $VolumeName="AKS" $Servers=(Get-ClusterNode -Cluster $ClusterName).Name + $VIPPoolStart="10.0.0.100" + $VIPPoolEnd="10.0.0.200" #Copy module to nodes $PSSessions=New-PSSession -ComputerName $Servers @@ -245,7 +247,8 @@ Expand-Archive -Path "$env:USERPROFILE\Downloads\AksHci.Powershell.zip" -Destina } #configure aks Invoke-Command -ComputerName $servers[0] -Credential $Credentials -Authentication Credssp -ScriptBlock { - Set-AksHciConfig -vnetName $using:vSwitchName -workingDir c:\clusterstorage\$using:VolumeName\Images -imageDir c:\clusterstorage\$using:VolumeName\Images -cloudConfigLocation c:\clusterstorage\$using:VolumeName\Config -ClusterRoleName "$($using:ClusterName)_AKS" + $vnet = New-AksHciNetworkSetting -vnetName $using:vSwitchName -vippoolstart $using:vippoolstart -vippoolend $using:vippoolend + Set-AksHciConfig -vnet $vnet -workingDir c:\clusterstorage\$using:VolumeName\Images -imageDir c:\clusterstorage\$using:VolumeName\Images -cloudConfigLocation c:\clusterstorage\$using:VolumeName\Config -ClusterRoleName "$($using:ClusterName)_AKS" -enableDiagnosticData -controlPlaneVmSize = 'default' # Get-AksHciVmSize } #validate config @@ -269,7 +272,7 @@ Expand-Archive -Path "$env:USERPROFILE\Downloads\AksHci.Powershell.zip" -Destina $ClusterName="AzSHCI-Cluster" $ClusterNode=(Get-ClusterNode -Cluster $clustername).Name | Select-Object -First 1 Invoke-Command -ComputerName $ClusterNode -ScriptBlock { - New-AksHciCluster -clusterName demo -linuxNodeCount 1 -linuxNodeVmSize Standard_A2_v2 -controlplaneVmSize Standard_A2_v2 -loadBalancerVmSize Standard_A2_v2 #smallest possible VMs + New-AksHciCluster -Name demo -linuxNodeCount 1 -linuxNodeVmSize Standard_A2_v2 -controlplaneVmSize Standard_A2_v2 -EnableADAuth -loadBalancerVmSize Standard_A2_v2 #smallest possible VMs } #distribute kubeconfig to other nodes (just to make it symmetric) @@ -285,30 +288,27 @@ Foreach ($OtherSession in $OtherSessions){ #VM Sizes <# -$global:vmSizeDefinitions = -@( - # Name, CPU, MemoryGB - ([VmSize]::Default, "4", "4"), - ([VmSize]::Standard_A2_v2, "2", "4"), - ([VmSize]::Standard_A4_v2, "4", "8"), - ([VmSize]::Standard_D2s_v3, "2", "8"), - ([VmSize]::Standard_D4s_v3, "4", "16"), - ([VmSize]::Standard_D8s_v3, "8", "32"), - ([VmSize]::Standard_D16s_v3, "16", "64"), - ([VmSize]::Standard_D32s_v3, "32", "128"), - ([VmSize]::Standard_DS2_v2, "2", "7"), - ([VmSize]::Standard_DS3_v2, "2", "14"), - ([VmSize]::Standard_DS4_v2, "8", "28"), - ([VmSize]::Standard_DS5_v2, "16", "56"), - ([VmSize]::Standard_DS13_v2, "8", "56"), - ([VmSize]::Standard_K8S_v1, "4", "2"), - ([VmSize]::Standard_K8S2_v1, "2", "2"), - ([VmSize]::Standard_K8S3_v1, "4", "6"), - ([VmSize]::Standard_NK6, "6", "12"), - ([VmSize]::Standard_NV6, "6", "64"), - ([VmSize]::Standard_NV12, "12", "128") - -) +Get-AksHciVmSize + + VmSize CPU MemoryGB + ------ --- -------- + Default 4 4 + Standard_A2_v2 2 4 + Standard_A4_v2 4 8 + Standard_D2s_v3 2 8 + Standard_D4s_v3 4 16 + Standard_D8s_v3 8 32 +Standard_D16s_v3 16 64 +Standard_D32s_v3 32 128 + Standard_DS2_v2 2 7 + Standard_DS3_v2 2 14 + Standard_DS4_v2 8 28 + Standard_DS5_v2 16 56 +Standard_DS13_v2 8 56 + Standard_K8S_v1 4 2 +Standard_K8S2_v1 2 2 +Standard_K8S3_v1 4 6 + #> #endregion @@ -347,9 +347,9 @@ Register-AzResourceProvider -ProviderNamespace Microsoft.KubernetesConfiguration #onboard cluster Invoke-Command -ComputerName $ClusterName -ScriptBlock { #generage kubeconfig first - Get-AksHciCredential -clusterName demo + Get-AksHciCredential -Name demo #onboard - Install-AksHciArcOnboarding -clusterName $using:AKSClusterName -tenantId $using:tenantID -subscriptionId $using:subscriptionID -resourcegroup $using:resourcegroup -Location $using:location -clientId $using:ClientID -clientSecret $using:UnsecureSecret + Install-AksHciArcOnboarding -Name $using:AKSClusterName -tenantId $using:tenantID -subscriptionId $using:subscriptionID -resourcegroup $using:resourcegroup -Location $using:location -clientId $using:ClientID -clientSecret $using:UnsecureSecret } #check onboarding diff --git a/Scenarios/AzSHCI and Kubernetes/readme.md b/Scenarios/AzSHCI and Kubernetes/readme.md index 4d95c008..c2bcc5d3 100644 --- a/Scenarios/AzSHCI and Kubernetes/readme.md +++ b/Scenarios/AzSHCI and Kubernetes/readme.md @@ -22,7 +22,7 @@ Note: please download latest [WSLab](https://aka.ms/wslab/download) as there is $LabConfig=@{ DomainAdminName='LabAdmin'; AdminPassword='LS1setup!' ; <#Prefix = 'WSLab-'#> ; DCEdition='4'; Internet=$true ; TelemetryLevel='Full' ; TelemetryNickname='' ; AdditionalNetworksConfig=@(); VMs=@()} #2 nodes for AzSHCI Cluster -1..2 | ForEach-Object {$VMNames="AzSHCI" ; $LABConfig.VMs += @{ VMName = "$VMNames$_" ; Configuration = 'S2D' ; ParentVHD = 'AzSHCI20H2_G2.vhdx' ; HDDNumber = 4 ; HDDSize= 4TB ; MemoryStartupBytes= 16GB; VMProcessorCount="Max" ; NestedVirt=$true}} +1..2 | ForEach-Object {$VMNames="AzSHCI" ; $LABConfig.VMs += @{ VMName = "$VMNames$_" ; Configuration = 'S2D' ; ParentVHD = 'AzSHCI20H2_G2.vhdx' ; HDDNumber = 4 ; HDDSize= 4TB ; MemoryStartupBytes= 24GB; VMProcessorCount="Max" ; NestedVirt=$true}} #Windows 10 management machine (for Windows Admin Center) $LabConfig.VMs += @{ VMName = 'Win10'; ParentVHD = 'Win1020H1_G2.vhdx' ; AddToolsVHD = $True ; MGMTNICs=1 } From 0604f027d146a67b7edba770daee350aec2ed461 Mon Sep 17 00:00:00 2001 From: Jaromir Kaspar Date: Wed, 24 Feb 2021 17:28:28 +0100 Subject: [PATCH 4/5] added PatchParentDisks script --- Scripts/1_Prereq.ps1 | 4 +- Tools/PatchParentDisks.ps1 | 92 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 Tools/PatchParentDisks.ps1 diff --git a/Scripts/1_Prereq.ps1 b/Scripts/1_Prereq.ps1 index b4318fc5..a0e34592 100644 --- a/Scripts/1_Prereq.ps1 +++ b/Scripts/1_Prereq.ps1 @@ -120,8 +120,8 @@ function Get-WindowsBuildNumber { } } -# add createparentdisks and DownloadLatestCU scripts to Parent Disks folder - $FileNames="CreateParentDisk","DownloadLatestCUs" +# add createparentdisks, DownloadLatestCU and PatchParentDisks scripts to Parent Disks folder + $FileNames="CreateParentDisk","DownloadLatestCUs","PatchParentDisks" foreach ($filename in $filenames){ $Path="$PSScriptRoot\ParentDisks\$FileName.ps1" If (Test-Path -Path $Path){ diff --git a/Tools/PatchParentDisks.ps1 b/Tools/PatchParentDisks.ps1 new file mode 100644 index 00000000..1ba54d4a --- /dev/null +++ b/Tools/PatchParentDisks.ps1 @@ -0,0 +1,92 @@ +# Verify Running as Admin +$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator") +If (-not $isAdmin) { + Write-Host "-- Restarting as Administrator" -ForegroundColor Cyan ; Start-Sleep -Seconds 1 + + if($PSVersionTable.PSEdition -eq "Core") { + Start-Process pwsh.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs + } else { + Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs + } + + exit +} + +#region Functions + + function WriteInfo($message){ + Write-Host $message + } + + function WriteInfoHighlighted($message){ + Write-Host $message -ForegroundColor Cyan + } + + function WriteSuccess($message){ + Write-Host $message -ForegroundColor Green + } + + function WriteError($message){ + Write-Host $message -ForegroundColor Red + } + + function WriteErrorAndExit($message){ + Write-Host $message -ForegroundColor Red + Write-Host "Press enter to continue ..." + Read-Host | Out-Null + Exit + } + +#endregion + +#region Ask for VHDs + WriteInfoHighlighted "Please select VHDx file(s)" + [reflection.assembly]::loadwithpartialname("System.Windows.Forms") + $VHDs = New-Object System.Windows.Forms.OpenFileDialog -Property @{ + Multiselect = $true; + Title="Please select VHDx file(s)" + } + $VHDs.Filter = "vhdx files (*.vhdx)|*.vhdx|All files (*.*)|*.*" + If($VHDs.ShowDialog() -eq "OK"){ + WriteInfo "File $($VHDs.FileName) selected" + } + if (!$VHDs.FileName){ + WriteErrorAndExit "VHDx was not selected... Exitting" + } +#endregion + +#region ask for MSU packages + WriteInfoHighlighted "Please select msu packages you want to add to VHDx." + [reflection.assembly]::loadwithpartialname("System.Windows.Forms") + $msupackages = New-Object System.Windows.Forms.OpenFileDialog -Property @{ + Multiselect = $true; + Title="Please select msu packages you want to add to VHDx." + } + $msupackages.Filter = "msu files (*.msu)|*.msu|All files (*.*)|*.*" + If($msupackages.ShowDialog() -eq "OK"){ + WriteInfoHighlighted "Following patches selected:" + foreach ($filename in $msupackages.FileNames){ + WriteInfo "`t $filename" + } + }else{ + WriteErrorAndExit "No update package selected, exitting" + } +#endregion + +# region mount and patch VHD + foreach ($VHD in $VHDs) { + WriteInfoHighlighted "Patching VHD $($VHD.Filename)" + $Mount=Mount-VHD $Vhd.FileName -Passthru + #Grab letter + $DriveLetter=(Get-Disk -Number $Mount.Number |Get-Partition | Where-Object Driveletter).DriveLetter + #Patch + foreach ($msupackage in $msupackages){ + Add-WindowsPackage -PackagePath $msupackage.filename -Path "$($DriveLetter):\" + } + #Dismount + $Mount | Dismount-VHD + } +#endregion + +WriteSuccess "Job Done. Press enter to continue..." +Read-Host | Out-Null \ No newline at end of file From a8e46664109435979780e746b915ea61d885125d Mon Sep 17 00:00:00 2001 From: Jaromir Kaspar Date: Wed, 24 Feb 2021 18:16:37 +0100 Subject: [PATCH 5/5] WSLab -> MSLab rebrand --- .../03-deployment-models-and-workloads.md | 2 +- .../02-AzSHCI-Deployment/02-os-deployment.md | 8 ++-- .../03-os-configuration.md | 8 ++-- .../04-network-configuration.md | 4 +- .../06-creating-volumes.md | 6 +-- .../02-AzSHCI-Deployment/07-deploying-vms.md | 4 +- .../creating-parent-disk.md | 0 .../domain-join.md | 0 .../internet-connectivity.md | 0 .../modifying-labconfig.md | 0 .../scvmm.md | 0 .../media/Explorer01.png | Bin .../media/Explorer02.png | Bin .../media/Explorer03.png | Bin .../media/Hyper-V_Manager01.png | Bin .../media/Hyper-V_Manager02.png | Bin .../media/PowerShell01.png | Bin .../media/PowerShell02.png | Bin .../media/PowerShell03.png | Bin .../media/PowerShell04.png | Bin .../media/PowerShell05.png | Bin .../media/DownloadLatestCUs.gif | Bin .../media/Explorer01.png | Bin .../media/Explorer02.png | Bin .../media/Explorer03.png | Bin .../media/Explorer04.png | Bin .../media/PowerShell01.png | Bin ...slab-deployment.md => mslab-deployment.md} | 24 +++++----- ...{wslab-hydration.md => mslab-hydration.md} | 18 +++---- ...{wslab-telemetry.md => mslab-telemetry.md} | 44 +++++++++--------- Docs/toc.yml | 6 +-- README.md | 40 ++++++++-------- Tools/CreateParentDisk.ps1 | 2 +- 33 files changed, 83 insertions(+), 83 deletions(-) rename Docs/{WSLab-Advanced => MSLab-Advanced}/creating-parent-disk.md (100%) rename Docs/{WSLab-Advanced => MSLab-Advanced}/domain-join.md (100%) rename Docs/{WSLab-Advanced => MSLab-Advanced}/internet-connectivity.md (100%) rename Docs/{WSLab-Advanced => MSLab-Advanced}/modifying-labconfig.md (100%) rename Docs/{WSLab-Advanced => MSLab-Advanced}/scvmm.md (100%) rename Docs/{WSLab-Deployment => MSLab-Deployment}/media/Explorer01.png (100%) rename Docs/{WSLab-Deployment => MSLab-Deployment}/media/Explorer02.png (100%) rename Docs/{WSLab-Deployment => MSLab-Deployment}/media/Explorer03.png (100%) rename Docs/{WSLab-Deployment => MSLab-Deployment}/media/Hyper-V_Manager01.png (100%) rename Docs/{WSLab-Deployment => MSLab-Deployment}/media/Hyper-V_Manager02.png (100%) rename Docs/{WSLab-Deployment => MSLab-Deployment}/media/PowerShell01.png (100%) rename Docs/{WSLab-Deployment => MSLab-Deployment}/media/PowerShell02.png (100%) rename Docs/{WSLab-Deployment => MSLab-Deployment}/media/PowerShell03.png (100%) rename Docs/{WSLab-Deployment => MSLab-Deployment}/media/PowerShell04.png (100%) rename Docs/{WSLab-Deployment => MSLab-Deployment}/media/PowerShell05.png (100%) rename Docs/{WSLab-Hydration => MSLab-Hydration}/media/DownloadLatestCUs.gif (100%) rename Docs/{WSLab-Hydration => MSLab-Hydration}/media/Explorer01.png (100%) rename Docs/{WSLab-Hydration => MSLab-Hydration}/media/Explorer02.png (100%) rename Docs/{WSLab-Hydration => MSLab-Hydration}/media/Explorer03.png (100%) rename Docs/{WSLab-Hydration => MSLab-Hydration}/media/Explorer04.png (100%) rename Docs/{WSLab-Hydration => MSLab-Hydration}/media/PowerShell01.png (100%) rename Docs/{wslab-deployment.md => mslab-deployment.md} (72%) rename Docs/{wslab-hydration.md => mslab-hydration.md} (86%) rename Docs/{wslab-telemetry.md => mslab-telemetry.md} (90%) diff --git a/Docs/AzureStackHCI/01-AzSHCI-Planning/03-deployment-models-and-workloads.md b/Docs/AzureStackHCI/01-AzSHCI-Planning/03-deployment-models-and-workloads.md index 0d73818e..972facbc 100644 --- a/Docs/AzureStackHCI/01-AzSHCI-Planning/03-deployment-models-and-workloads.md +++ b/Docs/AzureStackHCI/01-AzSHCI-Planning/03-deployment-models-and-workloads.md @@ -28,7 +28,7 @@ Technically all VMs are located on SOFS share that is presented using DFS-N name ## User Profile Disks host (Windows Server Only) -Azure Stack HCI can also host user profile disks (UPDs). Since UPD is VHD (both native Windows Server functionality and [FSLogix](https://github.com/microsoft/WSLab/tree/master/Scenarios/FSLogix)), Scale-Out File Server can be used as workload pattern is the same as for Virtual Machines. +Azure Stack HCI can also host user profile disks (UPDs). Since UPD is VHD (both native Windows Server functionality and [FSLogix](https://github.com/microsoft/MSLab/tree/master/Scenarios/FSLogix)), Scale-Out File Server can be used as workload pattern is the same as for Virtual Machines. ## SQL diff --git a/Docs/AzureStackHCI/02-AzSHCI-Deployment/02-os-deployment.md b/Docs/AzureStackHCI/02-AzSHCI-Deployment/02-os-deployment.md index 5be0a778..21127992 100644 --- a/Docs/AzureStackHCI/02-AzSHCI-Deployment/02-os-deployment.md +++ b/Docs/AzureStackHCI/02-AzSHCI-Deployment/02-os-deployment.md @@ -11,11 +11,11 @@ You can interactively install or upgrade Windows by using the Windows product me ### Manual steps needed after interactive setup > [!TIP] -> You can test this in [WSLab](https://aka.ms/WSLab) with following VMs in labconfig: +> You can test this in [MSLab](https://aka.ms/MSLab) with following VMs in labconfig: > > 1..4 | ForEach-Object {$VMNames="S2D"; $LABConfig.VMs += @{ VMName = "$VMNames$_" ; Configuration = 'S2D' ; ParentVHD = 'Win2019Core_G2.vhdx'; HDDNumber = 12; HDDSize= 4TB ; **Unattend="None"**}} > ->To test environment without dhcp, just stop dhcp server with **Stop-Service DHCPServer** on WSLab DC +>To test environment without dhcp, just stop dhcp server with **Stop-Service DHCPServer** on MSLab DC if DHCP is not enabled, it's necessary to configure IP and domain join machines. The easiest is to run sconfig that will pop up wizard. Following are powershell examples to configure the same @@ -369,11 +369,11 @@ Read-Host ## SCVMM -Since deploying operating system with SCVMM is bit complex task, it's well explained within [WSLab scenario](https://github.com/microsoft/WSLab/tree/master/Scenarios/S2D%20and%20Bare%20Metal%20with%20SCVMM). +Since deploying operating system with SCVMM is bit complex task, it's well explained within [MSLab scenario](https://github.com/microsoft/MSLab/tree/master/Scenarios/S2D%20and%20Bare%20Metal%20with%20SCVMM). ## MDT -Unlike SCVMM, Microsoft Deployment toolkit is a free tool. Together with SQL Express with database of your asset, you can perform Zero Touch Installation. See more in [WSLab scenario](https://github.com/microsoft/WSLab/tree/master/Scenarios/AzSHCI%20and%20MDT). +Unlike SCVMM, Microsoft Deployment toolkit is a free tool. Together with SQL Express with database of your asset, you can perform Zero Touch Installation. See more in [MSLab scenario](https://github.com/microsoft/MSLab/tree/master/Scenarios/AzSHCI%20and%20MDT). ## Useful tools in install media diff --git a/Docs/AzureStackHCI/02-AzSHCI-Deployment/03-os-configuration.md b/Docs/AzureStackHCI/02-AzSHCI-Deployment/03-os-configuration.md index bbba32ac..16c9c16a 100644 --- a/Docs/AzureStackHCI/02-AzSHCI-Deployment/03-os-configuration.md +++ b/Docs/AzureStackHCI/02-AzSHCI-Deployment/03-os-configuration.md @@ -7,7 +7,7 @@ To complete following steps it is necessary, that servers are domain joined and ![](03-OS-Configuration/media/MinimumInfrastructure01.png) > [!TIP] -> You can test OS Configuration in [WSLab](https://aka.ms/WSLab) with following VMs in labconfig: +> You can test OS Configuration in [MSLab](https://aka.ms/MSLab) with following VMs in labconfig: > 1..4 | ForEach-Object {$VMNames="S2D"; $LABConfig.VMs += @{ VMName = "$VMNames$_" ; Configuration = 'S2D' ; ParentVHD = 'Win2019Core_G2.vhdx'; HDDNumber = 12; HDDSize= 4TB }} ## Install management tools on management machine @@ -69,7 +69,7 @@ if ($InstallationType -eq "Client"){ ## Perform Windows Update on Servers -Assuming Server Names are S2D1,S2D2,S2D3 and S2D4 (defined in variable $Servers). In WSLab is one [scenario](https://github.com/microsoft/WSLab/tree/master/Scenarios/Windows%20Update), that explains how to invoke Windows Update using WMI/CIM methods. There are different classes in Windows Server 2016 and Windows Server 2019. Therefore in following code is releaseID checked and then depending on that different CIM namespace used. In Deep Dive Scenario you can see, that slightly different argument is used (with AutoSelectOnWebSites=1). [AutoSelectOnWebSites = 1](https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nf-wuapi-iupdatesearcher-search) will also find updates that are flagged to be automatically selected by windows update. +Assuming Server Names are S2D1,S2D2,S2D3 and S2D4 (defined in variable $Servers). In MSLab is one [scenario](https://github.com/microsoft/MSLab/tree/master/Scenarios/Windows%20Update), that explains how to invoke Windows Update using WMI/CIM methods. There are different classes in Windows Server 2016 and Windows Server 2019. Therefore in following code is releaseID checked and then depending on that different CIM namespace used. In Deep Dive Scenario you can see, that slightly different argument is used (with AutoSelectOnWebSites=1). [AutoSelectOnWebSites = 1](https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nf-wuapi-iupdatesearcher-search) will also find updates that are flagged to be automatically selected by windows update. ### Configure @@ -129,7 +129,7 @@ Invoke-Command -ComputerName $servers -ScriptBlock { ## Configure Spectre/Meltdown mitigations -It is recommended to review [settings](https://support.microsoft.com/en-us/help/4072698/windows-server-speculative-execution-side-channel-vulnerabilities) that will prevent exploiting Speculative Execution Side Channel vulnerabilities. Settings configuration can be validated using [Speculation Control Module](https://aka.ms/SpeculationControlPS) that is also described in [dedicated WSLab Scenario](https://github.com/microsoft/WSLab/tree/master/Scenarios/Exploring%20SpeculationControlSettings) +It is recommended to review [settings](https://support.microsoft.com/en-us/help/4072698/windows-server-speculative-execution-side-channel-vulnerabilities) that will prevent exploiting Speculative Execution Side Channel vulnerabilities. Settings configuration can be validated using [Speculation Control Module](https://aka.ms/SpeculationControlPS) that is also described in [dedicated MSLab Scenario](https://github.com/microsoft/MSLab/tree/master/Scenarios/Exploring%20SpeculationControlSettings) Following guidance is applicable to Intel processors. @@ -241,7 +241,7 @@ $result | Sort-Object PSComputerName | Format-Table -GroupBy PSComputerName ## Install Agents -This part will just demonstrate how to push and install Local Admin Password Solution (LAPS). Other agents can be installed similar way using PowerShell. Full WSLab scenario is located [here](https://github.com/microsoft/WSLab/tree/master/Scenarios/LAPS). +This part will just demonstrate how to push and install Local Admin Password Solution (LAPS). Other agents can be installed similar way using PowerShell. Full MSLab scenario is located [here](https://github.com/microsoft/MSLab/tree/master/Scenarios/LAPS). ```powershell $Servers="AzSHCI1","AzSHCI2","AzSHCI3","AzSHCI4" diff --git a/Docs/AzureStackHCI/02-AzSHCI-Deployment/04-network-configuration.md b/Docs/AzureStackHCI/02-AzSHCI-Deployment/04-network-configuration.md index 189c56bb..c7278417 100644 --- a/Docs/AzureStackHCI/02-AzSHCI-Deployment/04-network-configuration.md +++ b/Docs/AzureStackHCI/02-AzSHCI-Deployment/04-network-configuration.md @@ -6,7 +6,7 @@ To complete following steps it is necessary, that servers are [domain joined](\0 It is also necessary to configure physical switches correctly. In general there should be multiple VLANs configured on ports (for Management,Storage and Virtual Machines) with one access VLAN (management). It is also mandatory to configure PfC/ETS when RoCE RDMA is used (DCB Priority Flow Control with priorities 0,3 and 7 with ETS enabled). See [network architecture part](/AzureStackHCI/01-AzSHCI-Planning/04-network-architecture.md). Great switch configuration examples were published by PFE Jan Mortensen at [s2d.dk](http://www.s2d.dk). -There are multiple ways to deploy networking in Azure Stack HCI clusters. Following guidance is for converged setup with one or two SMB subnets. Additional scenarios are covered in WSLab in [S2D and Network Deep Dive scenario](https://github.com/microsoft/WSLab/tree/master/Scenarios/S2D%20and%20Networks%20deep%20dive) and [S2D and Direct Connectivity Scenario](https://github.com/microsoft/WSLab/tree/master/Scenarios/S2D%20and%20Direct%20Connectivity) +There are multiple ways to deploy networking in Azure Stack HCI clusters. Following guidance is for converged setup with one or two SMB subnets. Additional scenarios are covered in MSLab in [S2D and Network Deep Dive scenario](https://github.com/microsoft/MSLab/tree/master/Scenarios/S2D%20and%20Networks%20deep%20dive) and [S2D and Direct Connectivity Scenario](https://github.com/microsoft/MSLab/tree/master/Scenarios/S2D%20and%20Direct%20Connectivity) ## Disable unused adapters @@ -61,7 +61,7 @@ Invoke-Command -ComputerName $Servers -ScriptBlock { ### Validate -Note: following example is inside VMs (WSLab), therefore IOV does not work. +Note: following example is inside VMs (MSLab), therefore IOV does not work. ```powershell $Servers="AzSHCI1","AzSHCI2","AzSHCI3","AzSHCI4" diff --git a/Docs/AzureStackHCI/02-AzSHCI-Deployment/06-creating-volumes.md b/Docs/AzureStackHCI/02-AzSHCI-Deployment/06-creating-volumes.md index 066b2ad9..ed4b3513 100644 --- a/Docs/AzureStackHCI/02-AzSHCI-Deployment/06-creating-volumes.md +++ b/Docs/AzureStackHCI/02-AzSHCI-Deployment/06-creating-volumes.md @@ -2,13 +2,13 @@ ## Some theory -When creating volumes, there are several factors to consider. One is, that due to overhead from [CSV redirection](https://github.com/microsoft/WSLab/tree/master/Scenarios/TestingCSVRedirection) (CSV is FileSystem redirected if REFS used and even if NTFS is used, Storage Spaces are File redirected). Therefore you want to have at least the same number of volumes as you have nodes (or multiple) to effectively distribute IOPS. Another factor is size of volume itself. While it is supported to create 64TB volume, it might be challenging to restore entire volume in reasonable time if something goes wrong. +When creating volumes, there are several factors to consider. One is, that due to overhead from [CSV redirection](https://github.com/microsoft/MSLab/tree/master/Scenarios/TestingCSVRedirection) (CSV is FileSystem redirected if REFS used and even if NTFS is used, Storage Spaces are File redirected). Therefore you want to have at least the same number of volumes as you have nodes (or multiple) to effectively distribute IOPS. Another factor is size of volume itself. While it is supported to create 64TB volume, it might be challenging to restore entire volume in reasonable time if something goes wrong. -Another aspect is if using [tiers](https://github.com/microsoft/WSLab/tree/master/Scenarios/S2D%20and%20Tiers%20deep%20dive) (templates) or not. Tiers are mandatory for Multi-Resilient volumes (Mirror-Accelerated Parity) - anytime you want to create a volume that consist of more than 1 kind (different tiers). If using system, where are both SSDs and HDDs for capacity, it is wise to either use tiers, or specify mediatype for created volume. For mor information about volumes see [Volume Deep Dive](https://github.com/Microsoft/WSLab/tree/master/Scenarios/S2D%20and%20Volumes%20deep%20dive) +Another aspect is if using [tiers](https://github.com/microsoft/MSLab/tree/master/Scenarios/S2D%20and%20Tiers%20deep%20dive) (templates) or not. Tiers are mandatory for Multi-Resilient volumes (Mirror-Accelerated Parity) - anytime you want to create a volume that consist of more than 1 kind (different tiers). If using system, where are both SSDs and HDDs for capacity, it is wise to either use tiers, or specify mediatype for created volume. For mor information about volumes see [Volume Deep Dive](https://github.com/Microsoft/MSLab/tree/master/Scenarios/S2D%20and%20Volumes%20deep%20dive) ## Create volumes -Following example is based on [AzSHCI Deployment Scenario](https://github.com/microsoft/WSLab/blob/master/Scenarios/AzSHCI%20Deployment/Scenario.ps1) +Following example is based on [AzSHCI Deployment Scenario](https://github.com/microsoft/MSLab/blob/master/Scenarios/AzSHCI%20Deployment/Scenario.ps1) ### Calculate reserve diff --git a/Docs/AzureStackHCI/02-AzSHCI-Deployment/07-deploying-vms.md b/Docs/AzureStackHCI/02-AzSHCI-Deployment/07-deploying-vms.md index 7c46b989..bc978dcf 100644 --- a/Docs/AzureStackHCI/02-AzSHCI-Deployment/07-deploying-vms.md +++ b/Docs/AzureStackHCI/02-AzSHCI-Deployment/07-deploying-vms.md @@ -32,8 +32,8 @@ Since above example just creates blank VM, let's experiment with creating Window To create Windows vhd/vhdx can be tool convert-windowsimage used. https://github.com/MicrosoftDocs/Virtualization-Documentation/blob/master/hyperv-tools/Convert-WindowsImage/Convert-WindowsImage.ps1 -To simplify conversion process you will find **CreateParentDisk.ps1** tool in wslab. It is available [WSLab GitHub](https://github.com/microsoft/WSLab/blob/master/Tools/CreateParentDisk.ps1) and the only thing needed is to right-click and select "run with PowerShell". The script will download convert-windowsimage and will ask for ISO and MSU (Cumulative Update and Servicing Stack Update). To Download CU and SSU you can use another tool - [DownloadLatestCUs.ps1](https://github.com/microsoft/WSLab/blob/master/Tools/DownloadLatestCUs.ps1). +To simplify conversion process you will find **CreateParentDisk.ps1** tool in mslab. It is available [MSLab GitHub](https://github.com/microsoft/MSLab/blob/master/Tools/CreateParentDisk.ps1) and the only thing needed is to right-click and select "run with PowerShell". The script will download convert-windowsimage and will ask for ISO and MSU (Cumulative Update and Servicing Stack Update). To Download CU and SSU you can use another tool - [DownloadLatestCUs.ps1](https://github.com/microsoft/MSLab/blob/master/Tools/DownloadLatestCUs.ps1). ![](07-Deploying-VMs/media/Explorer01.png) -Once parent VHD is created, we can proceed with VM creation. The end-to-end process on how to create domain-joined VMs with various parameters is documented [here](https://github.com/microsoft/WSLab/tree/master/Scenarios/S2D%20and%20Bulk%20VM%20creation) \ No newline at end of file +Once parent VHD is created, we can proceed with VM creation. The end-to-end process on how to create domain-joined VMs with various parameters is documented [here](https://github.com/microsoft/MSLab/tree/master/Scenarios/S2D%20and%20Bulk%20VM%20creation) \ No newline at end of file diff --git a/Docs/WSLab-Advanced/creating-parent-disk.md b/Docs/MSLab-Advanced/creating-parent-disk.md similarity index 100% rename from Docs/WSLab-Advanced/creating-parent-disk.md rename to Docs/MSLab-Advanced/creating-parent-disk.md diff --git a/Docs/WSLab-Advanced/domain-join.md b/Docs/MSLab-Advanced/domain-join.md similarity index 100% rename from Docs/WSLab-Advanced/domain-join.md rename to Docs/MSLab-Advanced/domain-join.md diff --git a/Docs/WSLab-Advanced/internet-connectivity.md b/Docs/MSLab-Advanced/internet-connectivity.md similarity index 100% rename from Docs/WSLab-Advanced/internet-connectivity.md rename to Docs/MSLab-Advanced/internet-connectivity.md diff --git a/Docs/WSLab-Advanced/modifying-labconfig.md b/Docs/MSLab-Advanced/modifying-labconfig.md similarity index 100% rename from Docs/WSLab-Advanced/modifying-labconfig.md rename to Docs/MSLab-Advanced/modifying-labconfig.md diff --git a/Docs/WSLab-Advanced/scvmm.md b/Docs/MSLab-Advanced/scvmm.md similarity index 100% rename from Docs/WSLab-Advanced/scvmm.md rename to Docs/MSLab-Advanced/scvmm.md diff --git a/Docs/WSLab-Deployment/media/Explorer01.png b/Docs/MSLab-Deployment/media/Explorer01.png similarity index 100% rename from Docs/WSLab-Deployment/media/Explorer01.png rename to Docs/MSLab-Deployment/media/Explorer01.png diff --git a/Docs/WSLab-Deployment/media/Explorer02.png b/Docs/MSLab-Deployment/media/Explorer02.png similarity index 100% rename from Docs/WSLab-Deployment/media/Explorer02.png rename to Docs/MSLab-Deployment/media/Explorer02.png diff --git a/Docs/WSLab-Deployment/media/Explorer03.png b/Docs/MSLab-Deployment/media/Explorer03.png similarity index 100% rename from Docs/WSLab-Deployment/media/Explorer03.png rename to Docs/MSLab-Deployment/media/Explorer03.png diff --git a/Docs/WSLab-Deployment/media/Hyper-V_Manager01.png b/Docs/MSLab-Deployment/media/Hyper-V_Manager01.png similarity index 100% rename from Docs/WSLab-Deployment/media/Hyper-V_Manager01.png rename to Docs/MSLab-Deployment/media/Hyper-V_Manager01.png diff --git a/Docs/WSLab-Deployment/media/Hyper-V_Manager02.png b/Docs/MSLab-Deployment/media/Hyper-V_Manager02.png similarity index 100% rename from Docs/WSLab-Deployment/media/Hyper-V_Manager02.png rename to Docs/MSLab-Deployment/media/Hyper-V_Manager02.png diff --git a/Docs/WSLab-Deployment/media/PowerShell01.png b/Docs/MSLab-Deployment/media/PowerShell01.png similarity index 100% rename from Docs/WSLab-Deployment/media/PowerShell01.png rename to Docs/MSLab-Deployment/media/PowerShell01.png diff --git a/Docs/WSLab-Deployment/media/PowerShell02.png b/Docs/MSLab-Deployment/media/PowerShell02.png similarity index 100% rename from Docs/WSLab-Deployment/media/PowerShell02.png rename to Docs/MSLab-Deployment/media/PowerShell02.png diff --git a/Docs/WSLab-Deployment/media/PowerShell03.png b/Docs/MSLab-Deployment/media/PowerShell03.png similarity index 100% rename from Docs/WSLab-Deployment/media/PowerShell03.png rename to Docs/MSLab-Deployment/media/PowerShell03.png diff --git a/Docs/WSLab-Deployment/media/PowerShell04.png b/Docs/MSLab-Deployment/media/PowerShell04.png similarity index 100% rename from Docs/WSLab-Deployment/media/PowerShell04.png rename to Docs/MSLab-Deployment/media/PowerShell04.png diff --git a/Docs/WSLab-Deployment/media/PowerShell05.png b/Docs/MSLab-Deployment/media/PowerShell05.png similarity index 100% rename from Docs/WSLab-Deployment/media/PowerShell05.png rename to Docs/MSLab-Deployment/media/PowerShell05.png diff --git a/Docs/WSLab-Hydration/media/DownloadLatestCUs.gif b/Docs/MSLab-Hydration/media/DownloadLatestCUs.gif similarity index 100% rename from Docs/WSLab-Hydration/media/DownloadLatestCUs.gif rename to Docs/MSLab-Hydration/media/DownloadLatestCUs.gif diff --git a/Docs/WSLab-Hydration/media/Explorer01.png b/Docs/MSLab-Hydration/media/Explorer01.png similarity index 100% rename from Docs/WSLab-Hydration/media/Explorer01.png rename to Docs/MSLab-Hydration/media/Explorer01.png diff --git a/Docs/WSLab-Hydration/media/Explorer02.png b/Docs/MSLab-Hydration/media/Explorer02.png similarity index 100% rename from Docs/WSLab-Hydration/media/Explorer02.png rename to Docs/MSLab-Hydration/media/Explorer02.png diff --git a/Docs/WSLab-Hydration/media/Explorer03.png b/Docs/MSLab-Hydration/media/Explorer03.png similarity index 100% rename from Docs/WSLab-Hydration/media/Explorer03.png rename to Docs/MSLab-Hydration/media/Explorer03.png diff --git a/Docs/WSLab-Hydration/media/Explorer04.png b/Docs/MSLab-Hydration/media/Explorer04.png similarity index 100% rename from Docs/WSLab-Hydration/media/Explorer04.png rename to Docs/MSLab-Hydration/media/Explorer04.png diff --git a/Docs/WSLab-Hydration/media/PowerShell01.png b/Docs/MSLab-Hydration/media/PowerShell01.png similarity index 100% rename from Docs/WSLab-Hydration/media/PowerShell01.png rename to Docs/MSLab-Hydration/media/PowerShell01.png diff --git a/Docs/wslab-deployment.md b/Docs/mslab-deployment.md similarity index 72% rename from Docs/wslab-deployment.md rename to Docs/mslab-deployment.md index a561577d..c8cf2c71 100644 --- a/Docs/wslab-deployment.md +++ b/Docs/mslab-deployment.md @@ -1,44 +1,44 @@ -# WSLab Deployment Process +# MSLab Deployment Process ## Prerequisites -This guide assumes you already [Hydrated](../Docs/wslab-hydration.md) VHDs and Domain Controller using first 2 scripts and the result is folder with following files: +This guide assumes you already [Hydrated](../Docs/mslab-hydration.md) VHDs and Domain Controller using first 2 scripts and the result is folder with following files: -![](WSLab-Deployment/media/Explorer01.png) +![](MSLab-Deployment/media/Explorer01.png) -![](WSLab-Deployment/media/PowerShell01.png) +![](MSLab-Deployment/media/PowerShell01.png) As you can see, in LAB folder is DC, that is ready to be imported. Entire VM configuration is backed up in Virtual Machines.zip. You can also see, that in ParentDisks folder are Windows Server 2019 VHDs, tools.vhdx and tools for creating additional parent disks (such as Windows 10, Windows Server 2016, or Windows Insider) and downloading Cumulative Update. ## Lab Deployment -![](WSLab-Deployment/media/Explorer02.png) +![](MSLab-Deployment/media/Explorer02.png) The process is simple as right-click and selecting Run with PowerShell. The script will read configuration located in LabConfig.ps1 and will deploy as specified. If default LabConfig is used, it will deploy Domain Controller and four servers for Azure Stack HCI simulation. During Deployment Process you might see red errors, but these are safe to ignore as it's result of testing Active Directory availability inside Domain Controller. -![](WSLab-Deployment/media/PowerShell02.png) +![](MSLab-Deployment/media/PowerShell02.png) > [!NOTE] > If this part loops forever, you probably changed password. The mechanism to detect wrong password specified in LabConfig is not implemented. The script will finish in ~5 minutes. -![](WSLab-Deployment/media/PowerShell03.png) +![](MSLab-Deployment/media/PowerShell03.png) -![](WSLab-Deployment/media/Hyper-V_Manager01.png) +![](MSLab-Deployment/media/Hyper-V_Manager01.png) All virtual machines are created under LAB folder -![](WSLab-Deployment/media/PowerShell04.png) +![](MSLab-Deployment/media/PowerShell04.png) ## Lab Cleanup Once you want to discard lab, you can simply run cleanup by running Cleanup.ps1. Script will prompt you for confirmation. Once confirmed, all VMs will be removed and Domain Controller reverted. -![](WSLab-Deployment/media/Explorer03.png) +![](MSLab-Deployment/media/Explorer03.png) -![](WSLab-Deployment/media/PowerShell05.png) +![](MSLab-Deployment/media/PowerShell05.png) -![](WSLab-Deployment/media/Hyper-V_Manager02.png) +![](MSLab-Deployment/media/Hyper-V_Manager02.png) diff --git a/Docs/wslab-hydration.md b/Docs/mslab-hydration.md similarity index 86% rename from Docs/wslab-hydration.md rename to Docs/mslab-hydration.md index bf9ee731..1d382a2a 100644 --- a/Docs/wslab-hydration.md +++ b/Docs/mslab-hydration.md @@ -1,30 +1,30 @@ -# WSLab Hydration +# MSLab Hydration Process of hydration will prepare all necessary Virtual Hard Disks and will create Domain Controller, so deployment process will take only few minutes. ## Required Files -* [WSLab Scripts](https://aka.ms/wslabzip) +* [MSLab Scripts](https://aka.ms/mslabzip) * [Windows Server 2019](https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2019) * Latest Cumulative Update + Servicing Stack Update Tip: You can download CU and UR using DownloadLatestCU script that will be created after running 1_Prereqs.ps1 -![](WSLab-Hydration/media/DownloadLatestCUs.gif) +![](MSLab-Hydration/media/DownloadLatestCUs.gif) ## 1_Prereq.ps1 -After you will download WSLab Scripts, unzip it into some folder and then just run scripts with PowerShell by Right-Click and selecting Run With PowerShell. +After you will download MSLab Scripts, unzip it into some folder and then just run scripts with PowerShell by Right-Click and selecting Run With PowerShell. -![](WSLab-Hydration/media/Explorer01.png) +![](MSLab-Hydration/media/Explorer01.png) The script will run and will ask for elevation. It will download necessary files (DSC Modules), some example files that will be placed into ToolsDisk folder and some scripts that will be added to ParentDisks folder. ToolsDisk folder can be populated by any tools you might want to have in Tools disk, that can be attached to any VM during deployment phase. -![](WSLab-Hydration/media/Explorer02.png) +![](MSLab-Hydration/media/Explorer02.png) ## 2_CreateParentDisks.ps1 -![](WSLab-Hydration/media/Explorer03.png) +![](MSLab-Hydration/media/Explorer03.png) Running 2_CreateParentDisk.ps1 will ask for Server ISO image. You can use Evaluation media, or if you have access to VL or Visual Studio Subscription, you can use those. This phase is most time consuming (takes 1-2 hours), as it creates VHDs and even Domain Controller with all required roles configured (Using Desired State Configuration). @@ -32,9 +32,9 @@ It highly recommended to provide both Cumulative Update and Servicing Stack Upda Once script will finish, it will clean up freshly created domain controller to keep it only in folder (to be ready to be imported during deployment phase). Script will prompt you if unnecessary files should be removed. If you will confirm, it will remove first 2 scripts as it's no longer needed. -![](WSLab-Hydration/media/PowerShell01.png) +![](MSLab-Hydration/media/PowerShell01.png) -![](WSLab-Hydration/media/Explorer04.png) +![](MSLab-Hydration/media/Explorer04.png) # Tips and Tricks diff --git a/Docs/wslab-telemetry.md b/Docs/mslab-telemetry.md similarity index 90% rename from Docs/wslab-telemetry.md rename to Docs/mslab-telemetry.md index e4a51c92..c165ea63 100644 --- a/Docs/wslab-telemetry.md +++ b/Docs/mslab-telemetry.md @@ -1,16 +1,16 @@ -# WSLab Telemetry +# MSLab Telemetry ## Introduction -WSLab introduced opt-in telemetry collection to better understand impact of WSLab scripts as currently we cannot determine number of VMs deployed or where is WSLab being used. Data sent from scripts are hosted in Azure Application Insights service and it is absolutely transparent what information is being collected, since all code is visible in PowerShell Scripts on Github repository. +MSLab introduced opt-in telemetry collection to better understand impact of MSLab scripts as currently we cannot determine number of VMs deployed or where is MSLab being used. Data sent from scripts are hosted in Azure Application Insights service and it is absolutely transparent what information is being collected, since all code is visible in PowerShell Scripts on Github repository. -Currently there is no public facing interface to read collected information, however in the future plan is to create a public Power BI dashboard, where we will present Leader Boards and usage statistics - such as how many VMs were deployed and we will be able to create statistics that will show in what countries is WSLab running etc. +Currently there is no public facing interface to read collected information, however in the future plan is to create a public Power BI dashboard, where we will present Leader Boards and usage statistics - such as how many VMs were deployed and we will be able to create statistics that will show in what countries is MSLab running etc. -We are not collecting any PII, whole purpose of this telemetry is to get overall usage statistics of WSLab. +We are not collecting any PII, whole purpose of this telemetry is to get overall usage statistics of MSLab. ## Verbosity level -Currently there are 3 different verbosity levels for telemetry: **None**, **Basic** and **Full**. If nothing is configured in LabConfig, you will be asked to provide your preferred option. If you would like to skip this interactive prompt completely, configure desired telemetry level in your LabConfig file on per lab basis. You can also configure telemetry behaviour globally using environment variable `WSLAB_TELEMETRY_LEVEL` set to one of three options. If you configure both, LabConfig and Environment variable, LabConfig value take precedence. +Currently there are 3 different verbosity levels for telemetry: **None**, **Basic** and **Full**. If nothing is configured in LabConfig, you will be asked to provide your preferred option. If you would like to skip this interactive prompt completely, configure desired telemetry level in your LabConfig file on per lab basis. You can also configure telemetry behaviour globally using environment variable `MSLAB_TELEMETRY_LEVEL` set to one of three options. If you configure both, LabConfig and Environment variable, LabConfig value take precedence. ### None @@ -18,7 +18,7 @@ If you don't want to send anything, or if you are in an offline environment. ### Basic -Sends information about deployed lab, that is vital for us to understand impact of WSLab scripts. +Sends information about deployed lab, that is vital for us to understand impact of MSLab scripts. ### Full @@ -36,7 +36,7 @@ Basic telemetry level $LabConfig = @{ DomainAdminName = 'LabAdmin' AdminPassword = 'LS1setup!' - Prefix = 'WSLab-' + Prefix = 'MSLab-' DCEdition = '4' Internet = $true TelemetryLevel = 'Basic' @@ -52,7 +52,7 @@ Full telemetry including NickName that will be included in LeaderBoards once we $LabConfig = @{ DomainAdminName = 'LabAdmin' AdminPassword = 'LS1setup!' - Prefix = 'WSLab-' + Prefix = 'MSLab-' DCEdition = '4' Internet = $true TelemetryLevel = 'Full' @@ -65,7 +65,7 @@ $LabConfig = @{ ## Telemetry Events -If WSLab telemetry is enabled, multiple events are sent. All events are listed in the table below. In general when script is started `.Start` type of event is sent and after script sucessfully finished respective `.End` event is sent. Two separate events are used to measure success rate of the scripts. +If MSLab telemetry is enabled, multiple events are sent. All events are listed in the table below. In general when script is started `.Start` type of event is sent and after script sucessfully finished respective `.End` event is sent. Two separate events are used to measure success rate of the scripts. | Event | Script | Description | |---------------------------|---------------------------|-------------| @@ -85,11 +85,11 @@ These properties are sent with every telemetry event to the Application Insights | | Basic | Full |Description| Sample Value | Application Insights property | |--------------------------|:-----:|:----:|-----------| --- | ---- | -| Application Version | x | x | Version of WSLab Scripts | v20.07.1 | `ai.application.ver` | +| Application Version | x | x | Version of MSLab Scripts | v20.07.1 | `ai.application.ver` | | Script name | x | x | Name of the executed script | Deploy.ps1 | `i.cloud.role` | | Telemetry Level | x | x | Which level of telemetry has been set | Full | `telemetry.level` | | Product type | x | x | Workstation or Server| Workstation | `os.type` | -| Session ID | x | x | One-way hash (`SHA1`) of `MachineGUID`, `PSScriptRoot` and `ComputerName`. Purpose of this ID is only to sync execution of separate WSLab scripts to the same lab instance. | 482e33a99e6fb41e5f739d9294ac1b339c7c3c60 | `ai.session.id` | +| Session ID | x | x | One-way hash (`SHA1`) of `MachineGUID`, `PSScriptRoot` and `ComputerName`. Purpose of this ID is only to sync execution of separate MSLab scripts to the same lab instance. | 482e33a99e6fb41e5f739d9294ac1b339c7c3c60 | `ai.session.id` | | User ID | x | x | One-way hash (`SHA1`) of `MachineGUID`. This provide option to differentiate multiple lab instances between multiple machines. | 0f3e4472845a50445883666b6f9efe55982bc1d0 | `ai.user.id` | | Device ID | x | x | Same value as User ID. | 0f3e4472845a50445883666b6f9efe55982bc1d0 | `ai.device.id` | | Device Type | x | x | PC System Type | Laptop | `ai.device.type` | @@ -101,13 +101,13 @@ These properties are sent with every telemetry event to the Application Insights | Operating System Name | | x | OS SKU and build | Windows 10 Enterprise (10.0.19041.388 | `ai.device.os` | | Operating System Version | | x | OS Build with patch level | 10.0.19041.388 | `ai.device.osVersion` | | Amount of RAM | | x | Total amount of RAM in MB of host OS. | 65311 | `memory.total` | -| CPU Model | | x | What CPU model is used to execute WSLab. | Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz | `cpu.sockets.count` | +| CPU Model | | x | What CPU model is used to execute MSLab. | Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz | `cpu.sockets.count` | | Number of Sockets | | x | How many sockets system have. | 1 | `cpu.sockets.count` | | Number of Cores | | x | Total number of CPU cores available. | 12 | `cpu.logical.count` | -| Volume Capacity | | x | Capacity of a volume where WSLab was run (in GB). | 954 | `volume.size` | -| Volume File system | | x | What file system is on a volume where WSLab was executed. | ReFS | `volume.size` | -| Disk Media Type | | x | Type of the disk where WSLab was run. | SSD | `disk.type` | -| Disk Bus type | | x | Bus connection of the disk where WSLab was run. | NVMe | `disk.busType` | +| Volume Capacity | | x | Capacity of a volume where MSLab was run (in GB). | 954 | `volume.size` | +| Volume File system | | x | What file system is on a volume where MSLab was executed. | ReFS | `volume.size` | +| Disk Media Type | | x | Type of the disk where MSLab was run. | SSD | `disk.type` | +| Disk Bus type | | x | Bus connection of the disk where MSLab was run. | NVMe | `disk.busType` | ### Event-specific information @@ -115,12 +115,12 @@ In addition to general properties in the table above, these events include addit #### CreateParentDisks.Vhd -This event is sent for every newly created VHD file. If any of the VHD files in WSLab folder already exists, it would be skipped. +This event is sent for every newly created VHD file. If any of the VHD files in MSLab folder already exists, it would be skipped. | | Basic | Full | Description | Sample Value | Application Insights property | | --------------------------- |:-----:|:----:| ----------- | ------------ | ----------------------------- | | VHD hydration duration | x | x | How many seconds took to create specific VHD file. | 95,5 | `vhd.duration` | -| VHD name | x | x | Well-known name of the generated VHD file based on the dictionary in WSLab scripts. | Win2019Core_G2.vhdx | `vhd.name` | +| VHD name | x | x | Well-known name of the generated VHD file based on the dictionary in MSLab scripts. | Win2019Core_G2.vhdx | `vhd.name` | | VHD kind | x | x | Type of VHD (Tools disk, Server Core or Full Desktop Experience). | Core | `vhd.kind` | | Guest OS Build number | x | x | Build number of OS in the generated VHD File. | 17763 | `vhd.os.build` | | Guest OS Language | | x | Language code of the OS in the generated VHD file. | en-US | `vhd.os.language` | @@ -138,17 +138,17 @@ This event is sent after Create Parent Disks script finishes and contains summar | DC Edition | x | x | Server Core or Full Desktop Experience as configured in LabConfig | 4 | `dc.edition` | | Build number of DC | x | x | | 17763 | `dc.build` | | OS Language of DC | x | x | | en-US | `dc.language` | -| WSLab scripts renamed | x | x | True if user enabled to rename script after deployment | true | `lab.scriptsRenamed` | +| MSLab scripts renamed | x | x | True if user enabled to rename script after deployment | true | `lab.scriptsRenamed` | | Install SCVMM | x | x | True if SVMM installation was requested in LabConfig | false | `lab.installScvmm` | | Host OS installation Type | x | x | Server Core of Full Desktop Experience | Server Core | `os.installationType` | | Server Core VHD - Exists | x | x | True if VHD was already present, otherwise false. | false | `vhd.core.exists` | -| Server Core VHD - Name | x | x | Well-known name of the generated VHD file based on the dictionary in WSLab scripts. | Win2019Core_G2.vhdx | `vhd.core.name` | +| Server Core VHD - Name | x | x | Well-known name of the generated VHD file based on the dictionary in MSLab scripts. | Win2019Core_G2.vhdx | `vhd.core.name` | | Server Core VHD - Duration | x | x | How many seconds took to create specific VHD file. | 95.5 | `vhd.core.duration` | | Server Desktop Experience VHD - Exists | x | x | True if VHD was already present, otherwise false. | false | `vhd.full.exists` | -| Server Desktop Experience VHD - Name | x | x | Well-known name of the generated VHD file based on the dictionary in WSLab scripts. | Win2019_G2.vhdx | `vhd.full.name` | +| Server Desktop Experience VHD - Name | x | x | Well-known name of the generated VHD file based on the dictionary in MSLab scripts. | Win2019_G2.vhdx | `vhd.full.name` | | Server Desktop Experience VHD - Duration | x | x | How many seconds took to create specific VHD file. | 195.5 | `vhd.full.duration` | | Tools VHD - Exists | x | x | True if VHD was already present, otherwise false. | false | `vhd.tools.exists` | -| Tools VHD - Name | x | x | Well-known name of the generated VHD file based on the dictionary in WSLab scripts. | Tools.vhdx | `vhd.tools.name` | +| Tools VHD - Name | x | x | Well-known name of the generated VHD file based on the dictionary in MSLab scripts. | Tools.vhdx | `vhd.tools.name` | | Tools VHD - Duration | x | x | How many seconds took to create specific VHD file. | 25.5 | `vhd.tools.duration` | diff --git a/Docs/toc.yml b/Docs/toc.yml index 0254c20d..449da1df 100644 --- a/Docs/toc.yml +++ b/Docs/toc.yml @@ -1,6 +1,6 @@ - name: Hydration - href: wslab-hydration.md + href: mslab-hydration.md - name: Deployment - href: wslab-deployment.md + href: mslab-deployment.md - name: Telemetry - href: wslab-telemetry.md + href: mslab-telemetry.md diff --git a/README.md b/README.md index 0f5fc3ad..4a08bb13 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,20 @@ -# WSLab +# MSLab ## tl;dr -To start using WSLab just download the latest version of scrips from [Releases](https://github.com/microsoft/WSLab/releases) section of this repository. +To start using MSLab just download the latest version of scrips from [Releases](https://github.com/microsoft/MSLab/releases) section of this repository. -💡 Shortcut to the latest version is https://aka.ms/wslab/download +💡 Shortcut to the latest version is https://aka.ms/mslab/download

-Download WSLab +Download MSLab

## Introduction -- [WSLab](#wslab) +- [MSLab](#mslab) - [tl;dr](#tldr) - [Introduction](#introduction) - [Requirements](#requirements) @@ -31,9 +31,9 @@ To start using WSLab just download the latest version of scrips from [Releases]( -WSLab is a GitHub project that aims to provide virtual environments in Hyper-V, that can be built in consistent way. It comes at no additional cost, it's free and available under the [MIT License](License). +MSLab is a GitHub project that aims to provide virtual environments in Hyper-V, that can be built in consistent way. It comes at no additional cost, it's free and available under the [MIT License](License). -Unlike other solutions, WSLab focuses on simplicity (all actions can be done without typing complex scripts) and low profile (all disks are differencing, minimum requirements are 8GB RAM and 40GB free space). There is no special hardware requirement. WSLab can run on almost any machine that has SSD and decent amount of memory. +Unlike other solutions, MSLab focuses on simplicity (all actions can be done without typing complex scripts) and low profile (all disks are differencing, minimum requirements are 8GB RAM and 40GB free space). There is no special hardware requirement. MSLab can run on almost any machine that has SSD and decent amount of memory. ![](Docs/media/Hyper-V_Manager01.png) @@ -47,19 +47,19 @@ Unlike other solutions, WSLab focuses on simplicity (all actions can be done wit ## Scripts -The main part of WSLab are the [Scripts](https://aka.ms/wslabzip) that will help you preparing lab files ([Hydration Phase](Docs/wslab-hydration.md)). This phase is the most time consuming (1-2hours), but needs to be done only once. It will create virtual hard disks from of provided ISO and will create Domain Controller. [WSLab Deployment](Docs/wslab-deployment.md) takes only few minutes as it will just import Domain Controller and will add other Virtual Machines as specified in LabConfig.ps1 +The main part of MSLab are the [Scripts](https://aka.ms/mslabzip) that will help you preparing lab files ([Hydration Phase](Docs/mslab-hydration.md)). This phase is the most time consuming (1-2hours), but needs to be done only once. It will create virtual hard disks from of provided ISO and will create Domain Controller. [MSLab Deployment](Docs/mslab-deployment.md) takes only few minutes as it will just import Domain Controller and will add other Virtual Machines as specified in LabConfig.ps1 ![](Docs/media/Explorer01.png) ## Data Collection -The software may collect information about you and your use of the software and send it to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may turn off the telemetry as [described in the repository](http://aka.ms/wslab/telemetry). There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft's privacy statement. Our privacy statement is located at https://go.microsoft.com/fwlink/?LinkID=824704. You can learn more about data collection and use in the help documentation and our privacy statement. Your use of the software operates as your consent to these practices. +The software may collect information about you and your use of the software and send it to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may turn off the telemetry as [described in the repository](http://aka.ms/mslab/telemetry). There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft's privacy statement. Our privacy statement is located at https://go.microsoft.com/fwlink/?LinkID=824704. You can learn more about data collection and use in the help documentation and our privacy statement. Your use of the software operates as your consent to these practices. ### How to get the Scripts -In the past, this ZIP file was stored in the git repository, and recently we switched to using a native Releases feature of Github, where all releases are available at https://github.com/microsoft/WSLab/releases. Also, we have a static direct link to the latest WSLab release on http://aka.ms/wslab/download which is updated automatically when we create a new version. +In the past, this ZIP file was stored in the git repository, and recently we switched to using a native Releases feature of Github, where all releases are available at https://github.com/microsoft/MSLab/releases. Also, we have a static direct link to the latest MSLab release on http://aka.ms/mslab/download which is updated automatically when we create a new version. -This built ZIP file is more optimized, e. g. the file 0_Shared.ps1 is in-lined to the rest of the scripts to keep the number of WSLab files as low as possible. Compared to the git repository where I tend to split those scripts to multiple independent files for a better supportability on our side. +This built ZIP file is more optimized, e. g. the file 0_Shared.ps1 is in-lined to the rest of the scripts to keep the number of MSLab files as low as possible. Compared to the git repository where I tend to split those scripts to multiple independent files for a better supportability on our side. ## Scenarios @@ -69,32 +69,32 @@ Over the time, we have developed multiple [scenarios](Scenarios/) simulating Azu ### Prototyping -WSLab is ideal for prototyping. It will quickly spin Windows Server/Client environments that are connected to Internet and ready to be played with. If something goes wrong, there is nothing easier than just run Cleanup and then Deploy again +MSLab is ideal for prototyping. It will quickly spin Windows Server/Client environments that are connected to Internet and ready to be played with. If something goes wrong, there is nothing easier than just run Cleanup and then Deploy again ### Hands on Labs -WSLab virtual machines are defined in LabConfig.ps1 as simple hash table. This way you can share your configurations and create consistent, complex environments. Labs are easy to distribute. Once you are done with Hydration Phase, you can just copy result folder to multiple computers and deliver entire classes. +MSLab virtual machines are defined in LabConfig.ps1 as simple hash table. This way you can share your configurations and create consistent, complex environments. Labs are easy to distribute. Once you are done with Hydration Phase, you can just copy result folder to multiple computers and deliver entire classes. ### Issue reproduction -Many times happened, that there was an issue that was hard to reproduce. And even if you could reproduce it, another person did not have the same environment, so even with the same steps, the issue might not occur again. WSLab changes this as all WSLab environments with the same LabConfig are the same. So only thing you need to share to other person to reproduce issue are steps and LabConfig.ps1. +Many times happened, that there was an issue that was hard to reproduce. And even if you could reproduce it, another person did not have the same environment, so even with the same steps, the issue might not occur again. MSLab changes this as all MSLab environments with the same LabConfig are the same. So only thing you need to share to other person to reproduce issue are steps and LabConfig.ps1. ### Sessions For more session slides navigate to [Slides](https://1drv.ms/u/s!AjTsLJdE37DwtrsnIehxKx7N7XgoBg?e=r1sszn) OneDrive -[![WSLab in MVPDays](/Docs/media/Deploying_AzSHCI_with_MDT.png)](https://youtu.be/Vipbhkv9wyM) +[![MSLab in MVPDays](/Docs/media/Deploying_AzSHCI_with_MDT.png)](https://youtu.be/Vipbhkv9wyM) -[![WSLab with Carsten](/Docs/media/Create_great_demo_environments.png)](https://youtu.be/f3EH2NOM2Eg) +[![MSLab with Carsten](/Docs/media/Create_great_demo_environments.png)](https://youtu.be/f3EH2NOM2Eg) -[![WSLab in MVPDays](/Docs/media/Monitoring_Azure_Stack_HCI_with_Grafana_thumb.png)](https://youtu.be/0K53z4LMT4U) +[![MSLab in MVPDays](/Docs/media/Monitoring_Azure_Stack_HCI_with_Grafana_thumb.png)](https://youtu.be/0K53z4LMT4U) -[![WSLab in MVPDays](/Docs/media/S2DSimulations_presentation_thumb.png)](https://youtu.be/u7d6Go8weBc) +[![MSLab in MVPDays](/Docs/media/S2DSimulations_presentation_thumb.png)](https://youtu.be/u7d6Go8weBc) -[![WSLab in CDCGermany](/Docs/media/WSLab_Datacenter_Simulation_presentation_thumb.png)](https://youtu.be/5IX9OLEk50Q) +[![MSLab in CDCGermany](/Docs/media/MSLab_Datacenter_Simulation_presentation_thumb.png)](https://youtu.be/5IX9OLEk50Q) ### Run in PowerShell Core 7 -WSLab scripts work also in PowerShell 7, if you want to test it just install latest version of PowerShell 7. +MSLab scripts work also in PowerShell 7, if you want to test it just install latest version of PowerShell 7. If you also would like to have context menu integration like this: ![](Docs/media/Explorer02pwsh.png) diff --git a/Tools/CreateParentDisk.ps1 b/Tools/CreateParentDisk.ps1 index a1135878..e3880ef5 100644 --- a/Tools/CreateParentDisk.ps1 +++ b/Tools/CreateParentDisk.ps1 @@ -44,7 +44,7 @@ If (-not $isAdmin) { if (!(Test-Path "$PSScriptRoot\Convert-WindowsImage.ps1")){ WriteInfo "`t Downloading Convert-WindowsImage" try { - Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/microsoft/WSLab/master/Tools/Convert-WindowsImage.ps1" -OutFile "$PSScriptRoot\Convert-WindowsImage.ps1" + Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/microsoft/MSLab/master/Tools/Convert-WindowsImage.ps1" -OutFile "$PSScriptRoot\Convert-WindowsImage.ps1" } catch { WriteErrorAndExit "`t Failed to download Convert-WindowsImage.ps1!" }