Я пытаюсь использовать Azure DevOps для настройки кластера роя docker, со средой, содержащей 3 виртуальных машины RHEL7 с установленным Docker, и один из них настраивается в качестве хоста роя.
Вот файл yaml для конвейера:
jobs:
- deployment: MasterNode
strategy:
runOnce:
deploy:
steps:
- bash: |
SWARMTOKEN=$(docker swarm join-token manager -q)
echo "##vso[task.setvariable variable=tokenswarm;isOutput=true]$SWARMTOKEN"
name: setvar
- script: echo $(setvar.tokenswarm)
name: echovar
environment:
name: swarm
resourceType: VirtualMachine
tags: SwarmNodeMaster
- deployment: SwarmNode
dependsOn: MasterNode
variables:
tokenvar: $[ dependencies.MasterNode.outputs['deploy.setvar.tokenswarm'] ]
strategy:
runOnce:
deploy:
steps:
- bash: |
echo $(tokenvar)
environment:
name: swarm
resourceType: VirtualMachine
tags: SwarmNode
Я зарегистрировал это на VSD https://developercommunity.visualstudio.com/content/problem/937451/unable-to-share-variable-from-one-deployment-job-t.html
Я попытался установить для второго задания развертывания значение обычная работа в соответствии с синтаксисом в https://docs.microsoft.com/en-us/azure/devops/release-notes/2020/sprint-164-update#support -for-output-variable-in-a-deploy-job
jobs:
- deployment: masternode
strategy:
runOnce:
deploy:
steps:
- script: |
SWARMTOKEN="Docker GUID"
echo "##vso[task.setvariable variable=token;isOutput=true]$SWARMTOKEN"
name: 'setvar'
- script: echo $(setvar.token)
name: echovar
environment:
name: swarm
resourceType: VirtualMachine
tags: SwarmNodeMaster
- job: 'swarmnode'
dependsOn: 'masternode'
variables:
tokenvar: $[ dependencies.masternode.outputs['deploy.setvar.token'] ]
steps:
- script: echo $(tokenvar)
name: echovar
Кажется, что бы я ни пытался, я не могу получить переменная для расширения на следующем шаге развертывания.
Заранее спасибо за любую помощь!
ОБНОВЛЕНИЕ: @Kontekst спасибо за то, что поделились своим рабочим yaml, используя его, мне удалось отследить его до определение среды для «главного» узла:
environment:
name: swarm
resourceType: VirtualMachine
tags: SwarmNodeMaster
Главный узел Swarm имеет тег «SwarmNodeMaster» и является частью той же среды, что и две другие виртуальные машины, имеющие тег «SwarmNode», который является используется на втором шаге, если я изменю вышеупомянутое на jus t environment: 'swarm' Я могу передать переменную на следующий шаг, но снова перестает работать, если я пытаюсь нацелиться на главный узел ...
Вот yaml, который успешно передает переменную в следующее развертывание задание: https://hastebin.com/gudelokufi.bash
Моя основная проблема заключается в том, что мне нужно получить токен с хоста роя на узлы роя, но когда я пытаюсь передать переменную с шага развертывания, предназначается для узла роя, для задания развертывания, которое предназначается для узлов роя, переменная не может быть расширена во втором задании развертывания ...
Это то, что я хочу работать, но, кажется, нарушает выходную переменную: https://hastebin.com/yocepowopu.bash