Мен жақында DevOps әлемінде салыстырмалы түрде танымал емес аңды кездестірдім: Azure DevOps құбырлары. Мен тақырып бойынша нақты нұсқаулардың немесе мақалалардың жоқтығын бірден байқадым. Неге екенін білмеймін, бірақ Microsoft-тың бұл құралды танымал ету үшін біраз жұмысы бар екені анық. Бүгін біз Azure бұлтында автоматтандырылған тестілеуге арналған құбырды саламыз.
Сонымен, тапсырма:
WIX жобасынан құрастырылған Azure DevOps көмегімен жасалған бағдарламалық жасақтама бар. Егер қызығушылық танытсаңыз, мен бұл құрал туралы да жазамын. Негізінде, бұл стандартты InstallShield-ті алмастыратын Windows орнатушыларын құрудың автоматтандырылған тәсілі. Сонымен, біздің бағдарламалық жасақтама сәтті құрылады және жүйеге қолданбаны орнататын setup.exe артефактін жасайды. WindowsБұл қолданбаны өндірістік виртуалды машинаға орнату, сол жердегі тестілеу тобы дайындаған автоматтандырылған тесттерді көшіру, оларды іске қосу және біріктіру алдында тармақтың жақсы немесе жаман екенін анықтау үшін нәтижелерді жинау қажет. Бұл GitLab-тағыдай, тек есектер арқылы ғана.
Сынақтарымызды іске қосатын виртуалдандыру ортасы ретінде біз Azure жазылымдарындағы белгілі бір нысанды, ондағы ақылға қонымды бағаға тестілеудің барлық түрлерін іске қосу үшін арнайы жасалған Azure DevTest Labs қолданбасын қолданамыз.
1. Бұлт жағындағы интеграция
Бастау үшін бізге DevTest зертханаларын Azure DevOps-пен біріктіру қажет, ол үшін бізге қызмет көрсетуші, негізінен құбырларға бұлтқа өтуге және сол жерде ресурстарды өздері үшін жасауға/жоюға мүмкіндік беретін қызмет тіркелгісі қажет.
Жазылымға өтіп, Azure Active Directory қызметін табыңыз.

Қолданба тіркелімдерін тауып, Жаңа тіркеу түймесін басыңыз. Бұл біздің қызмет көрсетушімізді жасайды. Мен оны жасау кезінде таңдау керек параметрлер туралы егжей-тегжейлі айтып бермеймін, себебі олар жазылымыңызға байланысты өзгеруі мүмкін.

Енді біз қызмет көрсетуші директорымызға рұқсат беруіміз керек. Ол үшін Жазылымдарға, содан кейін перне белгішесіне өтіңіз. Біздің жазылымды таңдаңыз.

Әрі қарай, «Қатынасты басқару» бөлімінде «Рөлді тағайындау» түймесін басып, жаңа ғана жасаған атауды пайдаланып осы тіркелгіні іздеңіз. Қатысушы рөлін тағайындау; бұл сізге керек нәрсе.

Содан кейін Azure AD жүйесіндегі қызмет көрсетушіге оралыңыз және оның сипаттарын ашыңыз. Кейінірек бізге барлық идентификаторлар қажет болады, сондықтан оларды сақтаңыз.
Бұл біздің портал параметрлерін аяқтайды және біз Azure DevOps қызметіне көшеміз.
2. Azure DevOps жағындағы интеграция
Алдымен жоба параметрлеріне өтіп, «Қызметтік қосылымдар» тармағын таңдаймыз. Azure Resource Manager түрінің жаңа элементін жасаңыз.

Енді бізге жазылған барлық идентификаторлар қажет болады. «Қызметке қосылу диалогының толық нұсқасын пайдалану» түймесін басыңыз. Қызмет көрсетушіден алған барлық деректерді енгізіңіз. «Тексеру» түймесін басыңыз және бәрі жақсы болса, қосылымды сақтаңыз. Енді біздің құбырлар бұлтқа қосылу үшін пайдалана алады.

3. Құбырды құру
Енді қызықты бөлікке көшейік: құбырдың өзін салу. Pipelines-Builds мәзірін ашыңыз.

Бізді әдепкі бойынша сәйкес конфигурациясы бар YAML файлын жасауға әрекет ететін жаңа құрастыру мәзірі қарсы алады. Біз сыпайы түрде бас тартамыз және классикалық опцияны таңдаймыз. Майкрософттың мүмкіндігінше ыңғайлы болуды және YAML арқылы құбыр желісін максималды теңшеуге мүмкіндік беруді қалайтыны түсінікті, бірақ аз құжаттама және көптеген модульдердің мүлдем жұмыс істемеуі бұл функцияны пайдаланудың әлі ерте екенін көрсетеді.

Қол жетімді үлгілердің алуан түрінен бізге қарапайым бос құбыр қажет болады. Оны жасағаннан кейін бізді бос өңдеу терезесі қарсы алады, онда біз жеткілікті уақытты өткіземіз.

Сонымен, біз + түймесін басып, белгілі бір модуль дүкеніне кіреміз, ол жерден бізге тізімдегі келесі компоненттер қажет болады.

Құбыр тапсырмаларын конфигурациялауды бастамас бұрын, жобаға бірнеше файлдарды жасап, қосуымыз керек. Оларға Azure DevTest Labs жүйесінде жасайтын виртуалды машинамыздың ARM үлгісі, ол жасалғаннан кейін құрылғының IP мекенжайын алуға арналған сценарий және қосымша сынақтарға арналған сценарийлер немесе хостта іске қосқымыз келетін кез келген басқа нәрсе кіреді.
4. ARM шаблонын құру
Виртуалды машинаны жасау үшін біз алдымен оның үлгісін, json файлын жасауымыз керек, оны құбыр оны сол жерден оқи алатындай етіп жоба кодына орналастырамыз.
Біз зертханамызға барамыз және формулалар (қайта пайдалануға болатын негіздер) мәзірін табамыз, жаңасын жасау түймесін басыңыз.

Бізді негізгі ретінде суреттердің ұзын тізімі, машина өлшемін таңдау және виртуалды машинаны жасау кезіндегідей процесс қарсы алады. Біз бұл қадамға тоқталмаймыз; біз машина қасиеттеріндегі соңғы элементке, атап айтқанда, артефактілерге тікелей көшеміз. Сіз өз ортаңыз үшін қажетті кез келген конфигурацияларды пайдалана аласыз. Мысалы, мен машинаны қосып жатырмын домен Мен оған әкімші ретінде қызметтік тіркелгі қосамын, сонда құбыр осы тіркелгі арқылы осы машинаға кіре алады. Мұның бәрі әртүрлі болуы мүмкін, бірақ кодты сәтті тексеру үшін бізге бір артефакт қажет, оны толығырақ талқылаймыз. Біз тексеріп жатқан бағдарламалық жасақтаманың соңғы нұсқасы біздің машинамызға орнатылғанына көз жеткізу үшін біз "Azure Pipelines Artefact жүктеп алып, сценарийді іске қосу" артефактін пайдаланамыз. Басында қолданба орнатушысы бар құрастыру бір жерде компиляцияланғанын айтқаным есіңізде ме? Енді біз виртуалды машинаға, немесе дәлірек айтқанда, үлгіге барып, осы артефактіні алуды айтуымыз керек. Және оны тек алып қана қоймай, сонымен қатар орнатамыз, ол үшін біз жобаны, құрастыру атауын және құпия кілтті көрсететін арнайы өрістерді толтырамыз. Барлық ұқсас жүйелердегідей, құпия кілт тіркелгіде жасалады - бұл жағдайда Azure DevOps-та - және сіздің зертханаңыздағы Secrets-те сақталады. Мұнда шағын ескерту бар: біз оны Secrets-те сақтаймыз, бірақ үлгі бұған мән бермейді. Оны құбыр желісіндегі басқа пайдаланушы іске қосады, сондықтан біз құпия кілтті үлгіге қайтадан қолмен енгізуіміз керек болады.
Қосылуы керек басқа артефакт - «WinRM конфигурациялау»; ол бізге машинаға кейіннен қол жеткізу үшін қажет болады. Оның тек бір параметрі бар: хост атауы. Біз оны алдын ала білмегендіктен, %COMPUTERNAME% айнымалы мәнін қолданамыз.

Сонымен, біз барлық қажетті артефактілерді қостық, енді осы жазбаның негізгі тақырыбына көшейік. Жасалған ARM үлгісін сол формула жасау терезесінің Кеңейтілген қойындысында ашыңыз.

Бет мазмұнын VMtemplate.json файлына көшіріп, оны жоба түбіріне орналастырыңыз. Бізге енді бұлт қажет емес, сондықтан құбырға оралайық.
5. Құбырдың конфигурациясы
Ең маңызды және қызықты бөліктен бастайық: виртуалды машина жасау. Сондықтан біз осы интеграциялар мен үлгілердің барлығын жасадық. Azure RM жазылымы бөлімінде біз 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 арқылы кез келген хостқа құрастыру машинасына қол жеткізуге мүмкіндік береді.
Келесі қадам - тамаша сценарийді іске қосу. Ол алдыңғы қадамнан белгілі болатын бірдей бұлттық қосылымды және машина идентификаторы бар кіріс айнымалысын қажет етеді. Қалай? Мұнда біз керемет нәрсені атап өтуіміз керек: шығыс айнымалылары. Әрбір қадамда құбырдағы келесі қадамдарға берілетін айнымалылар тізімі болуы мүмкін. Біздің супер сценарийіміз үшін бұл айнымалы labVMIpAddress болады; оны анықтауды ұмытпаңыз.

Әрі қарай, мен қарапайым нәрселерді жасаймын, айтпақшы, олар әр жағдайда өзгеруі мүмкін. Мен қашықтағы сценарийді орындаймын, содан кейін сценарийлерімді жүктеп салатын үлесті жасаймын.
New-Item “C:test" –type directory
New-SMBShare –Name “test” –Path “C:test” –FullAccess everyoneТапсырма атаулары көрсеткендей, біз үлгі сценарийді машинаға көшіріп, оны басқа қадамда орындаймыз. Біз қашықтағы құрылғының мекенжайы ретінде $(labVMIpAddress) айнымалы мәнін қолданамыз. Содан кейін біз «бөлісуден артефакт алу» тапсырмасын қолданамыз және сценарий нәтижелерін құрастыру ортасына көшіреміз. Содан кейін бірдей стандартты тапсырманы пайдаланып, біз бұл файлдарды құрастыру артефактісіне сақтаймыз. Бізге машина қажет болмаған соң, соңғы қадам оны өлтіру болып табылады. Негізгі қиындық, осы мақаланың ұзындығынан көріп отырғаныңыздай, бұлтпен біріктіру және сіз жасаған виртуалды машинамен байланыс орнату. Осыдан кейін сіз қалағаныңызша көңіл көтере аласыз.
Бұл менің бірінші мақалам, сондықтан мені тым қатал бағаламаңыз, пікір қалдырыңыз.
Ақпарат көзі: www.habr.com
