Het Team: Het cloud-office van de RET bestaat uit 3 vaste medewerkers die agile de MS Azure omgeving van de RET onderhouden. Het team heeft 2 vaste kantoordagen.Opdrachtomschrijving:De RET werkt aan de vernieuwing van haar interne planketen. Er is gekozen voor de Hastus software van Giro, welke in de Azure omgeving van de RET zal komen te draaien. Om deze omgeving op te bouwen en de functionele tests te begeleiden zijn we op zoek naar een ervaren cloud engineer die het low level design kan maken en ook de bouw van de omgeving op zich kan nemen. Gezien de complexe aard van de omgeving en de opdracht is het voor de RET ook acceptabel om deze uitvraag met 2 personen in te vullen.De functie:Je/jullie taken bestaan uit o.a.:Het maken van het low level design voor de RET Hastus omgeving in Draw.io of MS Visio;Het schrijven van de Bicep-Code om de RET Hastus omgeving uit te rollen;Configureren van de Palo Alto firewall, DNS entries en inrichting van de F5 om de omgeving veilig bereikbaar te maken;Opzetten van monitoring en cost-management op de omgeving, incl autoscaling en reserved instances;Adviseren bij het opzetten van de AVD Remote-app omgeving voor Hastus;Documentatie voor de opgeleverde omgeving bijhouden.
Eisen bij de opdracht:Je hebt een afgeronde opleiding binnen de IT.Je hebt HBO werk- en denkniveau en minimaal 5 jaar werkervaring in/met Azure.Je hebt een achtergrond in Azure cloud beheer en ervaring met Palo Alto Panorama, Infoblox DNS, F5 Big-IP Loadbalancers en Bicep/Terraform in Azure DevOps.Je bent beschikbaar voor de genoemde periode, en flexibel qua werktijden.Remote werk is toegestaan, maar je bent in staat 2 dagen op kantoor van de RET te komen (Laan op Zuid 2, Rotterdam) t.b.v. overleg en samenwerking in de projectorganisatie.Je bent in het bezit van de relevante certificeringen AZ-104, AZ-400, AZ-700.Wensen bij de opdracht:Je hebt kennis en ervaring met Giro Hastus.Competenties:Je kunt conceptuele dingen goed uitwerken naar iets concreets.Je bent zelfstandig, maar werkt graag samen met anderen.Je bent integer, proactief, resultaatgericht, accuraat, klant- en oplossingsgericht.
Referentienummer2026-05268
LocatieRotterdam
Startdatum1 juli 2026
Einddatum31 december 2026
Optie op verlengingJa
Uren per week24u p/w
Sluitingsdatum17 juni 2026
17:00
Begint jouw trail hier?Stuur ons je CV met een korte opdrachtgerichte motivatie.
Discover your BlueTrailOnze weg naar jouw nieuwe carrière
Nadat jij op een opdracht hebt gereageerd, nemen wij binnen 24 uur contact met jou op en behandelen we jouw reactie.
We gaan met jou in gesprek. Wij kijken niet alleen naar je kennis en werkervaring, maar vooral naar jou als persoon. Dit is voor zowel de professional als de opdrachtgever belangrijk, wij willen de juiste match maken! Als we eenmaal de juiste match hebben gevonden, dan begint jouw BlueTrail en stellen we je voor aan de opdrachtgever!
Bij een succesvolle match worden de contracten opgesteld. Door middel van innovaties en digitalisering proberen wij dit proces zo kort mogelijk te maken. Zo kun jij doen waar je goed in bent, terwijl wij zorgen voor alle administratie!
Ook tijdens jouw opdracht staan wij altijd voor je klaar. Onze fieldmanagers zorgen er persoonlijk voor dan alles succesvol verloopt!
Follow our trail
E-mailadresCAPTCHA
gform.initializeOnLoaded( function() {gformInitSpinner( 2, 'https://www.bluetrail.nl/core/modules/934d581a4a/images/spinner.svg', true );jQuery('#gform_ajax_frame_2').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_2');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_2').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_2').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_2').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_2').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_2').val();gformInitSpinner( 2, 'https://www.bluetrail.nl/core/modules/934d581a4a/images/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [2, current_page]);window['gf_submitting_2'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_2').replaceWith(confirmation_content);jQuery(document).trigger('gform_confirmation_loaded', [2]);window['gf_submitting_2'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_2').text());}else{jQuery('#gform_2').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "2", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_2" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_2"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_2" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 2, current_page ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} );