{"id":760,"date":"2024-10-14T10:59:09","date_gmt":"2024-10-14T08:59:09","guid":{"rendered":"https:\/\/www.nicedata.fr\/?p=760"},"modified":"2024-10-14T10:59:11","modified_gmt":"2024-10-14T08:59:11","slug":"microsoft-fabric-terraform-basic","status":"publish","type":"post","link":"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/","title":{"rendered":"Microsoft Fabric via Terraform &#8211; les Basics"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Microsoft a annonc\u00e9 r\u00e9cemment la \u00ab\u00a0Public Preview\u00a0\u00bb d&rsquo;un provider Terraform pour Microsoft Fabric. Nous allons ici tester les basics de la mise en place d&rsquo;une Infrastructure as Code (IaC) autour de Fabric !<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Cet article s\u2019inspire grandement du repository de Microsoft qui est disponible ici : <a href=\"https:\/\/github.com\/microsoft\/fabric-terraform-quickstart\">microsoft\/fabric-terraform-quickstart: Examples for using the Terraform Provider for Microsoft Fabric (github.com)<\/a><\/p>\n<\/blockquote>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Sommaire<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Intro_et_Prerequis\" >Intro et Pr\u00e9requis<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Authentification_et_autorisations\" >Authentification et autorisations<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#IaC_via_Terraform\" >IaC via Terraform<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Installation_de_Terraform\" >Installation de Terraform<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Utilisation_de_Terraform\" >Utilisation de Terraform<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Premiers_fichiers_dexemples\" >Premiers fichiers d&rsquo;exemples<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Initialisation_de_Terraform\" >Initialisation de Terraform<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Application_de_la_description\" >Application de la description<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Destruction_de_linfrastructure\" >Destruction de l&rsquo;infrastructure<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Creation_dune_capacite_Fabric_avec_Terraform\" >Cr\u00e9ation d&rsquo;une capacit\u00e9 Fabric avec Terraform<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Creation_dun_ressource_groupe_Azure\" >Cr\u00e9ation d&rsquo;un ressource groupe Azure<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Creation_de_la_capacite_Fabric\" >Cr\u00e9ation de la capacit\u00e9 Fabric<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Utilisation_des_%C2%AB_data_%C2%BB_Terraform\" >Utilisation des \u00ab\u00a0data\u00a0\u00bb Terraform<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Creation_du_workspace_et_association_de_la_capacite_Fabric\" >Cr\u00e9ation du workspace et association de la capacit\u00e9 Fabric<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#Conclusion\" >Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Intro_et_Prerequis\"><\/span>Intro et Pr\u00e9requis<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La premi\u00e8re chose \u00e0 avoir en t\u00eate \u00e0 la lecture de cet article est que tout est encore en \u00ab\u00a0beta\u00a0\u00bb, et qu&rsquo;il n&rsquo;est \u00e9videmment pas envisageable de l&rsquo;utiliser en production car tout peut encore changer, voire m\u00eame \u00eatre abandonn\u00e9 ! Cependant on aime la nouveaut\u00e9 et les exp\u00e9riences. C&rsquo;est donc le moment de plonger dans le grand bain du IaC avec Fabric !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">D&rsquo;un point de vu pratique, je me demande si je ne vais pas g\u00e9rer mes petits environnements Fabric de d\u00e9mo pour ce blog via Terraform ! Ce n&rsquo;est pas de la prod et si cela est concluant, nous \u00e9conomiserons quelques clics sur le service !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour utiliser Terraform, je vais utiliser sur une machine windows un terminal Powershell avec le module Azure CLI d&rsquo;installer. Pour ce faire, c&rsquo;est ici : <a href=\"https:\/\/learn.microsoft.com\/fr-fr\/cli\/azure\/install-azure-cli-windows?tabs=azure-cli\">Installer Azure CLI pour Windows | Microsoft Learn<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Authentification_et_autorisations\"><\/span>Authentification et autorisations<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Terraform ne peut pas intervenir \u00ab\u00a0seul\u00a0\u00bb sur les diff\u00e9rentes plateformes d&rsquo;infrastructure. Nous allons avoir besoin soit de le faire fonctionner \u00ab\u00a0en notre nom\u00a0\u00bb, soit en cr\u00e9ant un utilisateur sp\u00e9cifique. Pour la r\u00e9alisation de mes tests et d\u00e9mos personnels, je n&rsquo;ai pas besoin d&rsquo;utiliser un utilisateur particulier et j&rsquo;utilise g\u00e9n\u00e9ralement l&rsquo;authentification via \u00ab\u00a0Azure CLI\u00a0\u00bb qui demande une ouverture de session via le navigateur web et les m\u00e9thodes d&rsquo;authentification classique pour vous connecter \u00e0 votre compte Azure\/Microsoft. L&rsquo;avantage est que cela va utiliser notre compte pour toutes les actions et donc nos autorisations &#8230; si tant est que nous les ayons ! La documentation Terraform pourra nous guider : <a href=\"https:\/\/developer.hashicorp.com\/terraform\/tutorials\/azure-get-started\/azure-build#authenticate-using-the-azure-cli\">Authenticate using the Azure CLI | Terraform | HashiCorp Developer<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour une utilisation un peu plus automatis\u00e9e, s\u00e9curis\u00e9s ou dans un environnement professionnel, nous utiliserons plut\u00f4t un \u00ab\u00a0Service Principal\u00a0\u00bb \u00e0 qui nous aurons donn\u00e9 les droits ad\u00e9quats. Il peut \u00eatre n\u00e9cessaire de demander la cr\u00e9ation de ce Principal \u00e0 une \u00e9quipe d\u00e9di\u00e9e \u00e0 la cr\u00e9ation de comptes si vous n&rsquo;avez pas vous-m\u00eame tous les acc\u00e8s pour le faire. Encore une fois, la doc est l\u00e0 pour vous : <a href=\"https:\/\/developer.hashicorp.com\/terraform\/tutorials\/azure-get-started\/azure-build#create-a-service-principal\">Create a Service Principal | Terraform | HashiCorp Developer<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"IaC_via_Terraform\"><\/span>IaC via Terraform<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;id\u00e9e derri\u00e8re le IaC est de d\u00e9crire de fa\u00e7on programmatique l&rsquo;infrastructure qui h\u00e9bergera ensuite notre code. Ceci va permettre de ne pas d\u00e9pendre de quelques clics qui pourraient \u00eatre oubli\u00e9s ainsi que de versionner notre infrastructure. Il existe de nombreux outils qui peuvent \u00eatre d\u00e9di\u00e9s au cloud, au On-Prem, ou \u00e0 un \u00e9diteur pr\u00e9cis. Terrafrom est une solution multi-plateforme et cloud agnostique qui nous permet de coder une infrastructure sur des architectures diff\u00e9rentes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Terraform n&rsquo;est pas un outil qui va ex\u00e9cuter des scripts dans un certain ordre comme on pourrait le faire via Python, Powhershell ou AzureCLI. C&rsquo;est un outil ou l&rsquo;on va d\u00e9crire l&rsquo;infrastructure telle que nous la souhaitons et qui va d\u00e9finir (puis ex\u00e9cuter) les scripts n\u00e9cessaires pour atteindre l&rsquo;\u00e9tat d\u00e9crit par rapport \u00e0 un \u00e9tat actuel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour plus d&rsquo;informations, c&rsquo;est par ici : <a href=\"https:\/\/www.terraform.io\/\">Terraform by HashiCorp<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour ce faire, Terraform utilise des \u00ab\u00a0Providers\u00a0\u00bb, qui servent \u00e0 d\u00e9finir une infrastructure et faire le lien vers ces api\/scripts permettant de cr\u00e9er\/g\u00e9rer cette infrastructure. Il existe des Providers \u00ab\u00a0officiels\u00a0\u00bb faits par les \u00e9diteurs d&rsquo;infrastructure et de cloud, mais aussi des Producteurs tiers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous sommes ici car Microsoft \u00e0 fait l&rsquo;annonce de son Provider Terraform pour Fabric : <a href=\"https:\/\/blog.fabric.microsoft.com\/en-in\/blog\/announcing-the-new-terraform-provider-for-microsoft-fabric-public-preview\">Announcing the new Terraform Provider for Microsoft Fabric (Public Preview) | Microsoft Fabric Blog | Microsoft Fabric<\/a>. C&rsquo;est donc celui que nous allons essayer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Installation_de_Terraform\"><\/span>Installation de Terraform<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La documentation de Terraform est plut\u00f4t bien faite et l&rsquo;installation l&rsquo;est tout autant. Voici la documentation officielle concernant l&rsquo;installation : <a href=\"https:\/\/developer.hashicorp.com\/terraform\/install\">Install | Terraform | HashiCorp Developer<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sur un poste Windows, il suffit de t\u00e9l\u00e9charger le binaire, de la placer dans un r\u00e9pertoire d\u00e9di\u00e9 puis d&rsquo;ajouter \u00e0 la variable d&rsquo;environnement \u00ab\u00a0Path\u00a0\u00bb, le chemin en question.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois fait, pour v\u00e9rifier que tout fonctionne, nous allons ouvrir une invite de commande pour y ex\u00e9cuter la commande suivante :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\nterraform -v\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Si tout c&rsquo;est bien pass\u00e9, nous devrions avoir comme retour le num\u00e9ro de version de Terraform :<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"384\" height=\"134\" src=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-32.png?resize=384%2C134&#038;ssl=1\" alt=\"\" class=\"wp-image-762\" srcset=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-32.png?w=384&amp;ssl=1 384w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-32.png?resize=300%2C105&amp;ssl=1 300w\" sizes=\"auto, (max-width: 384px) 100vw, 384px\" \/><figcaption class=\"wp-element-caption\">terraform -v sur une installation valide<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Utilisation_de_Terraform\"><\/span>Utilisation de Terraform<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Premiers_fichiers_dexemples\"><\/span>Premiers fichiers d&rsquo;exemples<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Terraform utilise des fichiers \u00ab\u00a0.tf\u00a0\u00bb qui sont \u00e9crits au format YAML. C&rsquo;est une sorte de notation d&rsquo;objets json qui utilise une notation et une indentation assez stricte. La majorit\u00e9 des \u00e9diteurs de code ont une extension pour les fichiers Terraform qui vous aideront \u00e0 respecter cette notation. Dans nos exemples, nous allons rester tr\u00e8s simples dans nos d\u00e9finitions, nous n&rsquo;aurons donc pas vraiment de probl\u00e8me d&rsquo;\u00e9criture.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si nous \u00e9crivons souvent diff\u00e9rents fichiers, avec des noms un peu pr\u00e9cis, globalement Terraform n&rsquo;y apporte pas grande importance tant que ce qui est \u00e9crit est correcte \u00e0 l\u2019int\u00e9rieur de l&rsquo;ensemble des fichiers .tf du r\u00e9pertoire d\u2019ex\u00e9cution.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Comme dans beaucoup de projets de code, la premi\u00e8re chose que nous allons devoir d\u00e9finir, ce sont nos \u00ab\u00a0d\u00e9pendances\u00a0\u00bb. Nous allons ici principalement parler de Providers. Pour les d\u00e9finir, nous allons donc cr\u00e9er dans notre r\u00e9pertoire projet un fichier \u00ab\u00a0providers.tf\u00a0\u00bb. Ce nom va simplement nous servir \u00e0 nous rappeler que dans ce fichier nous allons d\u00e9clarer l&rsquo;ensemble de nos providers :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n# providers.tf\n\nterraform {\n  required_version = &quot;&gt;= 1.8, &lt; 2.0&quot;\n  required_providers {\n    fabric = {\n      source  = &quot;microsoft\/fabric&quot;\n      version = &quot;0.1.0-beta.4&quot;\n    }\n  }\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Dans ce block de code, nous indiquons :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>la version de Terraform. Ici nous demandons \u00e0 minima la version 1.8 mais aussi strictement inf\u00e9rieur \u00e0 2.0<\/li>\n\n\n\n<li>la liste des providers que nous utiliserons dans notre projet\n<ul class=\"wp-block-list\">\n<li>nous d\u00e9finissons ici le provider Fabric dans sa version 0.1.0-beta.4<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois nos d\u00e9pendances d\u00e9finies, nous allons commencer \u00e0 d\u00e9crire notre architecture ! La nomenclature traditionnelle est de commencer \u00e0 d\u00e9crire celle-ci dans un fichier \u00ab\u00a0main.tf\u00a0\u00bb, qui va \u00eatre notre fichier principal de description. Comme dans tout projet Fabric, nous aurons besoin d&rsquo;un workspace. Nous allons donc, dans un premier temps cr\u00e9er uniquement un workspace Fabric.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n# main.tf\n\nresource &quot;fabric_workspace&quot; &quot;ws_fabric&quot; {\n  display_name = &quot;NiceData - Fabric Terraform&quot;\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">A la ligne 3, nous d\u00e9finissions que l&rsquo;on souhaite cr\u00e9er une \u00ab\u00a0ressource\u00a0\u00bb, de type \u00ab\u00a0fabric_workspace\u00a0\u00bb, que l&rsquo;on appellera dans notre projet Terraform \u00ab\u00a0ws_fabric\u00a0\u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A la ligne 4, nous commen\u00e7ons \u00e0 d\u00e9finir les propri\u00e9t\u00e9s de notre ressource. Dans le service en ligne Fabric, la seule chose obligatoire qui nous est demand\u00e9e est le nom du workspace. Nous le d\u00e9finition ici via la propri\u00e9t\u00e9 \u00ab\u00a0display_name\u00a0\u00bb \u00e0 laquelle nous donnons la valeur \u00ab\u00a0NiceData &#8211; Fabric Terraform\u00a0\u00bb.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"462\" src=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-33.png?resize=1024%2C462&#038;ssl=1\" alt=\"\" class=\"wp-image-765\" srcset=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-33.png?resize=1024%2C462&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-33.png?resize=300%2C135&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-33.png?resize=768%2C346&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-33.png?w=1056&amp;ssl=1 1056w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Cr\u00e9ation d&rsquo;un workspace Fabric sur le portail web<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Initialisation_de_Terraform\"><\/span>Initialisation de Terraform<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La premi\u00e8re commande \u00e0 ex\u00e9cuter avec Terraform va nous servir \u00e0 initialiser notre r\u00e9pertoire projet. Pour ce faire, rien de plus simple. Il suffit d&rsquo;ouvrir notre terminal, de nous placer dans le r\u00e9pertoire de notre projet et d&rsquo;y ex\u00e9cuter la commande relativement parlante :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\nterraform init\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">le r\u00e9sultat ressemblera normalement \u00e0 quelque chose du genre :<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"706\" height=\"429\" src=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-34.png?resize=706%2C429&#038;ssl=1\" alt=\"\" class=\"wp-image-767\" srcset=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-34.png?w=706&amp;ssl=1 706w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-34.png?resize=300%2C182&amp;ssl=1 300w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><figcaption class=\"wp-element-caption\">Ex\u00e9cution de terraform init<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Globalement, cela va t\u00e9l\u00e9charger les d\u00e9pendances et instancier certains fichiers interne \u00e0 Terraform.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Application_de_la_description\"><\/span>Application de la description<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dans le monde Terraform, nous allons demander \u00e0 \u00ab\u00a0Appliquer\u00a0\u00bb notre configuration d&rsquo;infrastructure. C&rsquo;est donc assez naturellement que nous utiliserons la commande :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\nterraform apply\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Terraform va dans un premier temps analyser l&rsquo;\u00e9tat actuel de notre infrastructure et va planifier les actions qu&rsquo;il a besoin de r\u00e9aliser pour arriver \u00e0 la description de notre infrastructure. La commande \u00ab\u00a0apply\u00a0\u00bb, va donc dans un premier temps pr\u00e9senter les actions qu&rsquo;il va devoir r\u00e9aliser et vous demander si vous souhaitez vraiment r\u00e9aliser ces actions. Pour accepter nous entrerons \u00ab\u00a0yes\u00a0\u00bb :<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"304\" src=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-35.png?resize=1024%2C304&#038;ssl=1\" alt=\"\" class=\"wp-image-769\" style=\"width:1024px;height:auto\" srcset=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-35.png?resize=1024%2C304&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-35.png?resize=300%2C89&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-35.png?resize=768%2C228&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-35.png?w=1443&amp;ssl=1 1443w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">v\u00e9rification avant application finale<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Et c&rsquo;est \u00e0 ce moment que notre infrastructure commence \u00e0 se cr\u00e9er :<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"826\" height=\"114\" src=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-36.png?resize=826%2C114&#038;ssl=1\" alt=\"\" class=\"wp-image-770\" srcset=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-36.png?w=826&amp;ssl=1 826w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-36.png?resize=300%2C41&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-36.png?resize=768%2C106&amp;ssl=1 768w\" sizes=\"auto, (max-width: 826px) 100vw, 826px\" \/><figcaption class=\"wp-element-caption\">Application de notre configuration r\u00e9alis\u00e9e<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nous pouvons aller v\u00e9rifier directement dans le service : <\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"462\" src=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-37.png?resize=1024%2C462&#038;ssl=1\" alt=\"\" class=\"wp-image-771\" srcset=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-37.png?resize=1024%2C462&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-37.png?resize=300%2C135&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-37.png?resize=768%2C346&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-37.png?w=1056&amp;ssl=1 1056w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Workspace cr\u00e9\u00e9 sur le service<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Destruction_de_linfrastructure\"><\/span>Destruction de l&rsquo;infrastructure<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Maintenant que nous sommes en capacit\u00e9 de construire notre infrastructure tr\u00e8s rapidement (et sans risque de nous tromper), nous allons pouvoir d\u00e9truire celle-ci de la m\u00eame fa\u00e7on. L&rsquo;id\u00e9e c&rsquo;est que nous cr\u00e9ons r\u00e9guli\u00e8rement des infrastructures pour des POC, projets, tests ou actions limit\u00e9es dans le temps. Cependant, entre deux initiatives, l&rsquo;infrastructure n&rsquo;est plus utilis\u00e9e et peux donc soit induire un cout direct pour des ressources cloud ou r\u00e9server de la ressource qui pourraient \u00eatre octroy\u00e9 \u00e0 d&rsquo;autres initiatives (sur des serveurs de VM ou directement sur le poste d\u00e9veloppeur par exemple).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De la m\u00eame fa\u00e7on que pour appliquer notre configuration, nous allons pouvoir la d\u00e9truire tr\u00e8s simplement : <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\nterraform destroy\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Une fois encore, avant de d\u00e9truire l&rsquo;int\u00e9gralit\u00e9 de notre infrastructure, Terraform va nous d\u00e9crire ces actions et en entrant \u00ab\u00a0yes\u00a0\u00bb, nous validons la destruction.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"465\" src=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-38.png?resize=1024%2C465&#038;ssl=1\" alt=\"\" class=\"wp-image-773\" srcset=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-38.png?resize=1024%2C465&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-38.png?resize=300%2C136&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-38.png?resize=768%2C349&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-38.png?w=1145&amp;ssl=1 1145w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Destruction de notre infrastructure via Terraform<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En rafraichissant notre fen\u00eatre Fabric, nous avons cette fois une pop-up qui nous indique que nous n&rsquo;avons plus acc\u00e8s \u00e0 celui-ci. Si le message n&rsquo;est pas totalement repr\u00e9sentatif de la r\u00e9alit\u00e9, celui-ci est en fait g\u00e9n\u00e9rique sur le fait que nous n&rsquo;avons plus acc\u00e8s au workspace, peu importe la raison ! Dans les faits, le workspace \u00e9tant supprim\u00e9, nous n&rsquo;avons effectivement plus acc\u00e8s \u00e0 celui-ci.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"342\" height=\"194\" src=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-39.png?resize=342%2C194&#038;ssl=1\" alt=\"\" class=\"wp-image-774\" srcset=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-39.png?w=342&amp;ssl=1 342w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-39.png?resize=300%2C170&amp;ssl=1 300w\" sizes=\"auto, (max-width: 342px) 100vw, 342px\" \/><figcaption class=\"wp-element-caption\">Plus acc\u00e8s au workspace<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;int\u00e9gralit\u00e9 du code de cette premi\u00e8re partie se trouve sur le github d\u00e9di\u00e9 : <a href=\"https:\/\/github.com\/experiences-it\/MsFabric_Terraform\/tree\/main\/fabric_101\">MsFabric_Terraform | fabric_101<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Creation_dune_capacite_Fabric_avec_Terraform\"><\/span>Cr\u00e9ation d&rsquo;une capacit\u00e9 Fabric avec Terraform<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si la cr\u00e9ation d&rsquo;un workspace est une \u00e9tape importante, cela ne nous aidera pas beaucoup dans nos travaux avec Fabric ! Ce qui fera vraiment la diff\u00e9rence sera la cr\u00e9ation et l&rsquo;assignation d&rsquo;une capacit\u00e9 Fabric \u00e0 un workspace. Et nous allons devoir passer par la case ressource group pour faire ca bien !<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Creation_dun_ressource_groupe_Azure\"><\/span>Cr\u00e9ation d&rsquo;un ressource groupe Azure<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Avant toutes choses, une capacit\u00e9 Fabric \u00e9tant une ressource Azure, il va nous falloir un ressource groupe dans lequel h\u00e9berger notre capacit\u00e9. Pour manipuler nos ressources Azure, nous allons utiliser le Azure Ressource Manager (azurerm). Et notre fichier \u00ab\u00a0providers.tf\u00a0\u00bb sera d\u00e9clar\u00e9 de la sorte :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n# providers.tf\n\nterraform {\n  required_version = &quot;&gt;= 1.8, &lt; 2.0&quot;\n  required_providers {\n    azurerm = {\n      source  = &quot;hashicorp\/azurerm&quot;\n      version = &quot;4.4.0&quot;\n    }\n  }\n}\n\nprovider &quot;azurerm&quot; {\n  features {}\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Vous remarquerez la section provider qui est nouvelle pour nous. Elle sert \u00e0 configurer le provider en question. Ce block est n\u00e9cessaire m\u00eame si nous ne souhaitons rien configurer de particulier. Ici nous pourrions par exemple d\u00e9clarer la souscription et le tenant \u00e0 utiliser. Nous l&rsquo;avons dans notre cas d\u00e9j\u00e0 d\u00e9clar\u00e9 en tant que variables d&rsquo;environnements et n&rsquo;avons pas \u00e0 les surcharger.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il est maintenant temps de d\u00e9clarer ce ressource group dans notre fichier \u00ab\u00a0main.tf\u00a0\u00bb<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# main.tf\n\nresource &quot;azurerm_resource_group&quot; &quot;rg-fabric&quot; {\n  name     = &quot;rg-nicedata-fabricterraform&quot;\n  location = &quot;France central&quot;\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Nous n&rsquo;allons pas h\u00e9siter \u00e0 tester notre configuration \u00e0 chaque \u00e9tape avec un terraform apply (et init pour la premi\u00e8re ex\u00e9cution, ou modification des providers) :<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"367\" src=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-40.png?resize=1024%2C367&#038;ssl=1\" alt=\"\" class=\"wp-image-777\" srcset=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-40.png?resize=1024%2C367&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-40.png?resize=300%2C108&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-40.png?resize=768%2C275&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-40.png?w=1476&amp;ssl=1 1476w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Application de notre configuration Terraform pour cr\u00e9er notre ressource group Azure<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Un tour du c\u00f4t\u00e9 d&rsquo;azure nous montrera notre ressource groupe cr\u00e9\u00e9 dans la bonne souscription :<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"667\" src=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-41.png?resize=1024%2C667&#038;ssl=1\" alt=\"\" class=\"wp-image-778\" srcset=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-41.png?resize=1024%2C667&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-41.png?resize=300%2C195&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-41.png?resize=768%2C500&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-41.png?w=1036&amp;ssl=1 1036w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">visualisation du ressource group cr\u00e9\u00e9 dans le portail Azure <\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Creation_de_la_capacite_Fabric\"><\/span>Cr\u00e9ation de la capacit\u00e9 Fabric<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nous allons continuer la description en ajoutant cette fois notre capacit\u00e9 Fabric. Oui, nous y sommes enfin !!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous commen\u00e7ons par l&rsquo;ajout des providers n\u00e9cessaires. En ajoutant uniquement le provider \u00ab\u00a0fabric\u00a0\u00bb, j&rsquo;ai des erreurs m&rsquo;indiquant qu&rsquo;il me manque \u00ab\u00a0azapi\u00a0\u00bb &#8230; Nous travaillons sur un outil en b\u00eata et je ne suis pas forc\u00e9ment choqu\u00e9 que ce \u00ab\u00a0Azure API\u00a0\u00bb soit utilis\u00e9 quelque part. Nous allons donc le rajouter a nos d\u00e9finitions pour que tout le monde soit contant !<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n# providers.tf\n\nterraform {\n  required_version = &quot;&gt;= 1.8, &lt; 2.0&quot;\n  required_providers {\n    azurerm = {\n      source  = &quot;hashicorp\/azurerm&quot;\n      version = &quot;4.4.0&quot;\n    }\n    azapi = {\n      source  = &quot;Azure\/azapi&quot;\n      version = &quot;1.15.0&quot;\n    }\n    fabric = {\n      source  = &quot;microsoft\/fabric&quot;\n      version = &quot;0.1.0-beta.4&quot;\n    }\n  }\n}\n\nprovider &quot;azurerm&quot; {\n  features {}\n}\nprovider &quot;fabric&quot; {\n\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Pour d\u00e9crire notre capacit\u00e9, la petite subtilit\u00e9 sera que comme une capacit\u00e9 Fabric doit \u00eatre dans un ressource groupe, nous allons devoir passer l&rsquo;id de notre ressource groupe \u00e0 notre capacit\u00e9. Ici, nous allons pouvoir profiter de la puissance de Terraform pour lui passer un \u00ab\u00a0chemin de variable\u00a0\u00bb pour indiquer \u00e0 Terraform ce qu&rsquo;il doit envoyer \u00e0 notre ressource. C&rsquo;est maintenant que nous comprenons l&rsquo;int\u00e9r\u00eat de \u00ab\u00a0nommer\u00a0\u00bb nos ressources Terraform. Nous avons nomm\u00e9, dans Terraform, notre ressource groupe \u00ab\u00a0rg-fabric\u00a0\u00bb (attention, ce n&rsquo;est pas le nom du ressource groupe azure, mais bien le nom de la ressource Terraform !) et cette ressource poss\u00e8de une variable nomm\u00e9e \u00ab\u00a0id\u00a0\u00bb. nous pourrons donc connaitre l&rsquo;id\u00e9e de notre groupe de ressource de la mani\u00e8re suivante :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n#&#x5B;ressourcetype].&#x5B;ressourcename].&#x5B;variablename]\nazurerm_resource_group.rg-fabric.id\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Pour la configuration de notre capacit\u00e9, nous allons d\u00e9finir plusieurs param\u00e8tres et notamment :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>les classiques : \n<ul class=\"wp-block-list\">\n<li>nom &#8211; attention aux r\u00e8gles sp\u00e9cifiques de nommage de chaque type de ressource<\/li>\n\n\n\n<li>localisation<\/li>\n\n\n\n<li>ressource groupe<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>les sp\u00e9cifiques\n<ul class=\"wp-block-list\">\n<li>SKU (la \u00ab\u00a0taille\u00a0\u00bb)<\/li>\n\n\n\n<li>les utilisateurs, notamment administrateur<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Voici \u00e0 quoi va ressembler notre main.tf :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# main.tf\n\nresource &quot;azurerm_resource_group&quot; &quot;rg-fabric&quot; {\n  name     = &quot;rg-nicedata-fabricterraform&quot;\n  location = &quot;France central&quot;\n}\n\nresource &quot;azapi_resource&quot; &quot;fc-fabric&quot; {\n  type                      = &quot;Microsoft.Fabric\/capacities@2023-11-01&quot;\n  name                      = &quot;fcnicedatafabricterraform&quot;\n  parent_id                 = azurerm_resource_group.rg-fabric.id\n  location                  = &quot;France central&quot;\n\n\n\n  body = {\n    sku = {\n      name = &quot;F2&quot;\n      tier = &quot;Fabric&quot;\n    }\n    properties = {\n      administration = {\n        members = &#x5B;\n          &quot;&#x5B;UPN de l&#039;administrateur]&quot;\n        ]\n      }\n    }\n  }\n}\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Utilisation_des_%C2%AB_data_%C2%BB_Terraform\"><\/span>Utilisation des \u00ab\u00a0data\u00a0\u00bb Terraform<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dans la section pr\u00e9c\u00e9dente, nous avons mis en dure l&rsquo;UPN d&rsquo;un utilisateur (probablement notre mail), et cela n&rsquo;est \u00e9videmment pas une bonne pratique ! Nous allons donc utiliser une autre fonctionnalit\u00e9 de Terraform que sont les \u00ab\u00a0data\u00a0\u00bb. L&rsquo;id\u00e9e est de faire une sorte d&rsquo;appel api et de stocker le r\u00e9sultat dans une variable utilisable par la suite. Dans le cas pr\u00e9sent, nous allons \u00ab\u00a0appeler une api\u00a0\u00bb Microsoft Entra pour avoir des informations sur l&rsquo;utilisateur connect\u00e9, tel que le \u00ab\u00a0user_principal_name\u00a0\u00bb \u00e0 passer \u00e0 notre capacit\u00e9 Fabric ! (Cet appel va lui-m\u00eame demander des informations sur le client azure rm)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">cela nous donne pour la partie provider, l&rsquo;ajout de \u00ab\u00a0hashicorp\/azuread\u00a0\u00bb :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# providers.tf\n\nterraform {\n  required_version = &quot;&gt;= 1.8, &amp;lt; 2.0&quot;\n  required_providers {\n    azurerm = {\n      source  = &quot;hashicorp\/azurerm&quot;\n      version = &quot;4.4.0&quot;\n    }\n    azapi = {\n      source  = &quot;Azure\/azapi&quot;\n      version = &quot;1.15.0&quot;\n    }\n    azuread = {\n      source  = &quot;hashicorp\/azuread&quot;\n      version = &quot;3.0.2&quot;\n    }\n    fabric = {\n      source  = &quot;microsoft\/fabric&quot;\n      version = &quot;0.1.0-beta.4&quot;\n    }\n  }\n}\n\nprovider &quot;azurerm&quot; {\n  features {}\n}\nprovider &quot;fabric&quot; {\n\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Puis, c\u00f4t\u00e9 main.tf, nous avons ajout\u00e9 les deux cr\u00e9ations de \u00ab\u00a0data\u00a0\u00bb et l&rsquo;utilisation de ces donn\u00e9es notamment pour le UPN pour la capacit\u00e9 Fabric :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# main.tf\n\ndata &quot;azurerm_client_config&quot; &quot;rmclient&quot; {}\ndata &quot;azuread_user&quot; &quot;user&quot; {\n  object_id = data.azurerm_client_config.rmclient.object_id\n}\n\nresource &quot;azurerm_resource_group&quot; &quot;rg-fabric&quot; {\n  name     = &quot;rg-nicedata-fabricterraform&quot;\n  location = &quot;France central&quot;\n}\nresource &quot;azapi_resource&quot; &quot;fc-fabric&quot; {\n  type                      = &quot;Microsoft.Fabric\/capacities@2023-11-01&quot;\n  name                      = &quot;fcnicedatafabricterraform&quot;\n  parent_id                 = azurerm_resource_group.rg-fabric.id\n  location                  = &quot;France central&quot;\n\n\n  body = {\n    sku = {\n      name = &quot;F2&quot;\n      tier = &quot;Fabric&quot;\n    }\n    properties = {\n      administration = {\n        members = &#x5B;\n          data.azuread_user.user.user_principal_name\n        ]\n      }\n    }\n  }\n}\n<\/pre><\/div>\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Attention, lors de la cr\u00e9ation de la capacit\u00e9 azure, celle-ci est au statut \u00ab\u00a0active\u00a0\u00bb et peux engendrer des co\u00fbts. Il faut bien penser \u00e0 la mettre en pause ou la supprimer (terraform destroy !!!) lorsque nous ne l&rsquo;utilisons pas.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons donc maintenant une capacit\u00e9 Fabric cr\u00e9\u00e9e et active dans notre ressource groupe :<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"282\" src=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-42.png?resize=1024%2C282&#038;ssl=1\" alt=\"\" class=\"wp-image-779\" srcset=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-42.png?resize=1024%2C282&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-42.png?resize=300%2C83&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-42.png?resize=768%2C212&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-42.png?w=1309&amp;ssl=1 1309w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Notre capacit\u00e9 Fabric dans notre ressource groupe<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Creation_du_workspace_et_association_de_la_capacite_Fabric\"><\/span>Cr\u00e9ation du workspace et association de la capacit\u00e9 Fabric<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nous allons r\u00e9utiliser ce que nous avons fait dans la premi\u00e8re partie de cet article et juste ajouter une nouvelle data Terraform, pour r\u00e9cup\u00e9rer l&rsquo;id de notre capacit\u00e9 Fabric et la passer \u00e0 notre workspace :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# main.tf\n\ndata &quot;azurerm_client_config&quot; &quot;rmclient&quot; {}\ndata &quot;azuread_user&quot; &quot;user&quot; {\n  object_id = data.azurerm_client_config.rmclient.object_id\n}\n\nresource &quot;azurerm_resource_group&quot; &quot;rg-fabric&quot; {\n  name     = &quot;rg-nicedata-fabricterraform&quot;\n  location = &quot;France central&quot;\n}\nresource &quot;azapi_resource&quot; &quot;fc-fabric&quot; {\n  type                      = &quot;Microsoft.Fabric\/capacities@2023-11-01&quot;\n  name                      = &quot;fcnicedatafabricterraform&quot;\n  parent_id                 = azurerm_resource_group.rg-fabric.id\n  location                  = &quot;France central&quot;\n\n\n  body = {\n    sku = {\n      name = &quot;F2&quot;\n      tier = &quot;Fabric&quot;\n    }\n    properties = {\n      administration = {\n        members = &#x5B;\n          data.azuread_user.user.user_principal_name\n        ]\n      }\n    }\n  }\n}\n\ndata &quot;fabric_capacity&quot; &quot;fc-fabric&quot; {\n  display_name = azapi_resource.fc-fabric.name\n}\n\nresource &quot;fabric_workspace&quot; &quot;ws-fabric&quot; {\n  capacity_id  = data.fabric_capacity.fc-fabric.id\n  display_name = &quot;NiceData - Fabric Terraform&quot;\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Attention, afin d&rsquo;associer notre capacit\u00e9 Fabric \u00e0 notre workspace, il est imp\u00e9ratif que la capacit\u00e9 soit active. Si nous l&rsquo;avons d\u00e9j\u00e0 cr\u00e9\u00e9e puis mise en pause, nous aurons une erreur lors de la cr\u00e9ation du workspace : \u00ab\u00a0Could not create resource: Target capacity is not in active state\u00a0\u00bb. Il nous faudra soit la r\u00e9activer, soit la d\u00e9truire pour qu&rsquo;elle soit recr\u00e9\u00e9e.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons maintenant un environnement complet :<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"554\" src=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-43.png?resize=1024%2C554&#038;ssl=1\" alt=\"\" class=\"wp-image-780\" srcset=\"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-43.png?resize=1024%2C554&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-43.png?resize=300%2C162&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-43.png?resize=768%2C415&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/image-43.png?w=1359&amp;ssl=1 1359w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Notre workspace avec la capacit\u00e9 Fabric associ\u00e9e<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;int\u00e9gralit\u00e9 du code de cette seconde partie se trouve sur le github d\u00e9di\u00e9 : <a href=\"https:\/\/github.com\/experiences-it\/MsFabric_Terraform\/tree\/main\/fabric_capacity%26ws\">MsFabric_Terraform | fabric_capacity&amp;ws<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons vu dans cet article comment automatiser la cr\u00e9ation (et la suppression) d&rsquo;un environnement de travail Fabric. Si l&rsquo;\u00e9criture du code servant \u00e0 d\u00e9crire notre architecture peut prendre un peu de temps au d\u00e9marrage, il faut bien voir que le but et d&rsquo;acc\u00e9l\u00e9rer les d\u00e9ploiements futurs. Aujourd&rsquo;hui, pour cr\u00e9er un petit environnement de test, il ne me faut que 20 secondes pour tout cr\u00e9er et tout d\u00e9truire \u00e0 la fin de ma journ\u00e9e !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Evidemment dans cet article nous avons fait les choses \u00ab\u00a0simples\u00a0\u00bb. Nous avons deux axes \u00e0 travailler :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>L&rsquo;utilisation de variables dans Terraform afin de rendre le tout un peu plus exploitable. A l&rsquo;instant le nom de nos ressources sont en dur !!<\/li>\n\n\n\n<li>L&rsquo;exploitation et la manipulation des objets fabric ! Configuration d&rsquo;un repos git, d\u00e9ploiement de notebook Spark, de lakehouse et autre &#8230; !<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Microsoft a annonc\u00e9 tr\u00e8s r\u00e9cemment la \u00ab\u00a0Public Preview\u00a0\u00bb d&rsquo;un provider Terraform pour Microsoft Fabric. Nous allons ici tester les basics de la mise en place d&rsquo;une Infrastructure as Code (IaC) autour de Fabric !<\/p>\n","protected":false},"author":2,"featured_media":784,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[83],"tags":[87,86,84,85],"class_list":["post-760","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft-fabric","tag-iac","tag-infrastructure-as-code","tag-microsoft-fabric","tag-terraform"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Microsoft Fabric via Terraform - les Basics - NiceData<\/title>\n<meta name=\"description\" content=\"Microsoft a annonc\u00e9 tr\u00e8s r\u00e9cemment la &quot;Public Preview&quot; d&#039;un provider Terraform pour Microsoft Fabric. Nous allons ici tester les basics de la mise en place d&#039;une Infrastructure as Code (IaC) autour de Fabric !\" \/>\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.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Microsoft Fabric via Terraform - les Basics - NiceData\" \/>\n<meta property=\"og:description\" content=\"Microsoft a annonc\u00e9 tr\u00e8s r\u00e9cemment la &quot;Public Preview&quot; d&#039;un provider Terraform pour Microsoft Fabric. Nous allons ici tester les basics de la mise en place d&#039;une Infrastructure as Code (IaC) autour de Fabric !\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/\" \/>\n<meta property=\"og:site_name\" content=\"NiceData\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-14T08:59:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-14T08:59:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/TerraformPlusFabric.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1282\" \/>\n\t<meta property=\"og:image:height\" content=\"722\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jean-Laurent Ferralis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JLFerralis\" \/>\n<meta name=\"twitter:site\" content=\"@JLFerralis\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jean-Laurent Ferralis\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/2024\\\/10\\\/14\\\/microsoft-fabric-terraform-basic\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/2024\\\/10\\\/14\\\/microsoft-fabric-terraform-basic\\\/\"},\"author\":{\"name\":\"Jean-Laurent Ferralis\",\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/#\\\/schema\\\/person\\\/8d1ad38004d3b0cf6bff7c200c795e19\"},\"headline\":\"Microsoft Fabric via Terraform &#8211; les Basics\",\"datePublished\":\"2024-10-14T08:59:09+00:00\",\"dateModified\":\"2024-10-14T08:59:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/2024\\\/10\\\/14\\\/microsoft-fabric-terraform-basic\\\/\"},\"wordCount\":2710,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/2024\\\/10\\\/14\\\/microsoft-fabric-terraform-basic\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/www.nicedata.fr\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/TerraformPlusFabric.png?fit=1282%2C722&ssl=1\",\"keywords\":[\"IaC\",\"Infrastructure as code\",\"Microsoft Fabric\",\"Terraform\"],\"articleSection\":[\"Microsoft Fabric\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/2024\\\/10\\\/14\\\/microsoft-fabric-terraform-basic\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/2024\\\/10\\\/14\\\/microsoft-fabric-terraform-basic\\\/\",\"url\":\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/2024\\\/10\\\/14\\\/microsoft-fabric-terraform-basic\\\/\",\"name\":\"Microsoft Fabric via Terraform - les Basics - NiceData\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/2024\\\/10\\\/14\\\/microsoft-fabric-terraform-basic\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/2024\\\/10\\\/14\\\/microsoft-fabric-terraform-basic\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/www.nicedata.fr\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/TerraformPlusFabric.png?fit=1282%2C722&ssl=1\",\"datePublished\":\"2024-10-14T08:59:09+00:00\",\"dateModified\":\"2024-10-14T08:59:11+00:00\",\"description\":\"Microsoft a annonc\u00e9 tr\u00e8s r\u00e9cemment la \\\"Public Preview\\\" d'un provider Terraform pour Microsoft Fabric. Nous allons ici tester les basics de la mise en place d'une Infrastructure as Code (IaC) autour de Fabric !\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/2024\\\/10\\\/14\\\/microsoft-fabric-terraform-basic\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/2024\\\/10\\\/14\\\/microsoft-fabric-terraform-basic\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/2024\\\/10\\\/14\\\/microsoft-fabric-terraform-basic\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/www.nicedata.fr\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/TerraformPlusFabric.png?fit=1282%2C722&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/www.nicedata.fr\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/TerraformPlusFabric.png?fit=1282%2C722&ssl=1\",\"width\":1282,\"height\":722,\"caption\":\"Terraform + Fabric\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/2024\\\/10\\\/14\\\/microsoft-fabric-terraform-basic\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.nicedata.fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Microsoft Fabric via Terraform &#8211; les Basics\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/#website\",\"url\":\"https:\\\/\\\/www.nicedata.fr\\\/\",\"name\":\"NiceData\",\"description\":\"L&#039;expertise Data du sud\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.nicedata.fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/#organization\",\"name\":\"NiceData\",\"url\":\"https:\\\/\\\/www.nicedata.fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/www.nicedata.fr\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/NICE-DATA_JLFMod.webp?fit=2493%2C1249&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/www.nicedata.fr\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/NICE-DATA_JLFMod.webp?fit=2493%2C1249&ssl=1\",\"width\":2493,\"height\":1249,\"caption\":\"NiceData\"},\"image\":{\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/JLFerralis\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.nicedata.fr\\\/#\\\/schema\\\/person\\\/8d1ad38004d3b0cf6bff7c200c795e19\",\"name\":\"Jean-Laurent Ferralis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cbfdae273d44fb82b902a3451eb0db37485119e34cb70c1fdd186c9b731b9f3?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cbfdae273d44fb82b902a3451eb0db37485119e34cb70c1fdd186c9b731b9f3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cbfdae273d44fb82b902a3451eb0db37485119e34cb70c1fdd186c9b731b9f3?s=96&d=mm&r=g\",\"caption\":\"Jean-Laurent Ferralis\"},\"description\":\"French Data Professionnal - BI consultant and #sql lover. I also #swimbikerun when possible ! Living in @villedenice\",\"sameAs\":[\"http:\\\/\\\/xp-it.com\"],\"url\":\"https:\\\/\\\/www.nicedata.fr\\\/index.php\\\/author\\\/jlf\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Microsoft Fabric via Terraform - les Basics - NiceData","description":"Microsoft a annonc\u00e9 tr\u00e8s r\u00e9cemment la \"Public Preview\" d'un provider Terraform pour Microsoft Fabric. Nous allons ici tester les basics de la mise en place d'une Infrastructure as Code (IaC) autour de Fabric !","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.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/","og_locale":"fr_FR","og_type":"article","og_title":"Microsoft Fabric via Terraform - les Basics - NiceData","og_description":"Microsoft a annonc\u00e9 tr\u00e8s r\u00e9cemment la \"Public Preview\" d'un provider Terraform pour Microsoft Fabric. Nous allons ici tester les basics de la mise en place d'une Infrastructure as Code (IaC) autour de Fabric !","og_url":"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/","og_site_name":"NiceData","article_published_time":"2024-10-14T08:59:09+00:00","article_modified_time":"2024-10-14T08:59:11+00:00","og_image":[{"width":1282,"height":722,"url":"https:\/\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/TerraformPlusFabric.png","type":"image\/png"}],"author":"Jean-Laurent Ferralis","twitter_card":"summary_large_image","twitter_creator":"@JLFerralis","twitter_site":"@JLFerralis","twitter_misc":{"\u00c9crit par":"Jean-Laurent Ferralis","Dur\u00e9e de lecture estim\u00e9e":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#article","isPartOf":{"@id":"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/"},"author":{"name":"Jean-Laurent Ferralis","@id":"https:\/\/www.nicedata.fr\/#\/schema\/person\/8d1ad38004d3b0cf6bff7c200c795e19"},"headline":"Microsoft Fabric via Terraform &#8211; les Basics","datePublished":"2024-10-14T08:59:09+00:00","dateModified":"2024-10-14T08:59:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/"},"wordCount":2710,"commentCount":0,"publisher":{"@id":"https:\/\/www.nicedata.fr\/#organization"},"image":{"@id":"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/TerraformPlusFabric.png?fit=1282%2C722&ssl=1","keywords":["IaC","Infrastructure as code","Microsoft Fabric","Terraform"],"articleSection":["Microsoft Fabric"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/","url":"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/","name":"Microsoft Fabric via Terraform - les Basics - NiceData","isPartOf":{"@id":"https:\/\/www.nicedata.fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#primaryimage"},"image":{"@id":"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/TerraformPlusFabric.png?fit=1282%2C722&ssl=1","datePublished":"2024-10-14T08:59:09+00:00","dateModified":"2024-10-14T08:59:11+00:00","description":"Microsoft a annonc\u00e9 tr\u00e8s r\u00e9cemment la \"Public Preview\" d'un provider Terraform pour Microsoft Fabric. Nous allons ici tester les basics de la mise en place d'une Infrastructure as Code (IaC) autour de Fabric !","breadcrumb":{"@id":"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#primaryimage","url":"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/TerraformPlusFabric.png?fit=1282%2C722&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/TerraformPlusFabric.png?fit=1282%2C722&ssl=1","width":1282,"height":722,"caption":"Terraform + Fabric"},{"@type":"BreadcrumbList","@id":"https:\/\/www.nicedata.fr\/index.php\/2024\/10\/14\/microsoft-fabric-terraform-basic\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.nicedata.fr\/"},{"@type":"ListItem","position":2,"name":"Microsoft Fabric via Terraform &#8211; les Basics"}]},{"@type":"WebSite","@id":"https:\/\/www.nicedata.fr\/#website","url":"https:\/\/www.nicedata.fr\/","name":"NiceData","description":"L&#039;expertise Data du sud","publisher":{"@id":"https:\/\/www.nicedata.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.nicedata.fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.nicedata.fr\/#organization","name":"NiceData","url":"https:\/\/www.nicedata.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.nicedata.fr\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/11\/NICE-DATA_JLFMod.webp?fit=2493%2C1249&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/11\/NICE-DATA_JLFMod.webp?fit=2493%2C1249&ssl=1","width":2493,"height":1249,"caption":"NiceData"},"image":{"@id":"https:\/\/www.nicedata.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/JLFerralis"]},{"@type":"Person","@id":"https:\/\/www.nicedata.fr\/#\/schema\/person\/8d1ad38004d3b0cf6bff7c200c795e19","name":"Jean-Laurent Ferralis","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/3cbfdae273d44fb82b902a3451eb0db37485119e34cb70c1fdd186c9b731b9f3?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3cbfdae273d44fb82b902a3451eb0db37485119e34cb70c1fdd186c9b731b9f3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3cbfdae273d44fb82b902a3451eb0db37485119e34cb70c1fdd186c9b731b9f3?s=96&d=mm&r=g","caption":"Jean-Laurent Ferralis"},"description":"French Data Professionnal - BI consultant and #sql lover. I also #swimbikerun when possible ! Living in @villedenice","sameAs":["http:\/\/xp-it.com"],"url":"https:\/\/www.nicedata.fr\/index.php\/author\/jlf\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.nicedata.fr\/wp-content\/uploads\/2024\/10\/TerraformPlusFabric.png?fit=1282%2C722&ssl=1","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.nicedata.fr\/index.php\/wp-json\/wp\/v2\/posts\/760","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nicedata.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nicedata.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nicedata.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nicedata.fr\/index.php\/wp-json\/wp\/v2\/comments?post=760"}],"version-history":[{"count":12,"href":"https:\/\/www.nicedata.fr\/index.php\/wp-json\/wp\/v2\/posts\/760\/revisions"}],"predecessor-version":[{"id":787,"href":"https:\/\/www.nicedata.fr\/index.php\/wp-json\/wp\/v2\/posts\/760\/revisions\/787"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nicedata.fr\/index.php\/wp-json\/wp\/v2\/media\/784"}],"wp:attachment":[{"href":"https:\/\/www.nicedata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=760"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nicedata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=760"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nicedata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=760"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}