{"id":15409196,"url":"https://github.com/devlead/ari","last_synced_at":"2026-02-11T12:14:43.023Z","repository":{"id":198950160,"uuid":"665508875","full_name":"devlead/ARI","owner":"devlead","description":"Azure Resource Inventory .NET Tool - Inventories and documents Azure Tenant resources","archived":false,"fork":false,"pushed_at":"2026-02-08T11:06:09.000Z","size":570,"stargazers_count":32,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2026-02-08T17:24:16.621Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devlead.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"devlead"}},"created_at":"2023-07-12T11:07:39.000Z","updated_at":"2026-02-08T11:04:36.000Z","dependencies_parsed_at":"2023-10-14T22:33:08.660Z","dependency_job_id":"d1000bcd-64ad-498c-86a2-60008faea6b6","html_url":"https://github.com/devlead/ARI","commit_stats":{"total_commits":79,"total_committers":3,"mean_commits":"26.333333333333332","dds":"0.025316455696202556","last_synced_commit":"48e77123f1b70a800cf882eda92ff765396597a5"},"previous_names":["devlead/ari"],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/devlead/ARI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlead%2FARI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlead%2FARI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlead%2FARI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlead%2FARI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devlead","download_url":"https://codeload.github.com/devlead/ARI/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlead%2FARI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29332744,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T06:13:03.264Z","status":"ssl_error","status_checked_at":"2026-02-11T06:12:55.843Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-01T16:38:15.635Z","updated_at":"2026-02-11T12:14:42.979Z","avatar_url":"https://github.com/devlead.png","language":"C#","readme":"# ARI\n\nAzure Resource Inventory .NET Tool - Inventories and documents Azure Tenant resources to a set of markdown files for specified tenant to a specified folder.\n\n## Obtain\n\n```bash\ndotnet tool install -g ari\n```\n\n## Commands\n\nUse `-h` / `--help` to get the current list of available commands and options.\n\n```bash\nari --help\nari command --help\n```\n\n### inventory\n\nThe **inventory** command inventories tenants and outputs it's result as markdown files to specified output path.\n\n```bash\nari inventory \u003ctenantId\u003e \u003coutputpath\u003e [options]\n```\n\n## Quick Start\n\n### Running ARI Successfully for the First Time\n\nBy default it'll try authenticate using the [DefaultAzureCredential](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.defaultazurecredential?view=azure-dotnet) which tries to authorize in the following order based on your environment.\n\n1. [EnvironmentCredential](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.environmentcredential?view=azure-dotnet)\n1. [WorkloadIdentityCredential](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.workloadidentitycredential?view=azure-dotnet)\n1. [ManagedIdentityCredential](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.managedidentitycredential?view=azure-dotnet)\n1. [SharedTokenCacheCredential](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.sharedtokencachecredential?view=azure-dotnet)\n1. [VisualStudioCredential](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.visualstudiocredential?view=azure-dotnet)\n1. [VisualStudioCodeCredential](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.visualstudiocodecredential?view=azure-dotnet)\n1. [AzureCliCredential](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.azureclicredential?view=azure-dotnet)\n1. [AzurePowerShellCredential](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.azurepowershellcredential?view=azure-dotnet)\n1. [AzureDeveloperCliCredential](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.azuredeveloperclicredential?view=azure-dotnet)\n1. [InteractiveBrowserCredential](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.interactivebrowsercredential?view=azure-dotnet)\n\n#### Setup Azure App Registration\n\nThe recommended way is using a service principal with only the access required for it to document, you can do this by creating an app registration.\n\n1. Begin by creating an `App Registration` in Azure Entra for the report generator. This ensures that the report generator has precisely the required access, such as organization-wide read permissions or access to a limited set of subscriptions.\n1. Assign the API permission `https://graph.microsoft.com/Organization.Read.All` to the created `App Registration`.\n1. In my tenant, Admin consent is required for this permission.\n1. Add a role that allows the `App Registration` to read an organization. You can do this under `Subscription` management in Azure and `Access Control (IAM)`. Add `Role Assignment`, find the `App Registration` and give it `Read` access.\n1. Assign a secret to the `App Registration` and make a note of this secret.\n\nWith the Azure App Registration now configured, we are ready to proceed.\n\n#### Configure ARI for Execution\n\n1. Create a dedicated folder for the generated report.\n1. Set the environment variable `AZURE_TENANT_ID` to the tenant ID (found in the `App Registration` overview for your app).\n1. Set the environment variable `AZURE_CLIENT_ID` to the client ID (found in the `App Registration` overview for your app).\n1. Set the environment variable `AZURE_CLIENT_SECRET` to the secret noted earlier.\n1. Set the environment variable `AZURE_AUTHORITY_HOST` to `https://login.microsoftonline.com/`.\n\n### Run ARI\n\nAssuming all the environment variables are correctly set, follow these steps:\n\n```bash\ndotnet tool install --global ARI\nari \u003cAZURE_TENANT_ID\u003e \u003cFOLDER_FOR_REPORT\u003e\n```\n\nBy following these steps, you should be able to run ARI successfully for the first time. If you encounter any issues, double-check the Azure App Registration setup and ensure that the environment variables are accurately configured.\n","funding_links":["https://github.com/sponsors/devlead"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlead%2Fari","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevlead%2Fari","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlead%2Fari/lists"}