diff --git a/1-Collect/readme.md b/1-Collect/readme.md deleted file mode 100644 index 096bb4c..0000000 --- a/1-Collect/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -## Assessment script - -This script is intended to assess Azure services currently implemented in a given scope. The script will produce a report containing information about all services in scope as well as summary report detailing the number of individual services, as well as SKUs in use if relevant. - -To use the script do the following from a powershell command line: -1. Log on to Azure using `Connect-AzAccount` and select the appropriate subscription using `Select-AzSubscription`. -2. Navigate to the 1-Collect folder and run the script using `.\Get-AzureServices.ps1`. The script will generate a report in the `1-Collect` folder with the name `resources.json` as well as `summary.json`. \ No newline at end of file diff --git a/2-AvailabilityCheck/readme.md b/2-AvailabilityCheck/readme.md deleted file mode 100644 index 2c1a47a..0000000 --- a/2-AvailabilityCheck/readme.md +++ /dev/null @@ -1,26 +0,0 @@ -# Current implementation to Azure availabilities mapping scripts - -## Availability check script - -This script evaluates the availability of Azure services, resources, and SKUs across different regions. When combined with the output from the 1-Collect script, it provides a comprehensive overview of potential migration destinations, identifying feasible regions and the reasons for their suitability or limitations, such as availability constraints per region. - -Currently, this script associates every resource with its regional availability. Additionally, it maps the following SKUs to the regions where they are supported: -* microsoft.compute/disks -* microsoft.compute/virtualmachines -* microsoft.sql/managedinstances -* microsoft.sql/servers/databases -* microsoft.storage/storageaccounts - -To use the script do the following from a powershell command line: -1. Log on to Azure using `Connect-AzAccount` and select the appropriate subscription using `Select-AzSubscription`. -2. Run `.\Get-AzureServices.ps1` from `1-Collect` folder. -3. Get sure that the output files are successful generated in the `1-Collect` folder with the name `resources.json` as well as `summary.json`. -4. Navigate to the `2-AvailabilityCheck` folder and run the script using `.\Get-AvailabilityInformation.ps1`. The script will generate report files in the `2-AvailabilityCheck` folder. - -## Per region filter script - -This script processes the output from the previous script to extract data for a single, specified region. - -To use the script do the following from a powershell command line: -1. Execute the `.\Get-AvailabilityInformation.ps1` script first, as previously outlined. -2. Run `.\Get-Region.ps1` from `2-AvailabilityCheck` folder. The script will generate report files in the `2-AvailabilityCheck` folder. \ No newline at end of file diff --git a/README.md b/README.md index f845746..7feaf34 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,9 @@ This project is next phase of Azure to Azure Migration toolkit driven by [jfaurs ## Wiki navigation -- [What is Regions selection toolkit](./docs/wiki/Home.md) -- [How to use Region Selection Toolkit](./docs/wiki/ToolkitHowTo.md) +- [What is Regions selection toolkit](./docs/wiki/Introduction-to-Azure-Region-Selection-Toolkit.md) +- [Getting Started](./docs/wiki/Setup-and-Prerequisites.md) +- [How to use Region Selection Toolkit](./docs/wiki/Step-by-Step-Guide.md) - [Frequently Asked Questions](./docs/wiki/FAQ.md) - [Contributing](./docs/wiki/Contribution.md) - [Known Issues](./docs/wiki/KnownIssues.md) diff --git a/docs/wiki/1-Collect.md b/docs/wiki/1-Collect.md new file mode 100644 index 0000000..9a04946 --- /dev/null +++ b/docs/wiki/1-Collect.md @@ -0,0 +1,37 @@ +# 1-Collect (Inventory Collection) +Gathers the inventory of resources that will be evaluated. Run the script `Get-AzureServices.ps1` to collect the Azure resource inventory and properties, for yor relevant scope (resource group, subscription or multiple subscriptions). The script will generate a `resources.json` and a `summary.json` file in the same directory. The `resources.json` file contains the full inventory of resources and their properties, while the `summary.json` file contains a summary of the resources collected. + +## Examples +### If using Azure Resource Graph: +Run the `Get-AzureServices.ps1` script with your target scope. For example: + +- To include Cost Information add parameter `-includeCost $true`. If you include this parameter, it will also generate a CSV file in the same directory. This CSV file can be used later in `3-CostInformation`. Note: This might take some time depending on how long it takes to download the cost information. + +```powershell +Get-AzureServices.ps1 -includeCost $true +``` + +- To collect the inventory for a single resource group, cost not included, run the script as follows: + +```powershell +Get-AzureServices.ps1 -scopeType resourceGroup -resourceGroupName -subscriptionId +``` + +- To collect the inventory for a single subscription, cost not included, run the script as follows: + +```powershell +Get-AzureServices.ps1 -scopeType subscription -subscriptionId +``` + +- To collect the inventory for multiple subscriptions, you will need to create a json file containing the subscription ids in scope. See [here](./subscriptions.json) for a sample json file. Once the file is created, run the script as follows: + +```powershell +Get-AzureServices.ps1 -multiSubscription -workloadFile +``` + +### If using an Azure Migrate export: +Run `Get-RessourcesFromAM.ps1` against an Azure Migrate `Assessment.xlsx` file to convert the VM & Disk SKUs into the same output as `Get-AzureServices.ps1` For example: + +```powershell +Get-RessourcesFromAM.ps1 -filePath "C:\path\to\Assessment.xlsx" -outputFile "C:\path\to\summary.json" +``` diff --git a/docs/wiki/2-AvailabilityCheck.md b/docs/wiki/2-AvailabilityCheck.md new file mode 100644 index 0000000..3463d1c --- /dev/null +++ b/docs/wiki/2-AvailabilityCheck.md @@ -0,0 +1,37 @@ +# 2-AvailabilityCheck + +## Availability check script +This script evaluates the availability of Azure services, resources, and SKUs across all regions. When combined with the output from the 1-Collect script, it provides a comprehensive overview of potential migration destinations, identifying feasible regions and the reasons for their suitability or limitations, such as availability constraints per region. + +Note that this functionality is not yet complete and is a work in progress. Currently, this script associates every resource with its regional availability. Additionally, it maps the following SKUs to the regions where they are supported: +- microsoft.compute/disks +- microsoft.compute/virtualmachines +- microsoft.sql/managedinstances +- microsoft.sql/servers/databases +- microsoft.storage/storageaccounts + +The `Get-AvailabilityInformation.ps1` script only needs to be run once to collect the availability information for all regions, which takes a little while. Run the following script: + +```powershell +Get-AvailabilityInformation.ps1 +``` +It will generate a number of json files in the same directory the important one is the `Availability_Mapping.json` + +## Filter by Region script + +To check the availability of the resources in scope in a specific region run following script: + +```powershell +Get-Region.ps1 -Region +``` +This will generate `Availability_Mapping_.json` in the same directory. + +## Example: +```powershell +Get-AvailabilityInformation.ps1 +# Wait for the script to complete, this may take a while. +Get-Region.ps1 -region +# Example1: Get-Region.ps1 -region "east us" +# Example2: Get-Region.ps1 -region "west us" +# Example3: Get-Region.ps1 -region "sweden central" +``` diff --git a/3-CostInformation/README.md b/docs/wiki/3-CostInformation.md similarity index 97% rename from 3-CostInformation/README.md rename to docs/wiki/3-CostInformation.md index d674b57..e31bc44 100644 --- a/3-CostInformation/README.md +++ b/docs/wiki/3-CostInformation.md @@ -1,6 +1,5 @@ -# Cost data retrieval and region comparison - -## About the scripts +# 3-CostInformation +Cost data retrieval and region comparison ### Get-CostInformation.ps1 @@ -80,7 +79,7 @@ Instructions for use: #### Example -``` text +```powershell $regions = @("eastus", "brazilsouth", "australiaeast") .\Perform-RegionComparison.ps1 -regions $regions -outputType json ``` diff --git a/7-Report/readme.md b/docs/wiki/7-Report.md similarity index 58% rename from 7-Report/readme.md rename to docs/wiki/7-Report.md index fe764c2..0d9e4eb 100644 --- a/7-Report/readme.md +++ b/docs/wiki/7-Report.md @@ -1,19 +1,18 @@ -# Export Script +# 7-Report This script generates formatted Excel (`.xlsx`)reports based on the output from the previous check script. The reports provide detailed information for each service, including: -## Service Availability Report +### Service Availability Report - **Resource type** - **Resource count** - **Implemented (origin) regions** - **Implemented SKUs** -- **Selected (target) regions** -- **Availability in the selected regions** +- **Availability in the Selected (target) regions** ## Cost Comparison Report -- **Azure Cost Meter ID** +- **Meter ID** - **Service Name** - **Meter Name** - **Product Name** @@ -28,13 +27,12 @@ These reports help you analyze service compatibility and cost differences across - This script requires the `ImportExcel` PowerShell module. - The script requires you to have run either the `2-AvailabilityCheck/Get-Region.ps1` or `3-CostInformation/Perform-RegionComparison.ps1` or both scripts to generate the necessary JSON input files for availability and cost data. -## Usage Instructions +## Example -1. Open a PowerShell command line. -2. Navigate to the `7-Report` folder. -3. If you have created one or more availability JSON files using the `2-AvailabilityCheck/Get-Region.ps1` script, run the following commands, replacing the path with your actual file path(s): +If you have created one or more availability JSON files using the `2-AvailabilityCheck/Get-Region.ps1` script, run the following commands, replacing the path with your actual file path(s): - ```powershell - .\Get-Report.ps1 -availabilityInfoPath `@("..\2-AvailabilityCheck\Availability_Mapping_Asia_Pacific.json", "..\2-AvailabilityCheck\Availability_Mapping_Europe.json")` -costComparisonPath "..\3-CostInformation\region_comparison_prices.json" - ``` +```powershell +.\Get-Report.ps1 -availabilityInfoPath `@("..\2-AvailabilityCheck\Availability_Mapping_Asia_Pacific.json", "..\2-AvailabilityCheck\Availability_Mapping_Europe.json")` -costComparisonPath "..\3-CostInformation\region_comparison_prices.json" + +``` The script generates an `.xlsx` and `.csv` files in the `7-report` folder, named `Availability_Report_CURRENTTIMESTAMP`. diff --git a/docs/wiki/Home.md b/docs/wiki/Home.md deleted file mode 100644 index b2a473f..0000000 --- a/docs/wiki/Home.md +++ /dev/null @@ -1,43 +0,0 @@ -# Welcome to the Region Selection toolkit wiki - -This wiki documents the current situation during the development of the Region Selection toolkit. - -# What is Regions selection toolkit - -## Project Description - -**Region Selection Toolkit** is a comprehensive solution for guiding Cloud Solution Architects, Solution Engineers and IT teams in selecting the optimal Microsoft Azure region for their workloads. This toolkit automates the complex analysis required when deciding “Which Azure region should we deploy to?”. It evaluates multiple factors – from service availability and compliance to sustainability and performance – to recommend the best region(s) for a given set of cloud resources. The goal is to streamline regional planning for scenarios such as migrating to a new Azure region, expanding an application into additional regions, or choosing a region for a new deployment. - -This holistic approach ensures you consider all angles (technical, business, and environmental) when comparing cloud regions. - -*Note: The Region Selection Toolkit is designed with extensibility in mind. Its modular architecture means additional factors (e.g. capacity planning data or more detailed latency testing) can be incorporated over time. New Azure regions and services are continually updated to keep recommendations current.* - -## Toolkit Features - -**Inventory collection** -The toolkit can collect an inventory of your existing Azure resources (e.g. via Azure Resource Graph) or accept input from an Azure Migrate assessment. This inventory forms the basis of the region compatibility analysis. - -**Multi-Factor Region Analysis** -Analyses Azure regions against a wide range of criteria crucial for decision-making. -It checks: - -* Service Availability & Roadmap - Verifies that all Azure services and features used by your workload are available (or have planned availability) in the target region. The toolkit cross-references your workload’s resource types against Azure’s regional services list, helping avoid deployments in regions where required services are not yet supported. - -* cost differences - Compares estimated costs of running the workload in different regions. Azure service pricing can vary by region; the toolkit retrieves pricing information for your workload’s resource mix in each candidate region, allowing a side-by-side cost comparison. This helps in budgeting and choosing a cost-effective location without manual price research. - -* Compliance and geopolitical factors [V1] - Takes into account data residency requirements and geopolitical considerations. It will flag, for instance, if a region belongs to a specific sovereignty (such as EU, US Gov, or China regions) or if there are legal/regulatory implications in choosing that location. This ensures your region choice aligns with compliance mandates and organisational policies (e.g. GDPR, data sovereignty, or other regional regulations). - -* performance impacts [V2] - Provides insights on performance-related aspects such as network latency and infrastructure resiliency. For example, it notes whether a region offers Availability Zones and identifies the region’s paired region (for disaster recovery purposes). This helps evaluate reliability and potential latency impact on end-users when moving or expanding to that region. - -* and sustainability metrics [V1] - Highlights sustainability considerations of each region. The toolkit surfaces data like regional carbon intensity or renewable energy availability (where available) to help organisations optimise for lower carbon footprint. Choosing a greener Azure region can support corporate sustainability goals – the toolkit makes this information readily accessible during planning. - -for each potential region. - -**Recommendation Report** - - After analysis, the toolkit produces a clear report or summary of findings. You’ll get a list of recommended region(s) ranked or filtered based on the defined criteria, along with the reasoning (e.g. “Region A is recommended due to full service availability and lowest cost, with moderate sustainability score”). This report can be used to present options to stakeholders or as a blueprint for the actual migration/deployment. \ No newline at end of file diff --git a/docs/wiki/Introduction-to-Azure-Region-Selection-Toolkit.md b/docs/wiki/Introduction-to-Azure-Region-Selection-Toolkit.md new file mode 100644 index 0000000..5add5d5 --- /dev/null +++ b/docs/wiki/Introduction-to-Azure-Region-Selection-Toolkit.md @@ -0,0 +1,32 @@ +# Introduction to the Region Selection Toolkit + +Selecting the right Azure region for a workload is a **critical decision** in any cloud deployment. Azure offers dozens of regions worldwide (each with unique capabilities and constraints), and region choice directly affects compliance, performance, resiliency, and cost. +A poor region choice can lead to issues like legal/regulatory problems, higher latency or poor user experience, and unnecessary expenses. +The **Region Selection Toolkit** is designed to simplify this complex decision. It helps **identifying the optimal Azure region** for their workloads by automating a multi-factor analysis that would be tedious and error-prone to do manually. +By considering technical, business, and even environmental factors, the toolkit provides data-driven recommendations for and helps you confidently plan scenarios such as moving to a new region, expanding an application into additional regions, or choosing a region for a new deployment. + +## What the Toolkit Does +The Region Selection Toolkit **evaluates multiple key factors** to recommend the best region(s) for a given set of Azure resources. +Its holistic approach ensures you don’t overlook important criteria when comparing cloud regions. In particular, the toolkit performs: + +- **Inventory Collection:** It can automatically gather an inventory of your existing Azure resources (for example, via Azure Resource Graph) or accept input from an Azure Migrate assessment. +This inventory of services and components is the foundation for region analysis. + +- **Multi-Factor Region Analysis:** For each candidate region, the toolkit analyzes a wide range of criteria that are crucial for decision-making: + + - _Service Availability & Roadmap:_ Verifies that all Azure services used by your workload are available (or planned) in the target region. It cross-references your workload’s resource types against Azure’s _products-by-region_ lists to avoid deploying into a region where required services are not supported. This factor helps prevent incompatibility or missing service issues. + + - _Cost Differences:_ Compares estimated costs of running the workload in different regions. Azure service pricing can vary by region, so the toolkit pulls pricing for your resource inventory in each region, enabling side-by-side cost comparisons. This helps you weigh budget impacts and identify cost-effective regions without manual price research. + + - _[In progress] Compliance and Geopolitical Factors:_ Accounts for data residency and regulatory requirements tied to geographic location. The toolkit flags if a region belongs to a special sovereignty (e.g. EU, US Gov, China) or has specific compliance certifications. This ensures your choice aligns with laws and policies (for example, GDPR in Europe or other regional regulations). In short, it helps you **choose a region that meets your organization’s compliance mandates and avoids legal risk.** + + - _[In progress] Performance and Resiliency:_ Provides insight into performance-related considerations like network latency and infrastructure resiliency for each region. For example, it notes whether a region supports Availability Zones and identifies its paired region for disaster recovery purposes. These details help evaluate reliability (high availability and DR options) and potential latency impacts on end-users when choosing or moving to that region. (Future versions may integrate more detailed latency testing and capacity data.) + + - _[In progress] Sustainability Metrics:_ Highlights the sustainability considerations of each region, such as regional carbon intensity or the availability of renewable energy. While this data may not always be available for every location, the toolkit surfaces whatever sustainability metrics it can (e.g. relative carbon footprint of running in Region A vs Region B). This helps organizations factor in environmental impact when selecting an Azure region, supporting corporate sustainability goals. + +- **Recommendation Report:** After analyzing the above factors, the toolkit generates a clear **Recommendation Report**. This report lists region choices for your workload and provides the reasoning behind each recommendation. Each recommendation is backed by data, allowing you to confidently present options to stakeholders or use the report as a blueprint for the actual deployment/migration. + +The toolkit is regularly updated to reflect new Azure regions and services, helping teams make informed, balanced decisions on region selection with speed and confidence. + +> [!NOTE] +> The Region Selection Toolkit is modular and extensible. Not all features are fully implemented yet, like _Compliance and Geopolitical Factors, Performance and Resiliency, Sustainability Metrics and Capacity planning_ are in progress. diff --git a/docs/wiki/Setup-and-Prerequisites.md b/docs/wiki/Setup-and-Prerequisites.md new file mode 100644 index 0000000..0813054 --- /dev/null +++ b/docs/wiki/Setup-and-Prerequisites.md @@ -0,0 +1,38 @@ +# Getting Started + +_This page is a guide for setup and prerequisites needed bafore running the Region Selection Toolkit._ + +## Prerequisites +Before using the toolkit, ensure the following prerequisites are met: +- **Azure Subscription Access:** + - You should have access to the Azure subscription(s) containing the workload you want to analyse. At minimum, read permissions (e.g. **Azure Reader role**) on the relevant resources are required to gather inventory. If analysing a planned deployment (with no existing Azure resources yet), you can skip resource access but will need an Azure Migrate assessment export (see Input Data below). + - To run `3-CostInformation`, ensure that you have **Cost Management Reader access** to all subscriptions in scope. + +- **Environment:** Prepare a PowerShell environment to run the toolkit. The toolkit is implemented in PowerShell scripts, so you can run it on Windows, Linux, or in the Azure Cloud Shell. Ensure you have **PowerShell Core 7.5.1** or later installed. + +- **Azure PowerShell Modules:** Install the necessary Azure PowerShell modules. + + - Azure Powershell module `Az.ResourceGraph 1.2.0` or later + - Azure Powershell module `Az.Accounts 4.1.0` or later + - Azure Powershell module `Az.CostManagement 0.4.2` or later + + If using Azure migrate as input file: + - Azure Powershell module `Az.Monitor 5.2.2` or later + - Azure Powershell `ImportExcel` module for Azure Migrate script + +- **Azure Login:** You must be able to authenticate to Azure. If running locally, use `Connect-AzAccount` to sign in with your Azure credentials. + +## Installation (Getting the Toolkit) +To obtain the Region Selection Toolkit on your machine or environment: +1. **Download or Clone** the toolkit’s repository (e.g., via Git): The toolkit is provided as a set of scripts in a GitHub repository (e.g. `Azure/AzRegionSelection`). You can clone it using `git clone https://github.com/Azure/AzRegionSelection.git`, or download the repository ZIP and extract it. + +2. **Directory Structure:** After retrieval, you should have a directory containing the toolkit scripts. Key sub-folders include `1-Collect`, `2-AvailabilityCheck`, `3-CostInformation`, and `7-Report` (these correspond to different stages of the analysis). It’s important to keep this structure intact. You do **not** need to compile anything – the toolkit is ready to run via PowerShell scripts. + +## Input Data: Providing a Workload Inventory +The first step in using the toolkit is to provide an inventory of the workload’s Azure resources. The Region Selection Toolkit supports two main input methods for this inventory: + +**A.** **Automatic Inventory via Azure Resource Graph:** If the workload is already deployed in Azure, the toolkit can automatically collect the resource list. In this case, you’ll run the `1-Collect` script which uses Azure Resource Graph to retrieve all resources in the specified subscription or resource group. This requires the prerequisites above (Azure login and appropriate permissions). You will specify which subscription (or other scope) to query. + +**B.** **Import from Azure Migrate Assessment:** If you are planning a migration (for example, moving on-premises or other cloud workloads to Azure) and have used Azure Migrate to assess your environment, you can use that data as input. First, export the Azure Migrate assessment results (Azure Migrate allows exporting discovered VM and resource metadata to files such as Excel/CSV). Then, the toolkit’s `1-Collect` stage can ingest this file to create an inventory of resources. Ensure the exported data is in a format the toolkit expects (check the toolkit documentation for the exact file format or template required). + +## Next Up: [How to use Region Selection Toolkit](Step-by-Step-Guide.md) diff --git a/docs/wiki/Step-by-Step-Guide.md b/docs/wiki/Step-by-Step-Guide.md new file mode 100644 index 0000000..afb1b72 --- /dev/null +++ b/docs/wiki/Step-by-Step-Guide.md @@ -0,0 +1,113 @@ +# How to Use the Region Selection Toolkit + +_This page is a practical guide for running the Region Selection Toolkit, helping you evaluate and choose the optimal Azure region for your workloads._ + +Before proceeding with this Step by Step Guide, make sure you’ve completed the prerequisites and initial setup in [Getting Started](Setup-and-Prerequisites.md) + +## Running the Toolkit Step-by-Step +Once your environment is ready and you have determined the input method, follow these steps to run the Region Selection Toolkit. It’s important to run the stages in order, as each stage uses data from the previous one. The steps below assume you’re using PowerShell: + +### Authenticate and Set Context +Open a PowerShell prompt in the toolkit’s directory. If you’re in Azure Cloud Shell, you can navigate to the folder where you cloned the toolkit. +- **Log in to Azure:** Run `Connect-AzAccount` to authenticate to Azure. + +## Run 1-Collect (Inventory Collection) + +Navigate to the `1-Collect` folder and run the script `Get-AzureServices.ps1` to collect the Azure resource inventory and properties, for yor relevant scope (resource group, subscription or multiple subscriptions). The script will generate a `resources.json` and a `summary.json` file in the same directory. The `resources.json` file contains the full inventory of resources and their properties, while the `summary.json` file contains a summary of the resources collected. For examples on how to run the script for different scopes please see [1-Collect Examples](1-Collect.md). + +**If using Azure Resource Graph:** + +```powershell +Get-AzureServices.ps1 -includeCost $true +``` + +**If using an Azure Migrate export:** Run `Get-RessourcesFromAM.ps1` against an Azure Migrate `Assessment.xlsx` file to convert the VM & Disk SKUs into the same output as `Get-AzureServices.ps1` For example: + +```powershell +Get-RessourcesFromAM.ps1 -filePath "C:\path\to\Assessment.xlsx" -outputFile "C:\path\to\summary.json" +``` +> [!NOTE] +> Before proceeding, make sure that the output files (`resources.json`, `summary.json` and a `CSV file`) are generated in the `1-Collect` folder. + +## Run 2-AvailabilityCheck (Service Availability) + +This script will check the availability of the services in the target region based on the inventory collected in the previous step. Note that this functionality is not yet complete and is a work in progress. For examples on how to run the script please see [2-AvailabilityCheck Examples](2-AvailabilityCheck.md) + +Navigate to the `2-AvailabilityCheck` folder and run `Get-AvailabilityInformation.ps1`. It will generate a number of json files in the same directory the important one is the `Availability_Mapping.json` Run the following script: + +```powershell +Get-AvailabilityInformation.ps1 +``` + +Check the availability of the resources in scope for a specific region. This will generate a file named `Availability_Mapping_.json` in the same directory. Run the following script: + +```powershell +Get-Region.ps1 -Region +``` + +## Run 3-CostInformation (Cost Analysis) + +The Azure public pricing API is used, meaning that, prices are **not** customer-specific, but are only used to calculate the relative cost difference between regions for each meter ID. Please see [3-CostInformation](3-CostInformation.md) for more details. + +Navigate to the `3-CostInformation` folder and run the script using the `Perform-RegionComparison.ps1` script to do cost comparison with target Region(s). + +For example: +```powershell +$regions = @("eastus", "brazilsouth", "australiaeast") +.\Perform-RegionComparison.ps1 -regions $regions -outputFormat json -reso +``` + +This will generate `region_comparison_RegionComparison.json` file + +## Run 7-Report + +This script generates formatted Excel (`.xlsx`) reports based on the output from the previous check script. Please see [7-Report](7-Report.md) for more details. + + +Navigate to the `7-Report` folder and run the `Get-Report.ps1`, also specify the path to the availability information and the cost comparision path. For example: + +```powershell +.\Get-Report.ps1 -availabilityInfoPath ..\2-AvailabilityCheck\Availability_Mapping_.json -costComparisonPath ..\3-CostInformation\region_comparison_RegionComparison.json +``` +The script generates an `.xlsx` file in the `7-report` folder, named `Availability_Report_CURRENTTIMESTAMP`. + +Open the generated Excel file. The reports provide detailed information for each service. These reports help you analyze service compatibility and cost differences across different regions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/wiki/ToolkitHowTo.md b/docs/wiki/ToolkitHowTo.md deleted file mode 100644 index 136c0cd..0000000 --- a/docs/wiki/ToolkitHowTo.md +++ /dev/null @@ -1,60 +0,0 @@ -# Background - -This guide describes how to leverage the Region selection toolkit toolkit when checking can your current Azure workload be deployed in another region. - -> Note that this is a preview solution intended to encourage feedback for further development which should be tested in a safe environment before using in production to protect against possible failures/unnecessary cost. -> Also note that this repo is public and as such you should never upload or otherwise divulge sensitive information to this repo. If there is any concern, please contact your Microsoft counterparts for detailed advice. - -The repo at present contains code and details for the following: - -- Script and supporting files to collect Azure resource inventory and properties from either an Azure resource group, an Azure subscription (default behavior) or multiple Azure subscriptions. This functionality is contained in the 1-Collect directory. -- Script to convert the output Excel file from a Azure Migrate Assessment to the same format. -- Script to determine service availability in the target region based on the inventory collected in the previous step. This functionality is contained in the 2-AvailabilityCheck directory. Note that this functionality is not yet complete and is a work in progress. - -## Prerequisites - -1. Microsoft Entra ID Tenant. -1. Azure RBAC Reader access to minimum one resource group for when collecting inventory. Note that depending on the scope of the inventory collection, you may need to have Reader access to either a single resource group, a subscription or multiple subscriptions. -1. You will need to have the following installed on the platform you are running the scripts from: - - PowerShell Core 7.5.1 or later - - Azure Powershell module Az.Monitor 5.2.2 or later - - Azure Powershell module Az.ResourceGraph 1.2.0 or later - - Azure Powershell module Az.Accounts 4.1.0 or later - - Azure Powershell ImportExcel module for Azure Migrate script - -## High Level Steps - -- Fork this repo to your own GitHub organization, you should not create a direct clone of the repo. Pull requests based off direct clones of the repo will not be allowed. -- Clone the repo from your own GitHub organization to whatever platform you are using to access Azure. -- Open the PowerShell console and navigate to the directory where you cloned the repo. -- Navigate to the `1-Collect` directory. -- Logon to Azure with an account that has the required permissions to collect the inventory using `Connect-AzAccount`. -- Run the script `Get-AzureServices.ps1` to collect the Azure resource inventory and properties, for yor relevant scope (resource group, subscription or multiple subscriptions). The script will generate a resources.json and a summary.json file in the same directory. The resources.json file contains the full inventory of resources and their properties, while the summary.json file contains a summary of the resources collected. For examples on how to run the script for different scopes please see 1-Collect scope examples - [1-Collect Scope Examples](#1-collect-scope-examples) below. -- Alternatively you can run `Get-RessourcesFromAM.ps1` against an Azure Migrate `Assessment.xlsx` file to convert the VM & Disk SKUs into the same output as `Get-AzureServices.ps1` to be used further with the `2-AvailabilityCheck/Get-AvailabilityInformation.ps1` script. -- After collecting the inventory, the intent is that you can use the `2-AvailabilityCheck/Get-AvailabilityInformation.ps1` script to check the availability of the services in the target region. This script will generate a services.json file in the same directory, which contains the availability information for the services in the target region. Note that this functionality is not yet complete and is a work in progress. - -## 1-Collect Scope Examples - -- To collect the inventory for a single resource group, run the script as follows: - -```powershell -Get-AzureServices.ps1 -scopeType resourceGroup -resourceGroupName -subscriptionId -``` - -- To collect the inventory for a single subscription, run the script as follows: - -```powershell -Get-AzureServices.ps1 -scopeType subscription -subscriptionId -``` - -- To collect the inventory for multiple subscriptions, you will need to create a json file containing the subscription ids in scope. See [here](./subscriptions.json) for a sample json file. Once the file is created, run the script as follows: - -```powershell -Get-AzureServices.ps1 -multiSubscription -workloadFile -``` - -### 1.1-Azure Migrate Script Examples - -```powershell -Get-RessourcesFromAM.ps1 -filePath "C:\path\to\Assessment.xlsx" -outputFile "C:\path\to\summary.json" -``` diff --git a/docs/wiki/scenarios.md b/docs/wiki/scenarios.md deleted file mode 100644 index e69de29..0000000