{"id":13506,"date":"2021-06-25T10:25:33","date_gmt":"2021-06-25T08:25:33","guid":{"rendered":"https:\/\/www.solvinity.com\/blog\/how-do-you-automate-public-cloud-deployments\/"},"modified":"2025-06-19T13:29:48","modified_gmt":"2025-06-19T11:29:48","slug":"hoe-automatiseer-je-public-cloud-deployments","status":"publish","type":"blog","link":"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/","title":{"rendered":"Hoe automatiseer je public cloud deployments"},"content":{"rendered":"<p class=\"attachment\"><a href='https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual.png'><img fetchpriority=\"high\" decoding=\"async\" width=\"300\" height=\"200\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual-300x200.png\" class=\"attachment-medium size-medium\" alt=\"De stille dreiging van schijnveiligheid\" srcset=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual-300x200.png 300w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual-1024x683.png 1024w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual-768x512.png 768w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual.png 1200w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"13506\" class=\"elementor elementor-13506 elementor-13467\" data-elementor-post-type=\"blog\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1829967e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1829967e\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3507b1ce\" data-id=\"3507b1ce\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-56ef911b elementor-widget elementor-widget-breadcrumbs\" data-id=\"56ef911b\" data-element_type=\"widget\" data-widget_type=\"breadcrumbs.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p id=\"breadcrumbs\"><span><span><a href=\"https:\/\/www.solvinity.com\/nl\/\"><i class=\"fas fa-home\"><\/i> <span class=\"home-text\">Home<\/span><\/a><\/span><\/span><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-331cb691 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"331cb691\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1116c47c\" data-id=\"1116c47c\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-78cf5ad5 elementor-widget elementor-widget-spacer\" data-id=\"78cf5ad5\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-26e44af3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"26e44af3\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-36e2a31\" data-id=\"36e2a31\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5e68c2f0 elementor-widget elementor-widget-shortcode\" data-id=\"5e68c2f0\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">            <div class=\"werknemers\">             <\/div>\n            <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6d307708 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6d307708\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1dca0b0e\" data-id=\"1dca0b0e\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5a35d583 blog-date elementor-widget__width-auto elementor-widget elementor-widget-text-editor\" data-id=\"5a35d583\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t25 juni 2021\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3195f104 elementor-widget__width-auto elementor-widget elementor-widget-heading\" data-id=\"3195f104\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/www.solvinity.com\/nl\/category\/blog-nl\/\" rel=\"tag\">Blogs<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-32086299 elementor-widget elementor-widget-heading\" data-id=\"32086299\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Hoe automatiseer je public cloud deployments<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b1c41b8 elementor-widget elementor-widget-heading\" data-id=\"b1c41b8\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-medium\">met Terraform, GitLab en Azure<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-427009e2 elementor-widget elementor-widget-text-editor\" data-id=\"427009e2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>Als cloud engineer is het mijn taak om public cloud deployments te automatiseren en zo fouten te verminderen, tijd te besparen en de kwaliteitsprincipes van een organisatie te verbeteren. Hiervoor heb je een bepaalde toolset en software nodig. Er bestaan veel verschillende tools, maar in deze blog beschrijf ik hoe je tools als GitLab, Terraform en Azure gebruikt. Ik ga niet in op de details van de verschillende tools, want deze hebben namelijk zelf prima documentatie over het gebruik van de software.<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-73a53901 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"73a53901\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5494efdf\" data-id=\"5494efdf\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e389046 elementor-widget elementor-widget-heading\" data-id=\"e389046\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Cloud-agnostisch met Terraform<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-414597f3 elementor-widget elementor-widget-text-editor\" data-id=\"414597f3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Solvinity is een multi-cloud provider. We hebben daarom voor Terraform als cloud provisioning-tool gekozen, omdat deze cloud-agnostisch is. Hierdoor wordt de samenwerking met andere cloud engineers, die aan verschillende public cloud deployments werken, gemakkelijker.<\/p><p>Terraform is trouwens niet alleen een provisioning-tool voor de public cloud; je kunt er ook resources mee toewijzen aan VMware, Rundeck en een groot aantal andere providers. Daarnaast is het mogelijk om resources tegelijkertijd voor verschillende public clouds in te zetten. Met Terraform kun je Infrastructure as Code schrijven.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5571db82 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5571db82\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3ee1aed\" data-id=\"3ee1aed\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-494b262b elementor-widget elementor-widget-testimonial\" data-id=\"494b262b\" data-element_type=\"widget\" data-widget_type=\"testimonial.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-testimonial-wrapper\">\n\t\t\t\t\t\t\t<div class=\"elementor-testimonial-content\">\u201cVoor een productieomgeving wil je waarschijnlijk dat anderen de opzet eerst goedkeuren en controleren, voordat deze daadwerkelijk in Azure wordt uitgerold. In testomgevingen kun je deze opzet desgewenst automatisch toepassen.\u201d<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-testimonial-meta elementor-has-image elementor-testimonial-image-position-aside\">\n\t\t\t\t<div class=\"elementor-testimonial-meta-inner\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-image\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1200\" height=\"800\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1.png\" class=\"attachment-full size-full wp-image-12816\" alt=\"\" srcset=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1.png 1200w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1-300x200.png 300w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1-1024x683.png 1024w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/placeholder-1-1-768x512.png 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-18b30514 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"18b30514\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2dc226e3\" data-id=\"2dc226e3\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-345fef53 elementor-widget elementor-widget-heading\" data-id=\"345fef53\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Een aangepaste CI\/CD pipeline<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-180bb34a elementor-widget elementor-widget-text-editor\" data-id=\"180bb34a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Dus Terraform is de tool om resources uit te rollen en te beheren in de cloud. Maar hoe automatiseren we dit proces? Dat is waar de CI\/CD pipeline van GitLab om de hoek komt kijken. In de pipeline wordt een GitLab-runner gebruikt. Hier worden de door ons gespecificeerde fasen en jobs uitgevoerd. Elke fase bestaat uit \u00e9\u00e9n of meerdere jobs. In mijn voorbeeld zijn dit de fasen:<\/p>\n<ul>\n<li>Validate<\/li>\n<li>Plan for apply<\/li>\n<li>Apply<\/li>\n<li>Plan for Destroy<\/li>\n<li>Destroy<\/li>\n<\/ul>\n<p>In elke fase zijn er verschillende jobs. Een job in de Validate-fase verifieert en controleert bijvoorbeeld mijn code. Als er iets mis is in mijn code, mislukt deze fase en wordt er een melding gestuurd. Daarbij zullen de andere fasen niet draaien als de Validate-fase mislukt. Zodra mijn code correct is, gaat deze door naar de volgende fase; in dit geval \u2018Plan for Apply\u2019.<\/p>\n<p>We kunnen de GitLab-runner instellen, zodat duidelijk is welke fasen automatisch moeten draaien, en voor welke fasen handmatige interactie nodig is of welke fasen door bepaalde personen goedgekeurd moeten worden. In de onderstaande afbeelding zie je een voorbeeld van een pipeline waarin ik drie fasen heb doorlopen. De Apply-fase is de laatste van deze drie fasen, wat betekent dat ik resources voor Azure heb ingezet. Als ik de resources die ik heb ingezet wil verwijderen, moet ik handmatig op de laatste twee fasen klikken: Plan for Destroy en Destroy.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-61d2b9a1 elementor-widget elementor-widget-image\" data-id=\"61d2b9a1\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"768\" height=\"100\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_1-768x100.jpg\" class=\"attachment-medium_large size-medium_large wp-image-13482\" alt=\"Automate Public Cloud Deployments\" srcset=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_1-768x100.jpg 768w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_1-300x39.jpg 300w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_1-1024x133.jpg 1024w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_1.jpg 1097w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-53119d2a elementor-widget elementor-widget-text-editor\" data-id=\"53119d2a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Dus hoe stel je de GitLab-runner in zodat duidelijk is wat er uitgevoerd moet worden? Dit doe je met een specifiek bestand binnen de repository. Het .gitlab-ci.yml-bestand is het pipeline-configuratiebestand. In dit bestand kunnen we de runner instellen zodat duidelijk is welke fasen en jobs er uitgevoerd moeten worden en in welke volgorde. Bovendien kunnen we configureren welke fase automatisch wordt geactiveerd en in welke fase handmatige interactie nodig is.<\/p><p>Klein voorbeeld van het .gitlab-ci.yml-bestand:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-43189233 elementor-widget elementor-widget-image\" data-id=\"43189233\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"411\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_2-768x411.jpg\" class=\"attachment-medium_large size-medium_large wp-image-13485\" alt=\"Automate Public Cloud Deployments\" srcset=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_2-768x411.jpg 768w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_2-300x161.jpg 300w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_2-1024x548.jpg 1024w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_2.jpg 1080w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-602d3d44 elementor-widget elementor-widget-text-editor\" data-id=\"602d3d44\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In het bovenstaande voorbeeld zie je de verschillende fasen en de configuratie van de Validate-fase. In de Validate-fase wordt \u00e9\u00e9n regel code onder &#8216;script&#8217; gespecificeerd. Dit is een commando van Terraform en valideert mijn Terraform-code in de repository. Daarbij wordt deze fase alleen geactiveerd wanneer er in het specifieke bestand wijzigingen worden aangebracht die worden vermeld onder &#8216;changes&#8217;. Je wilt bijvoorbeeld niet dat de pipeline elke keer draait wanneer je een wijziging aanbrengt in het \u2018readme\u2019-bestand.<\/p><p>Binnen de jobs van de fase kun je zien wat de runner doet. Hieronder zie je een voorbeeld van de Validate-fase en de output van de runner.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-143184cc elementor-widget elementor-widget-image\" data-id=\"143184cc\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"721\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_3-768x721.jpg\" class=\"attachment-medium_large size-medium_large wp-image-13488\" alt=\"Automate Public Cloud Deployments\" srcset=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_3-768x721.jpg 768w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_3-300x282.jpg 300w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_3.jpg 1006w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1f8a8dfa elementor-widget elementor-widget-text-editor\" data-id=\"1f8a8dfa\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In de Terraform-versie zien we dat Terraform correct is ge\u00efnitialiseerd en dat mijn code gevalideerd\u00a0 is.<\/p><p>Als de Validate-fase is afgerond, zal de Plan for Apply-fase automatisch gaan draaien. In Terraform zie je een opzet van de resources die worden toegevoegd, gewijzigd of vernietigd. Als deze fase is afgerond, heb ik het zo geconfigureerd dat de opzet in de volgende fase niet automatisch wordt toegepast. Voor een productieomgeving wil je waarschijnlijk dat anderen de opzet eerst goedkeuren en controleren, voordat deze daadwerkelijk in Azure wordt uitgerold. Dit zou dus in mijn geval een handmatige handeling moeten zijn. In testomgevingen kun je deze opzet desgewenst automatisch toepassen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3f3050a4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3f3050a4\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5949afb3\" data-id=\"5949afb3\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7176e6e4 elementor-widget elementor-widget-heading\" data-id=\"7176e6e4\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Deployment in de public cloud<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-67b20feb elementor-widget elementor-widget-text-editor\" data-id=\"67b20feb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>GitLab moet zich authenticeren in de public cloud. In mijn geval gebruik ik Azure als voorbeeld, maar AWS en GCP gebruiken iets vergelijkbaars. In Azure heeft het de voorkeur om authenticatie via een Service Principle te doen. De inloggegevens van het Service Principle kunnen in GitLab als omgevingsvariabelen worden toegevoegd. GitLab gebruikt dit Service Principle ter authenticatie voor Azure, om vervolgens de resources uit te rollen.<\/p><p>In de onderstaande afbeelding zie je een voorbeeld van GitLab-omgevingsvariabelen die je nodig hebt om te authenticeren met Azure. Voor deze \u2018tenant\u2019 en de subscriptie gebruikt Gitlab de inloggegevens van het Service Principle.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3ee4c09b elementor-widget elementor-widget-image\" data-id=\"3ee4c09b\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"210\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_4-768x210.jpg\" class=\"attachment-medium_large size-medium_large wp-image-13491\" alt=\"Automate Public Cloud Deployments\" srcset=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_4-768x210.jpg 768w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_4-300x82.jpg 300w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_4-1024x280.jpg 1024w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_4-1536x420.jpg 1536w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_4.jpg 1551w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-15a020b8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"15a020b8\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-12f9f08d\" data-id=\"12f9f08d\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1ac7b120 elementor-widget elementor-widget-heading\" data-id=\"1ac7b120\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Let op de statefile <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-14467d5d elementor-widget elementor-widget-text-editor\" data-id=\"14467d5d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>De <a href=\"https:\/\/www.terraform.io\/docs\/language\/state\/index.html\">&#8216;statefile&#8217;<\/a> is een belangrijk onderdeel van Terraform. In dit bestand worden de werkelijke resources in je configuratie ingedeeld, metagegevens bijgehouden en prestaties van grote infrastructuren verbeterd.<\/p><p>Dit bestand wordt door Terraform standaard lokaal op je computer opgeslagen. In een teamomgeving wil je dit echter centraal op een externe dataplaats opslaan. Om het statusbestand extern op te slaan, heb je een soort storage account (Azure) of S3 bucket (AWS) nodig waar je het bestand kunt opslaan en op afstand kunt openen. In het Terraform-bestand moet je naar die opslaglocatie verwijzen. In Terraform ziet het er ongeveer zo uit:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-49347140 elementor-widget elementor-widget-image\" data-id=\"49347140\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"358\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_5-768x358.jpg\" class=\"attachment-medium_large size-medium_large wp-image-13494\" alt=\"Automate Public Cloud Deployments\" srcset=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_5-768x358.jpg 768w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_5-300x140.jpg 300w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_5-1024x478.jpg 1024w, https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/automate_public_cloud_deployments_img_5.jpg 1211w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-312d7143 elementor-widget elementor-widget-text-editor\" data-id=\"312d7143\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In dit voorbeeld kun je ook zien dat ik de Terraform-versie tussen 0.14 en 0.15 heb geconfigureerd, zodat mijn configuratie ondanks grote wijzigingen blijft gelden. Daarnaast heb ik de Azure-provider geconfigureerd omdat ik resources van Azure wil gebruiken. Ik gebruik daarom de specifieke Azure-code in mijn Terraform-bestanden. Als je resources voor een andere cloud of provider wilt inzetten, moet je deze hier specificeren.<\/p>\n<p>Nu alles op zijn plaats is, kunnen we de resources in Azure uitrollen met Terraform en onze GitLab pipeline. Daarmee voldoen we aan de kwaliteitsprincipes van de organisatie, besparen we tijd en verminderen we fouten door resources gecontroleerd uit te rollen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-38321a6f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"38321a6f\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-43146350\" data-id=\"43146350\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-62bcfe06 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"62bcfe06\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-271a92ac\" data-id=\"271a92ac\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2208e8e6 text-green elementor-widget elementor-widget-heading\" data-id=\"2208e8e6\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Meld je aan voor de Solvinity Nieuwsbrief<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1f2df76a elementor-widget elementor-widget-heading\" data-id=\"1f2df76a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h6 class=\"elementor-heading-title elementor-size-default\">Ontvang elk kwartaal het laatste nieuws, blogs, artikelen en events. Meld je aan voor onze nieuwsbrief.<\/h6>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-11ec49f elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-phone elementor-widget elementor-widget-shortcode\" data-id=\"11ec49f\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><script>\nvar gform;gform||(document.addEventListener(\"gform_main_scripts_loaded\",function(){gform.scriptsLoaded=!0}),document.addEventListener(\"gform\/theme\/scripts_loaded\",function(){gform.themeScriptsLoaded=!0}),window.addEventListener(\"DOMContentLoaded\",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>\"function\"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn(\"The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1.\"),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener(\"gform_main_scripts_loaded\",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener(\"gform\/theme\/scripts_loaded\",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener(\"DOMContentLoaded\",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook(\"action\",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook(\"filter\",o,r,e,t)},doAction:function(o){gform.doHook(\"action\",o,arguments)},applyFilters:function(o){return gform.doHook(\"filter\",o,arguments)},removeAction:function(o,r){gform.removeHook(\"action\",o,r)},removeFilter:function(o,r,e){gform.removeHook(\"filter\",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+\"_\"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){\"function\"!=typeof(t=o.callable)&&(t=window[t]),\"action\"==r?t.apply(null,e):e[0]=t.apply(null,e)})),\"filter\"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}});\n<\/script>\n\n                <div class='gf_browser_gecko gform_wrapper gform_legacy_markup_wrapper gform-theme--no-framework newsletter_wrapper' data-form-theme='legacy' data-form-index='0' id='gform_wrapper_1' ><div id='gf_1' class='gform_anchor' tabindex='-1'><\/div><form method='post' enctype='multipart\/form-data' target='gform_ajax_frame_1' id='gform_1' class='newsletter' action='\/nl\/wp-json\/wp\/v2\/blog\/13506#gf_1' data-formid='1' novalidate>\n                        <div class='gform-body gform_body'><ul id='gform_fields_1' class='gform_fields top_label form_sublabel_below description_below validation_below'><li id=\"field_1_3\" class=\"gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_1_3'>URL<\/label><div class='ginput_container'><input name='input_3' id='input_1_3' type='text' value='' autocomplete='new-password'\/><\/div><div class='gfield_description' id='gfield_description_1_3'>Dit veld is bedoeld voor validatiedoeleinden en moet niet worden gewijzigd.<\/div><\/li><li id=\"field_1_2\" class=\"gfield gfield--type-text no-label news-one-third field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_1_2'>Voornaam<\/label><div class='ginput_container ginput_container_text'><input name='input_2' id='input_1_2' type='text' value='' class='large'    placeholder='Voornaam'  aria-invalid=\"false\"   \/><\/div><\/li><li id=\"field_1_1\" class=\"gfield gfield--type-email no-label news-two-third field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_1_1'>Email<\/label><div class='ginput_container ginput_container_email'>\n                            <input name='input_1' id='input_1_1' type='email' value='' class='large'   placeholder='E-mailadres'  aria-invalid=\"false\"  \/>\n                        <\/div><\/li><\/ul><\/div>\n        <div class='gform-footer gform_footer top_label'> <input type='submit' id='gform_submit_button_1' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' value='Sign up'  \/> <input type='hidden' name='gform_ajax' value='form_id=1&amp;title=&amp;description=&amp;tabindex=0&amp;theme=legacy&amp;styles=[]&amp;hash=c622f34a3aff3e19fcb99fbe171377fe' \/>\n            <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_1' value='iframe' \/>\n            <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_1' id='gform_theme_1' value='legacy' \/>\n            <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_1' id='gform_style_settings_1' value='[]' \/>\n            <input type='hidden' class='gform_hidden' name='is_submit_1' value='1' \/>\n            <input type='hidden' class='gform_hidden' name='gform_submit' value='1' \/>\n            \n            <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' \/>\n            <input type='hidden' class='gform_hidden' name='state_1' value='WyJbXSIsIjA3ZjQ1YWY1Yjk0NTBiMjliMzYxODEwMTgzN2JkYjA1Il0=' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_1' id='gform_target_page_number_1' value='0' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_1' id='gform_source_page_number_1' value='1' \/>\n            <input type='hidden' name='gform_field_values' value='' \/>\n            \n        <\/div>\n                        <\/form>\n                        <\/div>\n\t\t                <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_1' id='gform_ajax_frame_1' title='Dit iframe bevat de vereiste logica om Ajax aangedreven Gravity Forms te verwerken.'><\/iframe>\n\t\t                <script>\ngform.initializeOnLoaded( function() {gformInitSpinner( 1, 'https:\/\/www.solvinity.com\/wp-content\/plugins\/gravityforms\/images\/spinner.svg', true );jQuery('#gform_ajax_frame_1').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_1');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_1').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_1').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_1').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_1').removeClass('gform_validation_error');}setTimeout( function() { \/* delay the scroll by 50 milliseconds to fix a bug in chrome *\/ jQuery(document).scrollTop(jQuery('#gform_wrapper_1').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_1').val();gformInitSpinner( 1, 'https:\/\/www.solvinity.com\/wp-content\/plugins\/gravityforms\/images\/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [1, current_page]);window['gf_submitting_1'] = 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_1').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_1').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [1]);window['gf_submitting_1'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_1').text());}else{jQuery('#gform_1').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger(\"gform_pre_post_render\", [{ formId: \"1\", currentPage: \"current_page\", abort: function() { this.preventDefault(); } }]);        if (event && event.defaultPrevented) {                return;        }        const gformWrapperDiv = document.getElementById( \"gform_wrapper_1\" );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( \"span\" );            visibilitySpan.id = \"gform_visibility_test_1\";            gformWrapperDiv.insertAdjacentElement( \"afterend\", visibilitySpan );        }        const visibilityTestDiv = document.getElementById( \"gform_visibility_test_1\" );        let postRenderFired = false;        function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            gform.core.triggerPostRenderEvents( 1, 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();        }    } );} );\n<\/script>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6608d1c3 custom-newsletter-ref-button elementor-widget elementor-widget-text-editor\" data-id=\"6608d1c3\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<a href=\"\/nl\/download\/solvinity-nieuwsbrief\/\">Aanmelden<\/a>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-fbfda87 elementor-widget__width-auto elementor-absolute scrolling-logo-in-colored-background elementor-widget elementor-widget-image\" data-id=\"fbfda87\" data-element_type=\"widget\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_effect&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_direction&quot;:&quot;negative&quot;,&quot;motion_fx_translateY_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:5,&quot;sizes&quot;:[]},&quot;_position&quot;:&quot;absolute&quot;,&quot;motion_fx_translateY_affectedRange&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/04\/solvinity-background-icon-2.png\" class=\"attachment-full size-full wp-image-12873\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-23f103e5 elementor-section-stretched elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"23f103e5\" data-element_type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5f613acf\" data-id=\"5f613acf\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-47756d85 elementor-widget elementor-widget-heading\" data-id=\"47756d85\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Lees ook<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-14e30e3 elementor-align-center elementor-mobile-align-center icon-right no-absolute-mobile elementor-widget__width-auto elementor-absolute elementor-widget elementor-widget-button\" data-id=\"14e30e3\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"\/resources\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-arrow-right\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">meer berichten<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4097e89a text-behind-title elementor-widget__width-inherit elementor-absolute elementor-widget elementor-widget-heading\" data-id=\"4097e89a\" data-element_type=\"widget\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_effect&quot;:&quot;yes&quot;,&quot;motion_fx_translateY_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]},&quot;_position&quot;:&quot;absolute&quot;,&quot;motion_fx_translateY_affectedRange&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Meer<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1c7c2d9e elementor-widget elementor-widget-shortcode\" data-id=\"1c7c2d9e\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><!-- Gridbuilder \u1d42\u1d3e Plugin (https:\/\/wpgridbuilder.com) -->\n<div class=\"wp-grid-builder wpgb-grid-13 equal-height-211 purple_grid\" data-options=\"{&quot;id&quot;:13,&quot;type&quot;:&quot;masonry&quot;,&quot;source&quot;:&quot;post_type&quot;,&quot;loader&quot;:false,&quot;layout&quot;:&quot;vertical&quot;,&quot;reveal&quot;:0,&quot;isMainQuery&quot;:0,&quot;lazyLoad&quot;:false,&quot;cardSizes&quot;:{&quot;9999&quot;:{&quot;columns&quot;:3,&quot;height&quot;:240,&quot;gutter&quot;:30,&quot;ratio&quot;:&quot;1.33333&quot;},&quot;1200&quot;:{&quot;columns&quot;:3,&quot;height&quot;:240,&quot;gutter&quot;:30,&quot;ratio&quot;:&quot;1.33333&quot;},&quot;992&quot;:{&quot;columns&quot;:3,&quot;height&quot;:220,&quot;gutter&quot;:30,&quot;ratio&quot;:&quot;1.33333&quot;},&quot;768&quot;:{&quot;columns&quot;:1,&quot;height&quot;:220,&quot;gutter&quot;:30,&quot;ratio&quot;:&quot;1.33333&quot;},&quot;576&quot;:{&quot;columns&quot;:1,&quot;height&quot;:200,&quot;gutter&quot;:30,&quot;ratio&quot;:&quot;1.33333&quot;},&quot;320&quot;:{&quot;columns&quot;:1,&quot;height&quot;:200,&quot;gutter&quot;:30,&quot;ratio&quot;:&quot;1.33333&quot;}},&quot;fitRows&quot;:false,&quot;equalRows&quot;:0,&quot;equalColumns&quot;:false,&quot;fillLastRow&quot;:0,&quot;centerLastRow&quot;:0,&quot;horizontalOrder&quot;:false,&quot;fullWidth&quot;:false,&quot;transitionDelay&quot;:100,&quot;gallerySlideshow&quot;:0,&quot;rowsNumber&quot;:1,&quot;slideAlign&quot;:&quot;left&quot;,&quot;groupCells&quot;:1,&quot;draggable&quot;:true,&quot;initialIndex&quot;:0,&quot;contain&quot;:false,&quot;freeScroll&quot;:false,&quot;freeFriction&quot;:&quot;0.075&quot;,&quot;friction&quot;:&quot;0.285&quot;,&quot;attraction&quot;:&quot;0.025&quot;,&quot;autoPlay&quot;:0,&quot;pageDotAriaLabel&quot;:&quot;Page dot %d&quot;,&quot;isPreview&quot;:false,&quot;isGutenberg&quot;:false,&quot;rightToLeft&quot;:false}\"><div class=\"wpgb-svg-icons\" hidden>\n\t<svg viewBox=\"0 0 120 24\" width=\"0\" height=\"0\">\n\t<defs>\n        <polygon id=\"wpgb-star-svg\" points=\"12 2.5 15.1 8.8 22 9.8 17 14.6 18.2 21.5 12 18.3 5.8 21.5 7 14.6 2 9.8 8.9 8.8\"><\/polygon>\n    <\/defs>\n    <symbol id=\"wpgb-rating-stars-svg\">\n        <use xlink:href=\"#wpgb-star-svg\"><\/use>\n        <use xlink:href=\"#wpgb-star-svg\" x=\"24\"><\/use>\n        <use xlink:href=\"#wpgb-star-svg\" x=\"48\"><\/use>\n        <use xlink:href=\"#wpgb-star-svg\" x=\"72\"><\/use>\n        <use xlink:href=\"#wpgb-star-svg\" x=\"96\"><\/use>\n    <\/symbol>\n<\/svg>\n<\/div>\n<div class=\"wpgb-wrapper\">\n\t<div class=\"wpgb-main\">\n\t<div class=\"wpgb-layout\">\n\t<div class=\"wpgb-viewport\">\n\t\t<div class=\"wpgb-masonry\">\n\t\t\t<article class=\"wpgb-card wpgb-card-12 wpgb-post-31831\" data-col=\"1\" data-row=\"1\" data-format=\"standard\"><div class=\"wpgb-card-wrapper\"><div class=\"wpgb-card-inner\" data-action><div class=\"wpgb-card-media wpgb-scheme-light\"><svg data-ratio style=\"padding-top:66.67%\" viewBox=\"0 0 768 512\"><\/svg><div class=\"wpgb-card-media-thumbnail\"><a href=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2026\/03\/Shadow-AI-blog-visual.png\" tabindex=\"-1\" class=\"wpgb-handle-lb wpgb-lightbox\" data-type=\"image\" data-rel=\"13\" data-title=\"Shadow-AI-blog-visual\" title=\"Enlarge photo\"><div style=\"background-image:url(https:\/\/www.solvinity.com\/wp-content\/uploads\/2026\/03\/Shadow-AI-blog-visual-768x512.png)\"><\/div><noscript><img loading=\"lazy\" decoding=\"async\" class=\"wpgb-noscript-img\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2026\/03\/Shadow-AI-blog-visual-768x512.png\" alt=\"\" height=\"512\" width=\"768\"><\/noscript><\/a><\/div><div class=\"wpgb-card-media-content\"><div class=\"wpgb-card-media-content-top\"><div class=\"wpgb-block-4 blog-category-grid\"><span class=\"wpgb-block-term\" data-id=\"64\">Blogs<\/span><\/div><\/div><\/div><\/div><div class=\"wpgb-card-content wpgb-scheme-dark\"><div class=\"wpgb-card-body\"><div class=\"wpgb-block-5\">12 maart 2026<\/div><h3 class=\"wpgb-block-1 wpgb-idle-scheme-1 wpgb-hover-accent-1\"><a href=\"https:\/\/www.solvinity.com\/nl\/blog\/shadow-ai-hoeveel-controle-heeft-jouw-organisatie-over-ai-gebruik\/\">Shadow AI: hoeveel controle heeft jouw organisatie over AI-gebruik?<\/a><\/h3><p class=\"wpgb-block-2 wpgb-idle-scheme-2\">Wat is Shadow AI, waarom verbieden organisaties publieke AI-tools en welke gevolgen heeft dat? Je leest...<\/p><a class=\"wpgb-block-3 grid-more-info-green\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/shadow-ai-hoeveel-controle-heeft-jouw-organisatie-over-ai-gebruik\/\">LEES MEER <i aria-hidden=\"true\" class=\"grid-more-info-green fas fa-arrow-right\"><\/i><\/a><\/div><\/div><a class=\"wpgb-card-layer-link\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/shadow-ai-hoeveel-controle-heeft-jouw-organisatie-over-ai-gebruik\/\"><\/a><\/div><\/div><\/article><article class=\"wpgb-card wpgb-card-12 wpgb-post-31353\" data-col=\"1\" data-row=\"1\" data-format=\"standard\"><div class=\"wpgb-card-wrapper\"><div class=\"wpgb-card-inner\" data-action><div class=\"wpgb-card-media wpgb-scheme-light\"><svg data-ratio style=\"padding-top:66.67%\" viewBox=\"0 0 768 512\"><\/svg><div class=\"wpgb-card-media-thumbnail\"><a href=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Hybrid-Cloud-1.png\" tabindex=\"-1\" class=\"wpgb-handle-lb wpgb-lightbox\" data-type=\"image\" data-rel=\"13\" data-title=\"Hybrid Cloud\" title=\"Enlarge photo\"><div style=\"background-image:url(https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Hybrid-Cloud-1-768x512.png)\"><\/div><noscript><img loading=\"lazy\" decoding=\"async\" class=\"wpgb-noscript-img\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Hybrid-Cloud-1-768x512.png\" alt=\"\" height=\"512\" width=\"768\"><\/noscript><\/a><\/div><div class=\"wpgb-card-media-content\"><div class=\"wpgb-card-media-content-top\"><div class=\"wpgb-block-4 blog-category-grid\"><span class=\"wpgb-block-term\" data-id=\"64\">Blogs<\/span><\/div><\/div><\/div><\/div><div class=\"wpgb-card-content wpgb-scheme-dark\"><div class=\"wpgb-card-body\"><div class=\"wpgb-block-5\">19 november 2025<\/div><h3 class=\"wpgb-block-1 wpgb-idle-scheme-1 wpgb-hover-accent-1\"><a href=\"https:\/\/www.solvinity.com\/nl\/blog\/van-versnippering-naar-overzicht-de-kracht-van-de-hybrid-cloud\/\">Van versnippering naar overzicht: de kracht van de Hybrid Cloud<\/a><\/h3><p class=\"wpgb-block-2 wpgb-idle-scheme-2\">Wat is een Hybrid Cloud en wat zijn de voordelen? Ontdek wanneer een combinatie van een...<\/p><a class=\"wpgb-block-3 grid-more-info-green\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/van-versnippering-naar-overzicht-de-kracht-van-de-hybrid-cloud\/\">LEES MEER <i aria-hidden=\"true\" class=\"grid-more-info-green fas fa-arrow-right\"><\/i><\/a><\/div><\/div><a class=\"wpgb-card-layer-link\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/van-versnippering-naar-overzicht-de-kracht-van-de-hybrid-cloud\/\"><\/a><\/div><\/div><\/article><article class=\"wpgb-card wpgb-card-12 wpgb-post-31149\" data-col=\"1\" data-row=\"1\" data-format=\"standard\"><div class=\"wpgb-card-wrapper\"><div class=\"wpgb-card-inner\" data-action><div class=\"wpgb-card-media wpgb-scheme-light\"><svg data-ratio style=\"padding-top:66.67%\" viewBox=\"0 0 768 512\"><\/svg><div class=\"wpgb-card-media-thumbnail\"><a href=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual.png\" tabindex=\"-1\" class=\"wpgb-handle-lb wpgb-lightbox\" data-type=\"image\" data-rel=\"13\" data-title=\"Blog 3 visual\" title=\"Enlarge photo\"><div style=\"background-image:url(https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual-768x512.png)\"><\/div><noscript><img loading=\"lazy\" decoding=\"async\" class=\"wpgb-noscript-img\" src=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2025\/11\/Blog-3-visual-768x512.png\" alt=\"De stille dreiging van schijnveiligheid\" height=\"512\" width=\"768\"><\/noscript><\/a><\/div><div class=\"wpgb-card-media-content\"><div class=\"wpgb-card-media-content-top\"><\/div><\/div><\/div><div class=\"wpgb-card-content wpgb-scheme-dark\"><div class=\"wpgb-card-body\"><div class=\"wpgb-block-5\">11 november 2025<\/div><h3 class=\"wpgb-block-1 wpgb-idle-scheme-1 wpgb-hover-accent-1\"><a href=\"https:\/\/www.solvinity.com\/nl\/blog\/de-stille-dreiging-van-schijnveiligheid\/\">De stille dreiging van schijnveiligheid<\/a><\/h3><p class=\"wpgb-block-2 wpgb-idle-scheme-2\">Ontdek waarom organisaties wel in maatregelen investeren, maar vaak het overzicht en de kennis missen om...<\/p><a class=\"wpgb-block-3 grid-more-info-green\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/de-stille-dreiging-van-schijnveiligheid\/\">LEES MEER <i aria-hidden=\"true\" class=\"grid-more-info-green fas fa-arrow-right\"><\/i><\/a><\/div><\/div><a class=\"wpgb-card-layer-link\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/de-stille-dreiging-van-schijnveiligheid\/\"><\/a><\/div><\/div><\/article>\t\t<\/div>\n\t<\/div>\n\t<\/div>\n\t<\/div>\n\t\t<\/div>\n<\/div>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Lees in dit blog hoe je fouten kunt verminderen, tijd kunt besparen en de kwaliteit kunt verbeteren door cloud deployments te automatiseren.<\/p>\n","protected":false},"featured_media":13469,"parent":0,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[64],"tags":[],"class_list":["post-13506","blog","type-blog","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-nl"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Hoe automatiseer je public cloud deployments - Solvinity<\/title>\n<meta name=\"description\" content=\"Lees in dit blog hoe je fouten kunt verminderen, tijd kunt besparen en de kwaliteit kunt verbeteren door cloud deployments te automatiseren.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hoe automatiseer je public cloud deployments - Solvinity\" \/>\n<meta property=\"og:description\" content=\"Lees in dit blog hoe je fouten kunt verminderen, tijd kunt besparen en de kwaliteit kunt verbeteren door cloud deployments te automatiseren.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/\" \/>\n<meta property=\"og:site_name\" content=\"Solvinity\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-19T11:29:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/pipeline_435x210.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"435\" \/>\n\t<meta property=\"og:image:height\" content=\"210\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/\",\"url\":\"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/\",\"name\":\"Hoe automatiseer je public cloud deployments - Solvinity\",\"isPartOf\":{\"@id\":\"https:\/\/www.solvinity.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/pipeline_435x210.jpeg\",\"datePublished\":\"2021-06-25T08:25:33+00:00\",\"dateModified\":\"2025-06-19T11:29:48+00:00\",\"description\":\"Lees in dit blog hoe je fouten kunt verminderen, tijd kunt besparen en de kwaliteit kunt verbeteren door cloud deployments te automatiseren.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/#primaryimage\",\"url\":\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/pipeline_435x210.jpeg\",\"contentUrl\":\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/pipeline_435x210.jpeg\",\"width\":435,\"height\":210,\"caption\":\"Public Cloyd Deployments\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.solvinity.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hoe automatiseer je public cloud deployments\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.solvinity.com\/nl\/#website\",\"url\":\"https:\/\/www.solvinity.com\/nl\/\",\"name\":\"Solvinity\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.solvinity.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.solvinity.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.solvinity.com\/nl\/#organization\",\"name\":\"Solvinity\",\"url\":\"https:\/\/www.solvinity.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/www.solvinity.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2019\/08\/solvinity-logo.png\",\"contentUrl\":\"https:\/\/www.solvinity.com\/wp-content\/uploads\/2019\/08\/solvinity-logo.png\",\"width\":344,\"height\":72,\"caption\":\"Solvinity\"},\"image\":{\"@id\":\"https:\/\/www.solvinity.com\/nl\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hoe automatiseer je public cloud deployments - Solvinity","description":"Lees in dit blog hoe je fouten kunt verminderen, tijd kunt besparen en de kwaliteit kunt verbeteren door cloud deployments te automatiseren.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/","og_locale":"nl_NL","og_type":"article","og_title":"Hoe automatiseer je public cloud deployments - Solvinity","og_description":"Lees in dit blog hoe je fouten kunt verminderen, tijd kunt besparen en de kwaliteit kunt verbeteren door cloud deployments te automatiseren.","og_url":"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/","og_site_name":"Solvinity","article_modified_time":"2025-06-19T11:29:48+00:00","og_image":[{"width":435,"height":210,"url":"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/pipeline_435x210.jpeg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Geschatte leestijd":"8 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/","url":"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/","name":"Hoe automatiseer je public cloud deployments - Solvinity","isPartOf":{"@id":"https:\/\/www.solvinity.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/#primaryimage"},"image":{"@id":"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/#primaryimage"},"thumbnailUrl":"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/pipeline_435x210.jpeg","datePublished":"2021-06-25T08:25:33+00:00","dateModified":"2025-06-19T11:29:48+00:00","description":"Lees in dit blog hoe je fouten kunt verminderen, tijd kunt besparen en de kwaliteit kunt verbeteren door cloud deployments te automatiseren.","breadcrumb":{"@id":"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/#primaryimage","url":"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/pipeline_435x210.jpeg","contentUrl":"https:\/\/www.solvinity.com\/wp-content\/uploads\/2021\/06\/pipeline_435x210.jpeg","width":435,"height":210,"caption":"Public Cloyd Deployments"},{"@type":"BreadcrumbList","@id":"https:\/\/www.solvinity.com\/nl\/blog\/hoe-automatiseer-je-public-cloud-deployments\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.solvinity.com\/nl\/"},{"@type":"ListItem","position":2,"name":"Hoe automatiseer je public cloud deployments"}]},{"@type":"WebSite","@id":"https:\/\/www.solvinity.com\/nl\/#website","url":"https:\/\/www.solvinity.com\/nl\/","name":"Solvinity","description":"","publisher":{"@id":"https:\/\/www.solvinity.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.solvinity.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/www.solvinity.com\/nl\/#organization","name":"Solvinity","url":"https:\/\/www.solvinity.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/www.solvinity.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/www.solvinity.com\/wp-content\/uploads\/2019\/08\/solvinity-logo.png","contentUrl":"https:\/\/www.solvinity.com\/wp-content\/uploads\/2019\/08\/solvinity-logo.png","width":344,"height":72,"caption":"Solvinity"},"image":{"@id":"https:\/\/www.solvinity.com\/nl\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/blog\/13506","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/types\/blog"}],"version-history":[{"count":19,"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/blog\/13506\/revisions"}],"predecessor-version":[{"id":26635,"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/blog\/13506\/revisions\/26635"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/media\/13469"}],"wp:attachment":[{"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/media?parent=13506"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/categories?post=13506"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.solvinity.com\/nl\/wp-json\/wp\/v2\/tags?post=13506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}