{"id":43534,"date":"2026-03-23T18:50:46","date_gmt":"2026-03-23T17:50:46","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=43534"},"modified":"2026-03-23T18:50:48","modified_gmt":"2026-03-23T17:50:48","slug":"how-to-standardize-sql-server-disks-on-vms-using-ansible","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/","title":{"rendered":"How to Standardize SQL Server Disks on VMs using Ansible"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"h-introduction\">INTRODUCTION<\/h2>\n\n\n\n<p>Today, the benefits of automation no longer need much explanation: saving time, reducing human error, and ensuring every environment remains aligned with internal standards. What is less obvious, however, is how using an Ansible Playbook can provide advantages that more traditional scripting approaches \u2014 such as large PowerShell scripts \u2014 struggle to offer. That is exactly what I want to explore here.<\/p>\n\n\n\n<p>When you complete an automated deployment of a SQL Server environment on Windows Server, there is a real sense of achievement. You have invested time and effort, and you expect that investment to pay off thanks to the reliability and repeatability of automation.<\/p>\n\n\n\n<p>But everything changes when the next Windows Server upgrade or SQL Server version arrives\u2026 or when corporate standards evolve. Suddenly, you need to reopen a multi-thousand\u2011line PowerShell script and:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Integrate the required changes while keeping execution stable,<\/li>\n\n\n\n<li>Avoid subtle but potentially critical regressions,<\/li>\n\n\n\n<li>Maintain clear and usable logging,<\/li>\n\n\n\n<li>Retest the entire automation workflow,<\/li>\n\n\n\n<li>Troubleshoot new issues introduced by the modifications.<\/li>\n<\/ul>\n\n\n\n<p>This is precisely the type of situation where Ansible becomes a far better long\u2011term investment. Its architecture and philosophy offer several advantages:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Native idempotence, ensuring the same result even after multiple runs,<\/li>\n\n\n\n<li>A declarative YAML approach, focusing on the desired end state rather than the execution steps,<\/li>\n\n\n\n<li>Windows Server and SQL Server modules, providing built\u2011in idempotence and saving significant time,<\/li>\n\n\n\n<li>Agentless connectivity, simplifying deployment on new machines,<\/li>\n\n\n\n<li>A modular structure (roles, modules, variables), making adaptation and reuse of your automation much easier.<\/li>\n<\/ul>\n\n\n\n<p>In this article, I will give you a concrete overview by walking you through how to configure the disks required for SQL Server using Ansible.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-1-map-iscsi-controllers-to-disk-numbers\">1-Map iSCSI controllers to disk numbers<\/h2>\n\n\n\n<p>When developing an Ansible Playbook, one fundamental principle is to design for idempotence from the very start\u2014not just rely on idempotent modules.<\/p>\n\n\n\n<p>On Windows, disk numbering is not guaranteed: it depends on several factors \u2013 how disks are detected at startup, the firmware, and so on.<br>As a result, disk numbers may change from one reboot to another.<\/p>\n\n\n\n<p>To ensure consistent and reliable execution of your deployment, this behavior must be accounted for directly in the design of your Playbook.<br>Otherwise, it may introduce wrong behaviors, and lead to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>formatting the wrong disk,<\/li>\n\n\n\n<li>mounting volumes on incorrect devices,<\/li>\n\n\n\n<li>completely breaking the SQL Server provisioning workflow.<\/li>\n<\/ul>\n\n\n\n<p>In other words, idempotence is no longer guaranteed.<\/p>\n\n\n\n<p>To ensure stable and predictable executions, you must determine dynamically the correct disk numbering at each execution.<br><\/p>\n\n\n\n<p>You can use Get-Disk PowerShell command to achieve your goal, by searching iSCSI controller number and LUN position from Location property.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; gutter: false; title: ; notranslate\" title=\"\">\n$adapter = {{ disk.adapter }}\n$lun = {{ disk.lun}}\n(Get-Disk | Where-Object {\n      $_.Location -match &quot;Adapter $adapter\\s+:.*\\s+LUN $lun&quot;\n    }).number\n<\/pre><\/div>\n\n\n<p>We have done our mapping between VM specifications and Windows disk numbers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-2-loop-sql-server-disks\">2-Loop SQL Server disks<\/h2>\n\n\n\n<p>Since we often have several disks to configure \u2014 Data, Logs, TempDB \u2014 we need to perform the same actions repeatedly on each disk:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>dynamically determine the disk number,<\/li>\n\n\n\n<li>initialize it in GPT,<\/li>\n\n\n\n<li>create the partition and format the volume in NTFS with a 64\u202fKB allocation unit size,<\/li>\n\n\n\n<li>assign an access path (drive letter or mountpoint),<\/li>\n\n\n\n<li>apply certain specific configuration settings, such as disabling indexing,<\/li>\n\n\n\n<li>verify the compliance of the disk configuration.<\/li>\n<\/ul>\n\n\n\n<p>As these actions are identical for all disks, the best approach is to factorize the tasks.<br>The Ansible pattern, for such scenario, is to loop that call in a dedicated Task File.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n---\n\n- name: Manage all disk properties based on Location and Target numbers\n  ansible.builtin.include_tasks: disks_properties.yml\n  loop:\n    - name: data\n      location: &quot;{{ disk_specs.data.location }}&quot;\n      target: &quot;{{ disk_specs.data.target }}&quot;\n      label: &quot;{{ disk_specs.data.label }}&quot;\n      letter: &quot;{{ disk_specs.data.letter }}&quot;\n    - name: logs\n      location: &quot;{{ disk_specs.logs.location }}&quot;\n      target: &quot;{{ disk_specs.logs.target }}&quot;\n      label: &quot;{{ disk_specs.logs.label }}&quot;\n      letter: &quot;{{ disk_specs.logs.letter }}&quot;\n    - name: tempdb\n      location: &quot;{{ disk_specs.tempdb.location }}&quot;\n      target: &quot;{{ disk_specs.tempdb.target }}&quot;\n      label: &quot;{{ disk_specs.tempdb.label }}&quot;\n      letter: &quot;{{ disk_specs.tempdb.letter }}&quot;\n  loop_control:\n    loop_var: disk\n\n...\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-3-implement-sql-server-disk-configuration\">3- Implement SQL Server disk configuration<\/h2>\n\n\n\n<p>Since we performed our loop in the previous section on the disks_properties.yml file, we can now implement the configuration actions inside this file.<br>First, we will retrieve the disk number and then begin configuring the disk according to best practices and our internal standards.<\/p>\n\n\n\n<p>To guarantee idempotence, we will mark this step as not changed: this is only a Get action:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n---\n\n- name: Identify the {{ disk.name }} disk number\n  ansible.windows.win_shell: |\n    $adapter = {{ disk.target }}\n    $lun = {{ disk.location }}\n    (Get-Disk | Where-Object {\n      $_.Location -match &quot;Adapter $adapter\\s+:.*\\s+LUN $lun&quot;\n    }).number\n  register: disk_num\n  changed_when: false\n<\/pre><\/div>\n\n\n<p>Then, we will register the disk number as an Ansible Fact for all this task file execution call.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n- name: Set fact for {{ disk.name }} disk number\n  ansible.builtin.set_fact:\n    &quot;disk_number_{{ disk.name }}&quot;: &quot;{{ disk_num.stdout | trim | int }}&quot;\n<\/pre><\/div>\n\n\n<p>We can now initialize the disk using <em>community.windows<\/em> module. Of course, use Ansible module if possible.<\/p>\n\n\n\n<p>The parameter <em>disk_bps.partition_style<\/em> is a variable of my Ansible Role, to guarantee GPT will be used.<br><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n- name: Initialize disks\n  community.windows.win_initialize_disk:\n    disk_number: &quot;{{ lookup(&#039;vars&#039;, &#039;disk_number_&#039; + disk.name) }}&quot;\n    style: &quot;{{ disk_bps.partition_style }}&quot;\n<\/pre><\/div>\n\n\n<p>From there, we can create our partition: <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n- name: Create partition with letter {{ disk.letter }} for disk {{ disk.name }}\n  community.windows.win_partition:\n    drive_letter: &quot;{{ disk.letter }}&quot;\n    partition_size: &quot;-1&quot;\n    disk_number: &quot;{{ lookup(&#039;vars&#039;, &#039;disk_number_&#039; + disk.name) }}&quot;\n<\/pre><\/div>\n\n\n<p>And now format our volume with allocation unit size 64KB:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n- name: Create a partition letter {{ disk.letter }} on disk {{ disk.name }} with label {{ disk.label }}\n  community.windows.win_format:\n    drive_letter: &quot;{{ disk.letter }}&quot;\n    allocation_unit_size: &quot;{{ disk_bps.allocation_unit_size_bytes }}&quot;\n    new_label: &quot;{{ disk.label }}&quot;\n\n...\n<\/pre><\/div>\n\n\n<p>As I mentioned earlier in previous section, we can also add tasks relative to some specific standards or a tasks to guarantee disk compliance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-4-execute-the-playbook\">4- Execute the Playbook<\/h2>\n\n\n\n<p>Now that our Ansible Role <em>windows_disks<\/em> is ready, we can call it through a Playbook.<br>Of course, we must adjust the reality of the iSCSI configuration of the Virtual Machine.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: yaml; title: ; notranslate\" title=\"\">\n---\n\n- name: Configure Disks by detecting Disk Number\n  hosts: Raynor\n  gather_facts: false\n  vars:\n    disk_specs:\n      data:\n        location: 0\n        target: 1\n        label: SQL_DATA\n        letter: E\n      logs:\n        location: 0\n        target: 2\n        label: SQL_TLOG\n        letter: L\n      tempdb:\n        location: 0\n        target: 3\n        label: SQL_TEMPDB\n        letter: T\n  tasks:\n    - name: gather facts\n      ansible.builtin.setup:\n      changed_when: false\n      tags: &#x5B;always]\n    - name: Configure Disks\n      ansible.builtin.import_role:\n        name: windows_disks\n      tags: windows_disks\n\n\n...\n<\/pre><\/div>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69dcfd7cc1c78&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69dcfd7cc1c78\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"623\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks-1024x623.png\" alt=\"\" class=\"wp-image-43551\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks-1024x623.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks-300x182.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks-768x467.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks.png 1329w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">CONCLUSION<\/h2>\n\n\n\n<p>We have had an overview of how Ansible makes automation easier to maintain and to evolve, by focusing on the logic of our deployment and not on the code to achieve it.<br>Now, updating your standards or upgrading versions will no longer require rewriting scripts, but mainly adapting variables.<\/p>\n\n\n\n<p>However, it is important to be aware that idempotence must also be maintained through design.<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>INTRODUCTION Today, the benefits of automation no longer need much explanation: saving time, reducing human error, and ensuring every environment remains aligned with internal standards. What is less obvious, however, is how using an Ansible Playbook can provide advantages that more traditional scripting approaches \u2014 such as large PowerShell scripts \u2014 struggle to offer. That [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1321,99],"tags":[2600,708,51],"type_dbi":[],"class_list":["post-43534","post","type-post","status-publish","format-standard","hentry","category-ansible","category-sql-server","tag-ansible-2","tag-automation","tag-sql-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Standardize SQL Server Disks on VMs using Ansible - dbi Blog<\/title>\n<meta name=\"description\" content=\"Learn how to standardize SQL Server disk configuration on Windows Server using Ansible. Map iSCSI controllers, automate disk setup, and simplify maintenance with an idempotent, scalable Playbook design.\" \/>\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.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Standardize SQL Server Disks on VMs using Ansible\" \/>\n<meta property=\"og:description\" content=\"Learn how to standardize SQL Server disk configuration on Windows Server using Ansible. Map iSCSI controllers, automate disk setup, and simplify maintenance with an idempotent, scalable Playbook design.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-23T17:50:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-23T17:50:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1329\" \/>\n\t<meta property=\"og:image:height\" content=\"808\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nathan Courtine\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nathan Courtine\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/\"},\"author\":{\"name\":\"Nathan Courtine\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/38305b5ebdcdb4fb784fa31d760862d1\"},\"headline\":\"How to Standardize SQL Server Disks on VMs using Ansible\",\"datePublished\":\"2026-03-23T17:50:46+00:00\",\"dateModified\":\"2026-03-23T17:50:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/\"},\"wordCount\":823,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks-1024x623.png\",\"keywords\":[\"Ansible\",\"Automation\",\"SQL Server\"],\"articleSection\":[\"Ansible\",\"SQL Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/\",\"name\":\"How to Standardize SQL Server Disks on VMs using Ansible - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks-1024x623.png\",\"datePublished\":\"2026-03-23T17:50:46+00:00\",\"dateModified\":\"2026-03-23T17:50:48+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/38305b5ebdcdb4fb784fa31d760862d1\"},\"description\":\"Learn how to standardize SQL Server disk configuration on Windows Server using Ansible. Map iSCSI controllers, automate disk setup, and simplify maintenance with an idempotent, scalable Playbook design.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks.png\",\"width\":1329,\"height\":808},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Standardize SQL Server Disks on VMs using Ansible\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/38305b5ebdcdb4fb784fa31d760862d1\",\"name\":\"Nathan Courtine\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/0fcc6c91bbc35c976c9d470585e48ae5d500680f1f55de5bbc5f8373b8ebb02c?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0fcc6c91bbc35c976c9d470585e48ae5d500680f1f55de5bbc5f8373b8ebb02c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0fcc6c91bbc35c976c9d470585e48ae5d500680f1f55de5bbc5f8373b8ebb02c?s=96&d=mm&r=g\",\"caption\":\"Nathan Courtine\"},\"description\":\"Nathan Courtine has more than four years of experience in Microsoft solutions. He is specialized in SQL Server installation, migration, performance analysis, best practices, etc. Moreover, he has a background in Oracle Java and .NET software and web development. Nathan Courtine is Microsoft Certified in Administering SQL Server 2012 Databases. Nathan Courtine holds an Engineer\u2019s Degree in Computer Science from the ENSISA (Ecole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse (F). His branch-related experience covers Public Sector, Automotive, IT, Financial Services \/ Banking, etc.\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/nathan-courtine\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Standardize SQL Server Disks on VMs using Ansible - dbi Blog","description":"Learn how to standardize SQL Server disk configuration on Windows Server using Ansible. Map iSCSI controllers, automate disk setup, and simplify maintenance with an idempotent, scalable Playbook design.","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.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/","og_locale":"en_US","og_type":"article","og_title":"How to Standardize SQL Server Disks on VMs using Ansible","og_description":"Learn how to standardize SQL Server disk configuration on Windows Server using Ansible. Map iSCSI controllers, automate disk setup, and simplify maintenance with an idempotent, scalable Playbook design.","og_url":"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/","og_site_name":"dbi Blog","article_published_time":"2026-03-23T17:50:46+00:00","article_modified_time":"2026-03-23T17:50:48+00:00","og_image":[{"width":1329,"height":808,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks.png","type":"image\/png"}],"author":"Nathan Courtine","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Nathan Courtine","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/"},"author":{"name":"Nathan Courtine","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/38305b5ebdcdb4fb784fa31d760862d1"},"headline":"How to Standardize SQL Server Disks on VMs using Ansible","datePublished":"2026-03-23T17:50:46+00:00","dateModified":"2026-03-23T17:50:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/"},"wordCount":823,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks-1024x623.png","keywords":["Ansible","Automation","SQL Server"],"articleSection":["Ansible","SQL Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/","url":"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/","name":"How to Standardize SQL Server Disks on VMs using Ansible - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks-1024x623.png","datePublished":"2026-03-23T17:50:46+00:00","dateModified":"2026-03-23T17:50:48+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/38305b5ebdcdb4fb784fa31d760862d1"},"description":"Learn how to standardize SQL Server disk configuration on Windows Server using Ansible. Map iSCSI controllers, automate disk setup, and simplify maintenance with an idempotent, scalable Playbook design.","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/03\/Ansible_disks.png","width":1329,"height":808},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/how-to-standardize-sql-server-disks-on-vms-using-ansible\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Standardize SQL Server Disks on VMs using Ansible"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/38305b5ebdcdb4fb784fa31d760862d1","name":"Nathan Courtine","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0fcc6c91bbc35c976c9d470585e48ae5d500680f1f55de5bbc5f8373b8ebb02c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0fcc6c91bbc35c976c9d470585e48ae5d500680f1f55de5bbc5f8373b8ebb02c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0fcc6c91bbc35c976c9d470585e48ae5d500680f1f55de5bbc5f8373b8ebb02c?s=96&d=mm&r=g","caption":"Nathan Courtine"},"description":"Nathan Courtine has more than four years of experience in Microsoft solutions. He is specialized in SQL Server installation, migration, performance analysis, best practices, etc. Moreover, he has a background in Oracle Java and .NET software and web development. Nathan Courtine is Microsoft Certified in Administering SQL Server 2012 Databases. Nathan Courtine holds an Engineer\u2019s Degree in Computer Science from the ENSISA (Ecole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse (F). His branch-related experience covers Public Sector, Automotive, IT, Financial Services \/ Banking, etc.","url":"https:\/\/www.dbi-services.com\/blog\/author\/nathan-courtine\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/43534","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=43534"}],"version-history":[{"count":13,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/43534\/revisions"}],"predecessor-version":[{"id":43552,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/43534\/revisions\/43552"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=43534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=43534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=43534"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=43534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}