Я работаю над конвейером Jenkins, который параллельно проходит 2 этапа на одном хосте.
На обоих этапах вызываются отдельные ansible playbook. Обе эти пьесы запускают отдельные сценарии на том же удаленном хосте, параллельно (как определено в конвейере Jenkins ниже)
stage('Parallel execution on hosts') {
parallel {
stage('stage one') {
steps {
script {
println(list)
list.each { ip ->
new_map[ip] = {
sh "ansible-playbook playbook_one.yml -f 5 -i $ip, --extra-vars 'ansible_connection=ssh ansible_ssh_user=user ansible_ssh_private_key_file=key.pem' -vvv"
}
}
retry(count:3) {
parallel new_map
}
}
}
}
stage('stage two') {
steps {
script {
println(list)
list.each { ip ->
new_map_2[ip] = {
sh "ansible-playbook playbook_two.yml -f 5 -i $ip, --extra-vars 'ansible_connection=ssh ansible_ssh_user=user ansible_ssh_private_key_file=key.pem' -vvv"
}
}
retry(count:3) {
parallel new_map_2
}
}
}
}
В большинстве случаев это работает хорошо, и я получаю успешный вывод.
Но бывают случаи, когда удаленный хост, на котором выполняются сценарии, становится недоступным при выполнении задач. Когда это происходит, это происходит случайным образом на любом задании в ansible playbooks.
До сих пор я не наблюдал закономерностей в задачах, на которых это не удалось. Хотя это редкое явление, это нежелательно.
Может ли это быть из-за того, что две пьесы пытаются работать параллельно на одном хосте?