Skip to content

Commit c201108

Browse files
authored
Merge pull request #18 from lvlindv/main
Cleaning up md files and will move to wiki
2 parents 53f473a + 30df463 commit c201108

13 files changed

Lines changed: 273 additions & 154 deletions

1-Collect/readme.md

Lines changed: 0 additions & 7 deletions
This file was deleted.

2-AvailabilityCheck/readme.md

Lines changed: 0 additions & 26 deletions
This file was deleted.

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ This project is next phase of Azure to Azure Migration toolkit driven by [jfaurs
44

55
## Wiki navigation
66

7-
- [What is Regions selection toolkit](./docs/wiki/Home.md)
8-
- [How to use Region Selection Toolkit](./docs/wiki/ToolkitHowTo.md)
7+
- [What is Regions selection toolkit](./docs/wiki/Introduction-to-Azure-Region-Selection-Toolkit.md)
8+
- [Getting Started](./docs/wiki/Setup-and-Prerequisites.md)
9+
- [How to use Region Selection Toolkit](./docs/wiki/Step-by-Step-Guide.md)
910
- [Frequently Asked Questions](./docs/wiki/FAQ.md)
1011
- [Contributing](./docs/wiki/Contribution.md)
1112
- [Known Issues](./docs/wiki/KnownIssues.md)

docs/wiki/1-Collect.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# 1-Collect (Inventory Collection)
2+
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.
3+
4+
## Examples
5+
### If using Azure Resource Graph:
6+
Run the `Get-AzureServices.ps1` script with your target scope. For example:
7+
8+
- 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.
9+
10+
```powershell
11+
Get-AzureServices.ps1 -includeCost $true
12+
```
13+
14+
- To collect the inventory for a single resource group, cost not included, run the script as follows:
15+
16+
```powershell
17+
Get-AzureServices.ps1 -scopeType resourceGroup -resourceGroupName <resource-group-name> -subscriptionId <subscription-id>
18+
```
19+
20+
- To collect the inventory for a single subscription, cost not included, run the script as follows:
21+
22+
```powershell
23+
Get-AzureServices.ps1 -scopeType subscription -subscriptionId <subscription-id>
24+
```
25+
26+
- 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:
27+
28+
```powershell
29+
Get-AzureServices.ps1 -multiSubscription -workloadFile <path-to-workload-file>
30+
```
31+
32+
### If using an Azure Migrate export:
33+
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:
34+
35+
```powershell
36+
Get-RessourcesFromAM.ps1 -filePath "C:\path\to\Assessment.xlsx" -outputFile "C:\path\to\summary.json"
37+
```

docs/wiki/2-AvailabilityCheck.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# 2-AvailabilityCheck
2+
3+
## Availability check script
4+
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.
5+
6+
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:
7+
- microsoft.compute/disks
8+
- microsoft.compute/virtualmachines
9+
- microsoft.sql/managedinstances
10+
- microsoft.sql/servers/databases
11+
- microsoft.storage/storageaccounts
12+
13+
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:
14+
15+
```powershell
16+
Get-AvailabilityInformation.ps1
17+
```
18+
It will generate a number of json files in the same directory the important one is the `Availability_Mapping.json`
19+
20+
## Filter by Region script
21+
22+
To check the availability of the resources in scope in a specific region run following script:
23+
24+
```powershell
25+
Get-Region.ps1 -Region <Target-region>
26+
```
27+
This will generate `Availability_Mapping_<Region>.json` in the same directory.
28+
29+
## Example:
30+
```powershell
31+
Get-AvailabilityInformation.ps1
32+
# Wait for the script to complete, this may take a while.
33+
Get-Region.ps1 -region <target-region1>
34+
# Example1: Get-Region.ps1 -region "east us"
35+
# Example2: Get-Region.ps1 -region "west us"
36+
# Example3: Get-Region.ps1 -region "sweden central"
37+
```
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
# Cost data retrieval and region comparison
2-
3-
## About the scripts
1+
# 3-CostInformation
2+
Cost data retrieval and region comparison
43

54
### Get-CostInformation.ps1
65

@@ -80,7 +79,7 @@ Instructions for use:
8079

8180
#### Example
8281

83-
``` text
82+
```powershell
8483
$regions = @("eastus", "brazilsouth", "australiaeast")
8584
.\Perform-RegionComparison.ps1 -regions $regions -outputType json
8685
```
Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
1-
# Export Script
1+
# 7-Report
22

33
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:
44

5-
## Service Availability Report
5+
### Service Availability Report
66

77
- **Resource type**
88
- **Resource count**
99
- **Implemented (origin) regions**
1010
- **Implemented SKUs**
11-
- **Selected (target) regions**
12-
- **Availability in the selected regions**
11+
- **Availability in the Selected (target) regions**
1312

1413
## Cost Comparison Report
1514

16-
- **Azure Cost Meter ID**
15+
- **Meter ID**
1716
- **Service Name**
1817
- **Meter Name**
1918
- **Product Name**
@@ -28,13 +27,12 @@ These reports help you analyze service compatibility and cost differences across
2827
- This script requires the `ImportExcel` PowerShell module.
2928
- 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.
3029

31-
## Usage Instructions
30+
## Example
3231

33-
1. Open a PowerShell command line.
34-
2. Navigate to the `7-Report` folder.
35-
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):
32+
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):
3633

37-
```powershell
38-
.\Get-Report.ps1 -availabilityInfoPath `@("..\2-AvailabilityCheck\Availability_Mapping_Asia_Pacific.json", "..\2-AvailabilityCheck\Availability_Mapping_Europe.json")` -costComparisonPath "..\3-CostInformation\region_comparison_prices.json"
39-
```
34+
```powershell
35+
.\Get-Report.ps1 -availabilityInfoPath `@("..\2-AvailabilityCheck\Availability_Mapping_Asia_Pacific.json", "..\2-AvailabilityCheck\Availability_Mapping_Europe.json")` -costComparisonPath "..\3-CostInformation\region_comparison_prices.json"
36+
37+
```
4038
The script generates an `.xlsx` and `.csv` files in the `7-report` folder, named `Availability_Report_CURRENTTIMESTAMP`.

docs/wiki/Home.md

Lines changed: 0 additions & 43 deletions
This file was deleted.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Introduction to the Region Selection Toolkit
2+
3+
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.
4+
A poor region choice can lead to issues like legal/regulatory problems, higher latency or poor user experience, and unnecessary expenses.
5+
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.
6+
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.
7+
8+
## What the Toolkit Does
9+
The Region Selection Toolkit **evaluates multiple key factors** to recommend the best region(s) for a given set of Azure resources.
10+
Its holistic approach ensures you don’t overlook important criteria when comparing cloud regions. In particular, the toolkit performs:
11+
12+
- **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.
13+
This inventory of services and components is the foundation for region analysis.
14+
15+
- **Multi-Factor Region Analysis:** For each candidate region, the toolkit analyzes a wide range of criteria that are crucial for decision-making:
16+
17+
- _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.
18+
19+
- _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.
20+
21+
- _[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.**
22+
23+
- _[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.)
24+
25+
- _[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.
26+
27+
- **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.
28+
29+
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.
30+
31+
> [!NOTE]
32+
> 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.

0 commit comments

Comments
 (0)