Я пытаюсь получить доступ к номеру задания, чтобы отправить по электронной почте ссылку на журналы вышки. Он должен иметь доступ в пределах playbook и быть доступным во время выполнения. Это оказалось чрезвычайно трудным, поскольку ansible башня изначально не имеет этой функции. Вот часть сценария, который вызывает мою пьесу:
#Stores the output of the job
tmp = "/tmp/runTowerJob"+str(rand(0,1))
#Stores the input for the job
extravars = " ".join([x+'='+inputDic[x] for x in inputDic])
cmd = 'tower-cli job launch --job-template=' + migration_template + ' --inventory=' + migration_inventory
#Launch first job
system(cmd + ' --extra-vars "' + extravars + '" > ' + tmp + ' 2> /dev/null')
jobNum = open(tmp).read().split('\n')[-3].split(' ')[0]
jobURL = 'https://tower.companyname.ca/#/jobs/playbook/' + jobNum
#Append the real job URL to the parameter file
extravars += ' jobURL=' + jobURL
cmd = 'tower-cli job launch --job-template=' + recordJob_template + ' --inventory=' + recordJob_inventory
cmd = cmd + ' --extra-vars="' + extravars + '" > /dev/null 2> /dev/null'
#Launch second job
system(cmd)
Extravars содержит набор параметров, используемых в пьесе. Номер задания доступен только после вызова реальной работы. Второе задание создает текстовый файл с JobURL . Реальное задание получит доступ к этому файлу, чтобы прочитать его URL задания, а затем удалить его.
Это, очевидно, не идеально, создает много невидимых зависимостей и трудно построить. Есть ли способ лучше? Есть ли в Ansible нативная функциональность, которую я мог просмотреть?