ΠΠ΅Π΄Π°Π²Π½ΠΎ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΠΏΠΎΠΊΠ° Π·Π²Π΅ΡΠ΅ΠΌ Π² ΠΌΠΈΡΠ΅ DevOps, ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°ΠΌΠΈ Azure DevOps. Π‘ΡΠ°Π·Ρ ΠΆΠ΅ ΠΎΡΡΡΠΈΠ» ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ
ΡΠΎ Π²Π½ΡΡΠ½ΡΡ
ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ ΡΡΠ°ΡΠ΅ΠΉ Π½Π° ΡΠ΅ΠΌΡ, Π½Π΅ Π·Π½Π°Ρ Ρ ΡΠ΅ΠΌ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΠΎ, Π½ΠΎ Microsoft ΡΠ²Π½ΠΎ Π΅ΡΡΡ Π½Π°Π΄ ΡΠ΅ΠΌ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°. Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΏΠΎΡΡΡΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π½ΡΡΡΠΈ ΠΎΠ±Π»Π°ΠΊΠ° Azure.
ΠΡΠ°ΠΊ, Π·Π°Π΄Π°ΡΠ°:
ΠΠΌΠ΅Π΅ΡΡΡ ΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΠΈΠ»Π΄ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ Azure DevOps, ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈΠ· ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° WIX. ΠΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ, Π½Π°ΠΏΠΈΡΡ ΠΈ ΠΎΠ± ΡΡΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ΅. ΠΠΎ ΡΠ°ΠΊΡΡ ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΎΡΠΎΠ± ΡΠ±ΠΎΡΠΊΠΈ Π²ΠΈΠ½Π΄ΠΎΠ²ΡΡ
ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊΠΎΠ², Π·Π°ΠΌΠ΅Π½ΡΡΡΠΈΠΉ ΡΠΎΠ±ΠΎΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ InstallShield. ΠΡΠ°ΠΊ, Π½Π°Ρ ΡΠΎΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π°ΡΡΠ΅ΡΠ°ΠΊΡ, Π½Π΅ΠΊΠΈΠΉ setup.exe, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π²ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΡ Windows. ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π² ΠΏΠΎΡ
ΠΎΠΆΡΡ Π½Π° ΠΏΡΠΎΠ΄ Π²ΠΈΡΡΡΠ°Π»ΠΊΡ, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡ, ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΡ
ΠΈ Π·Π°Π±ΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΡΡΠΎΠ±Ρ ΡΡΠΈΡΠ°ΡΡ Π²Π΅ΡΠΊΡ Ρ
ΠΎΡΠΎΡΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠ»ΠΎΡ
ΠΎΠΉ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΠ΅ΡΠ΄ΠΆΠΈΡΡ. ΠΡΠ΅ ΠΊΠ°ΠΊ Π² GitLab, ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· ΠΆ….
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ΅Π΄Ρ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π³Π΄Π΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π°ΡΠΈ ΡΠ΅ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Azure DevTest Labs, Π½Π΅ΠΊΡΡ ΡΡΡΠ½ΠΎΡΡΡ Π² ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ°Ρ Azure, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ·Π΄Π°Π½Π°, ΡΡΠΎΠ±Ρ ΠΊΡΡΡΠΈΡΡ Π² Π½Π΅ΠΉ Π²ΡΡΠΊΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ Π΅ΡΡΠ½Π΄Ρ Π·Π° ΠΏΡΠΈΠ΅ΠΌΠ»ΠΈΠΌΡΠ΅ Π΄Π΅Π½ΡΠ³ΠΈ.
1. ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΎΠ±Π»Π°ΠΊΠ°
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Ρ DevTest Labs Ρ Azure DevOps, Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π½Π΅ΠΊΠΈΠΉ Service Principal, ΠΏΠΎ ΡΡΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ ΡΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ ΠΎΠ΄ΠΈΡΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°ΠΌ Π² ΠΎΠ±Π»Π°ΠΊΠΎ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ/ΡΠ΄Π°Π»ΡΡΡ ΡΠ°ΠΌ ΡΠ΅ΡΡΡΡΡ Π΄Π»Ρ ΡΠ΅Π±Ρ.
ΠΠ΄Π΅ΠΌ Π² ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΡ ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡ Azure Active Directory
ΠΠ°Ρ
ΠΎΠ΄ΠΈΠΌ App Registrations ΠΈ ΠΊΠ»ΠΈΠΊΠ°Π΅ΠΌ Π½Π° New Registration, ΡΡΠΎ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π°ΡΠ΅Π³ΠΎ service principal. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½Π΅ Π±ΡΠ΄Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Ρ ΡΠ°Π·Π½ΡΡ
ΠΏΠΎΠ΄ΠΏΠΈΡΠΎΠΊ.
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄Π°ΡΡ ΠΏΡΠ°Π²Π° Π½Π°ΡΠ΅ΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΌΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ΄Π΅ΠΌ Π² ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ, Π·Π½Π°ΡΠΎΠΊ Ρ ΠΊΠ»ΡΡΠΈΠΊΠΎΠΌ. ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ Π½Π°ΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΡ.
ΠΠ°Π»Π΅Π΅ Π² Access Control ΠΆΠΌΠ΅ΠΌ Role Assignment ΠΈ ΠΈΡΠ΅ΠΌ Π² ΠΏΠΎΠΈΡΠΊΠ΅ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΡ ΡΡΠ΅ΡΠΊΡ. ΠΠ°Π΅ΠΌ ΡΠΎΠ»Ρ Contributor, ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
ΠΠ°Π»Π΅Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ Service Principal Π² Azure AD ΠΈ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΠΎΠ·ΠΆΠ΅, Π½Π°ΠΌ Π±ΡΠ΄ΡΡ Π½ΡΠΆΠ½Ρ Π±ΡΠ΄ΡΡ Π²ΡΠ΅ ID ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΌ Π΅ΡΡΡ, ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΠΈΡ
.
ΠΠ° ΡΡΠΎΠΌ Π½Π°ΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΡΡΠ°Π»Π° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ ΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π² Azure DevOps.
2. ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Azure DevOps
ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΌΡ Π·Π°ΠΉΠ΄Π΅ΠΌ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Service Connections. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΈΠΏΠ° Azure Resource Manager.
Π‘Π΅ΠΉΡΠ°Ρ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π²ΡΠ΅ ID ΡΡΠΎ ΠΌΡ Π·Π°ΠΏΠΈΡΠ°Π»ΠΈ. ΠΠ»ΠΈΠΊΠ°Π΅ΠΌ Π½Π° use the full version of the service connection dialog. Π Π²Π²ΠΎΠ΄ΠΈΠΌ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΡ Service Principal. ΠΠΌΠ΅ΠΌ verify ΠΈ Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΡΠΈ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ ΠΌΠΎΠ³ΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΎΠ±Π»Π°ΠΊΡ.
3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡΡΡΠΏΠ°Π΅ΠΌ ΠΊ ΡΠ°ΠΌΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΌΡ, ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°. ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΌΠ΅Π½Ρ Pipelines-Builds
ΠΠ°Ρ Π²ΡΡΡΠ΅ΡΠ°Π΅Ρ ΠΌΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±ΠΈΠ»Π΄Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π°ΠΌ YAML ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΡ Π²Π΅ΠΆΠ»ΠΈΠ²ΠΎ ΠΎΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΠΎΠ½ΡΡΠ½ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Microsoft ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ ΠΊΠ°ΠΊ Ρ Π»ΡΠ΄Π΅ΠΉ ΠΈ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ ΡΠ΅ΡΠ΅Π· YAML, Π½ΠΎ ΡΠΊΡΠΏΠ°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π½Π΅ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π³ΠΎΠ²ΠΎΡΠΈΡ Π½Π°ΠΌ, ΡΡΠΎ ΠΏΠΎΠΊΠ° ΡΠ°Π½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡΡ.
ΠΠ· ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±ΡΠ°Π·ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Empty Pipeline. ΠΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π°Ρ Π²ΡΡΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΡΡΠΎΠ΅ ΠΎΠΊΠΎΡΠΊΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π² Π½Π΅ΠΌ ΠΌΡ Π΄Π°Π»ΡΡΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅ΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΡΠ°ΠΊ, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° + ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π² Π½Π΅ΠΊΠΈΠΉ ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΎΡΠΊΡΠ΄Π° Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ°ΡΠΊΠΎΠ² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡΠΎ Π±ΡΠ΄ΡΡ ARM Template Π½Π°ΡΠ΅ΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ Π² Azure DevTest Labs, ΡΠΊΡΠΈΠΏΡ Π΄ΠΎΡΡΠ°Π²Π°Π½ΠΈΡ IP ΠΌΠ°ΡΠΈΠ½Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡΠΎΠ·Π΄Π°Π½Π° Π½Ρ ΠΈ, ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ, ΡΠΊΡΠΈΠΏΡΡ Π½Π°ΡΠΈΡ
ΡΠ΅ΡΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π½Π° Ρ
ΠΎΡΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ.
4. ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ARM Template
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΠΊΡ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ΄Π΅Ρ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½Π΅Π΅ ΡΠ΅ΠΌΠΏΠ»Π΅ΠΉΡ, json ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π² ΠΊΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ ΠΎΡΡΡΠ΄Π° ΡΠΌΠΎΠ³ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½.
ΠΠ΄Π΅ΠΌ Π² Π½Π°ΡΡ Π»Π°Π±Ρ ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ ΠΌΠ΅Π½Ρ Formulas (reusable bases), ΠΆΠΌΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ.
ΠΠ°Ρ Π²ΡΡΡΠ΅ΡΠΈΡ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠΌΠ°Π΄ΠΆΠ΅ΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·Ρ, Π²ΡΠ±ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠ°ΡΠΈΠ½Ρ, Π²ΡΠ΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΠΊΠΈ. ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΡ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ, ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ ΠΏΡΠ½ΠΊΡΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΌΠ°ΡΠΈΠ½Ρ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ°ΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΡΡΠ΅Π΄Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ Π² Π΄ΠΎΠΌΠ΅Π½ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ Π½Π° Π½Π΅Π΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π΄ΠΌΠΈΠ½Π°, ΡΡΠΎΠ±Ρ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ ΠΏΠΎΡΠΎΠΌ ΠΌΠΎΠ³ Π½Π° ΡΡΡ ΠΌΠ°ΡΠΈΠ½Ρ Π·Π°Ρ
ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΠ΄ ΡΡΠΎΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΡΡ. ΠΡΠΎ Π²ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ, Π½ΠΎ Π΄Π»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ ΠΎΠ΄ΠΈΠ½ Π°ΡΡΠ΅ΡΠ°ΠΊΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅. Π§ΡΠΎΠ±Ρ Π½Π° Π½Π°ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ ΠΏΠΎΡΡΠ°Π²ΠΈΠ»Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ Π½Π°ΠΌΠΈ ΡΠΎΡΡΠ°, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡ Β«Download Azure Pipelines Artifact and Run ScriptΒ». ΠΠΎΠΌΠ½ΠΈΡΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ Ρ Π³ΠΎΠ²ΠΎΡΠΈΠ» ΡΡΠΎ Π³Π΄Π΅-ΡΠΎ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ Π±ΠΈΠ»Π΄ Ρ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ? ΠΠΎΡ ΡΠ΅ΠΉΡΠ°Ρ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΠΊΠ΅, Π° ΡΠΎΡΠ½Π΅Π΅ ΡΠ΅ΠΌΠΏΠ»Π΅ΠΉΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΏΠΎΡΠ΅Π» ΠΈ Π·Π°Π±ΡΠ°Π» ΡΡΠΎΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡ. Π Π½Π΅ ΠΏΡΠΎΡΡΠΎ Π·Π°Π±ΡΠ°Π», Π° Π΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ», Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½Π°Π·Π²Π°Π½ΠΈΡ Π±ΠΈΠ»Π΄Π° ΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°. Π‘Π΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ, ΠΊΠ°ΠΊ ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π°, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π² ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π² Azure DevOps ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π² Secrets Π² Π²Π°ΡΠ΅ΠΉ Π»Π°Π±Π΅. Π’ΡΡ Π΅ΡΡΡ ΠΌΠ°Π»Π΅Π½ΡΠΊΠ°Ρ ΠΎΠ³ΠΎΠ²ΠΎΡΠΊΠ°, Π² Secrets ΡΠΎ ΠΌΡ Π΅Π³ΠΎ ΡΠΎΡ
ΡΠ°Π½ΠΈΠΌ, Π½ΠΎ ΡΠ΅ΠΌΠΏΠ»Π΅ΠΉΡΡ ΠΎΡ ΡΡΠΎΠ³ΠΎ Π½ΠΈ Ρ
ΠΎΠ»ΠΎΠ΄Π½ΠΎ Π½ΠΈ ΠΆΠ°ΡΠΊΠΎ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠΆΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°, ΠΏΠΎ ΡΡΠΎΠΌΡ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ Π΅ΡΠ΅ ΡΠ°Π· Π²ΡΡΡΠ½ΡΡ Π²Π½Π΅ΡΡΠΈ Π² ΡΠ΅ΠΌΠΏΠ»Π΅ΠΉΡ.
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π°ΡΡΠ΅ΡΠ°ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ, ΡΡΠΎ Β«Configure WinRMΒ», Π½Π°ΠΌ ΠΎΠ½ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° Π½Π° ΠΌΠ°ΡΠΈΠ½Ρ. Π’Π°ΠΌ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, hostname. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ Π΅Π³ΠΎ Π·Π°ΡΠ°Π½Π΅Π΅ Π½Π΅ Π·Π½Π°Π΅ΠΌ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ %COMPUTERNAME%.
ΠΡΠ°ΠΊ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π²ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ, ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠΎΠΌΡ Π·Π°ΡΠ΅ΠΌ ΠΌΡ ΡΡΠ΄Π° Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΡΠΈΡΠ»ΠΈ. ΠΠΎΡΡΠ°Π΅ΠΌ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ARM Template Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Advanced ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠΊΠ½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠΌΡΠ»Ρ.
ΠΠΎΠΏΠΈΡΡΠ΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π² ΡΠ°ΠΉΠ» VMtemplate.json ΠΈ ΠΊΠ»Π°Π΄Π΅ΠΌ Π΅Π³ΠΎ Π² ΠΊΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎΠ»ΡΡΠ΅ Π½Π°ΠΌ ΠΎΠ±Π»Π°ΠΊΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½.
5. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ ΠΈ ΠΈΠ½Π΅ΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ, ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΠΊΠΈ, ΡΠ°Π΄ΠΈ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΈ Π΄Π΅Π»Π°Π»ΠΈ Π²ΡΠ΅ ΡΡΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅ΠΌΠΏΠ»Π΅ΠΉΡΡ. Π ΠΏΡΠ½ΠΊΡΠ΅ Azure RM Subscription ΠΌΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π½Π°Ρ Service connection, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π² ΠΏΡΠ½ΠΊΡΠ΅ 2. ΠΠ°Π»Π΅Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΠ΄Π΅Ρ Π²ΡΡΠΊΠΎΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ Π½Π°ΠΌ Π»Π°Π±ΠΎΡΠΎΡΠΎΡΠ½Π°Ρ ΡΡΠ΅Π΄Π°. ΠΠΎΡΠΎΠΌ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ json ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΠΎΡ ΠΌΠ°ΡΠΈΠ½Ρ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΈΠ»ΠΈ Π½Π° ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, Π½ΠΎ Ρ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½ ΡΡΠΎ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΡΡΠΎ Π±Ρ Ρ ΡΡΠ΄Π° Π½Π΅ ΠΏΠΈΡΠ°Π», Π·Π°ΠΉΡΠΈ Π½Π° ΠΌΠ°ΡΠΈΠ½Ρ ΠΏΠΎΡΠΎΠΌ ΠΏΠΎΠ΄ ΡΡΠΈΠΌΠΈ ΠΊΡΠ΅Π΄Π°ΠΌΠΈ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π»ΠΎΡΡ, Π³Π»Π°Π²Π½ΠΎΠ΅ Π·Π°Π΄Π°ΡΡ ΠΈΠΌΡ ΠΌΠ°ΡΠΈΠ½Ρ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΎ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΠ»ΠΎ Π²ΡΠ΅Π³Π΄Π° ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄Ρ Π±ΠΈΠ»Π΄Π°.
ΠΠ°Π»Π΅Π΅ ΠΌΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΠ°ΡΠΈΠ½Π° Π²Π·Π»Π΅ΡΠΈΡ, Π½Π°ΠΌ ΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΊΠ°ΠΊ ΡΠΎ Π·Π½Π°ΡΡ Π΅Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π° Π»ΡΡΡΠ΅ Π½Π΅ Π½Π°ΠΌ Π° ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ GetLabVMParams.ps1 ΠΈ ΠΊΠ»Π°Π΄Π΅ΠΌ Π΅Π³ΠΎ ΡΡΠ΄Π° ΠΆΠ΅, Π² ΠΏΡΠΎΠ΅ΠΊΡ. Π’Π΅ΠΊΡΡ ΡΠΊΡΠΈΠΏΡΠ° Ρ Π²Π·ΡΠ» Π½Π° ΡΠ°ΠΉΡΠ΅ Microsoft, Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΏΡΠ°Π²ΠΈΠ» Π΅Π³ΠΎ Π΄Π»Ρ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ΅Π΄Ρ, Ρ.ΠΊ. ΠΎΠ½ Π±ΡΠ°Π» PublicIP ΠΈ FQDN ΠΌΠ°ΡΠΈΠ½Ρ. ΠΠΈ ΡΠΎΠ³ΠΎ Π½ΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ, Π½ΠΎ Π΅ΡΡΡ PrivateIP ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠ°ΠΊ ΡΠΎ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΡ, ΠΏΠΎ ΡΡΠΎΠΌΡ Ρ Π΄ΠΎΠΏΠΈΡΠ°Π» ΠΊΡΡΠΎΠΊ.
Param( [string] $labVmId)
$labVmComputeId = (Get-AzureRmResource -Id $labVmId).Properties.ComputeId
# Get lab VM resource group name
$labVmRgName = (Get-AzureRmResource -Id $labVmComputeId).ResourceGroupName
# Get the lab VM Name
$labVmName = (Get-AzureRmResource -Id $labVmId).Name
# Get lab VM public IP address
# $labVMIpAddress = (Get-AzureRmPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).IpAddress
# Get lab VM FQDN
# $labVMFqdn = (Get-AzureRmPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).DnsSettings.Fqdn
# Get lab VM private IP address
$VmNetworkdetails= (((Get-AzureRmVM -ResourceGroupName $labVmRgName -Name $labVmName).NetworkProfile).NetworkInterfaces).Id
$nicname = $VmNetworkdetails.substring($VmNetworkdetails.LastIndexOf("/")+1)
$labVMnetwork = (Get-AzureRmNetworkInterface -Name $nicname -ResourceGroupName $labVmRgName)|Select-Object -ExpandProperty IPConfigurations
$labVMIpAddress = $labVMnetwork.PrivateIpAddress
# Set a variable labVmRgName to store the lab VM resource group name
Write-Host "##vso[task.setvariable variable=labVmRgName;]$labVmRgName"
# Set a variable labVMIpAddress to store the lab VM Ip address
Write-Host "##vso[task.setvariable variable=labVMIpAddress;]$labVMIpAddress"
# Set a variable labVMFqdn to store the lab VM FQDN name
Write-Host "##vso[task.setvariable variable=labVMFqdn;]$labVMFqdn"
Write-Output $labVMIpAddress
Set-Item wsman:localhostclienttrustedhosts * -Force
ΠΠ· Π²ΡΠ΅Π³ΠΎ, ΡΡΠΎ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠΊΡΠΈΠΏΡ, Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ labVMIpAddress. ΠΡ ΡΡΠΎ ΠΌΠ½Π΅, ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Π΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ, ΠΏΠΎ ΡΡΠΎΠΌΡ Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ΄Π°Π»ΡΠ» ΠΈ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΊΠΎΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π» Π»ΠΈΡΠ½Π΅Π΅.
Π’Π°ΠΊ ΠΆΠ΅ ΠΎΠ±ΡΡΡΠ½Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΡΠΊΡ ΡΠΊΡΠΈΠΏΡΠ°, ΠΎΠ½Π° ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π½Π°ΡΠ΅ΠΉ Π±ΠΈΠ»Π΄ ΠΌΠ°ΡΠΈΠ½Π΅ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π»ΡΠ±ΠΎΠ³ΠΎ Ρ ΠΎΡΡΠ° ΠΏΠΎ WinRM.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΡΠ°ΠΏΠΎΠΌ ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π½Π°Ρ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΊΡΠΈΠΏΡ. ΠΠΌΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΠΎΠ±Π»Π°ΠΊΠΎΠΌ, Π²Ρ ΠΎΠ΄Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Ρ ID ΠΌΠ°ΡΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°Π³Π°. ΠΠ°ΠΊ? Π’ΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΎ ΡΠ°ΠΊΠΎΠΉ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΈ, ΠΊΠ°ΠΊ Output Variables. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°Π³Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³Π°ΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΡΠΏΠ΅Ρ ΡΠΊΡΠΈΠΏΡΠ° ΡΠ°ΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡΠ΄Π΅Ρ labVMIpAddress, Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΡ.
ΠΠ°Π»Π΅Π΅ Ρ Π΄Π΅Π»Π°Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ΅ Π²Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅, ΠΌΠΎΠ³ΡΡ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΎΡ ΠΊΠ΅ΠΉΡΠ° ΠΊ ΠΊΠ΅ΠΉΡΡ. ΠΡΠΏΠΎΠ»Π½ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡΠΎΠΌ Π±ΡΠ΄Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΊΡΠΈΠΏΡΡ.
New-Item βC:test" βtype directory
New-SMBShare βName βtestβ βPath βC:testβ βFullAccess everyone
ΠΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ°ΡΠΎΠΊ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Π΄Π°Π»ΡΡΠ΅ ΠΌΡ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ sample script Π½Π° ΠΌΠ°ΡΠΈΠ½Ρ ΠΈ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΡΡΠ°ΠΏΠΎΠΌ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π΄ΡΠ΅ΡΠ° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ Π½Π°ΠΌ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ Π½Π°ΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $(labVMIpAddress). ΠΠ°Π»Π΅Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ°ΡΠΊΡ Β«Π·Π°Π±ΡΠ°ΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡ Ρ ΡΠ°ΡΡΒ» ΠΈ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° ΡΠ΅Π±Π΅ Π² Π±ΠΈΠ»Π΄ ΡΡΠ΅Π΄Ρ, ΠΏΠΎΡΠΎΠΌ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠ°ΡΠΊΠΎΠΉ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ Π² Π°ΡΡΠ΅ΡΠ°ΠΊΡ Π±ΠΈΠ»Π΄Π°. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΠ°ΡΠΈΠ½Π° Π½Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½Π°, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΡΡΠ°ΠΏΠΎΠΌ Π΅Ρ ΡΠ±ΠΈΠ²Π°Π΅ΠΌ. ΠΠ»Π°Π²Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΏΠΎ ΠΎΠ±ΡΠ΅ΠΌΡ ΡΡΠ°ΡΡΠΈ, ΡΡΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ ΠΎΠ±Π»Π°ΠΊΠΎΠΌ ΠΈ Π½Π°Π»Π°Π΄ΠΈΡΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡ Ρ Π²ΠΈΡΡΡΠ°Π»ΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ, Π΄Π°Π»ΡΡΠ΅ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²Π»Π΅ΠΊΠ°ΡΡΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΠΎ.
ΠΡΠΎ ΠΌΠΎΡ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΠ°ΡΡΡ, ΡΠ°ΠΊ ΡΡΠΎ Π½Π΅ ΡΡΠ΄ΠΈΡΠ΅ ΡΡΡΠΎΠ³ΠΎ, Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com