https://github.com/thgossler/aztagger
Simple Windows GUI application helping search and tag Azure resources, groups and subscriptions.
https://github.com/thgossler/aztagger
azure query resourcegraph tagging
Last synced: 2 months ago
JSON representation
Simple Windows GUI application helping search and tag Azure resources, groups and subscriptions.
- Host: GitHub
- URL: https://github.com/thgossler/aztagger
- Owner: thgossler
- License: mit
- Created: 2024-11-13T15:20:04.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-02T11:00:25.000Z (over 1 year ago)
- Last Synced: 2024-12-02T12:19:36.009Z (over 1 year ago)
- Topics: azure, query, resourcegraph, tagging
- Language: C#
- Homepage:
- Size: 3.13 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![MIT License][license-shield]][license-url]
AzTagger
Query and filter your Azure resources fast and tag them easily.
Report Bug
·
Request Feature
·
Contribute
·
Sponsor project
·
Sponsor via PayPal
# Introduction
AzTagger is a cross-platform desktop GUI application for fast and flexible
querying of Azure resources and tag management. It allows fast search and filtering of all
resources, resource groups, and subscriptions using Azure Resource Graph for your Entra ID tenant.
It runs on latst Windows 11 (WPF), macOS (Mac) and Linux (GTK).

See also this AI-auto-generated comprehensive description on [DeepWiki](https://deepwiki.com/thgossler/AzTagger).
## Features
### User Authentication and Tenant Selection
- Interactive sign-in to Entra ID via web browser, support for SSO and multi-factor authentication (MFA)
- Support for multiple parallel Azure contexts including environment (e.g., AzurePublicCloud, AzureChina), Entra ID tenant and app ID
- **Note:** The application must be registered in Entra ID with the following authentication redirect URIs configured:
- `http://localhost`
- `aztagger://auth`
### Search Functionality
- Fast search and filtering of all Azure resources, resource groups, and subscriptions based on in-memory result data from Azure Resource Graph
- A single input field for easy and flexible rmot querying of resources
- Multiple input fields for easy and flexible local quick-filtering of resources
- Comprehensive support of KQL and .NET regular expressions
### Search Results Display
- Support for large numbers of search results
- Column sorting
- Double-click on item to open it in the Azure Portal
- Context menu items to add result values to the search query for filtering
- Full display of all tags of all levels (subscription, resource group, resource) and combined
### Tag Management
- Easy inline editing and deletion of tags in a table
- Add new tags by clicking into the last empty line's key or value cells and start typing
- Use default tag templates and maintain custom ones in a `tagtemplates.json` file in the user's AppData Local folder
- Support of variables in tag template values such as {Date}, {Time}, {DateTime}, {User}
- Create and update all specified tags on all selected subscriptions, resource groups, and resources at once
- Copy any tag cell value via right-click context menu
- Open all hyperlinks of all tag values of a resource in the browser
### Export Results
- Export current (filtered) search results to JSON or CSV files
- Remembers the last used export folder
### User Interface
- Dark mode supported on macOS (not yet on Windows and Linux by Eto.Forms)
### Error Handling and Logging
- All errors logged to `errorlog.txt` files in the user's AppData Local folder.
## Used Technologies
- C# .NET 10
- Eto.Forms, supporting for Windows 11 (WPF), Linux (GTK), and macOS (Mac)
- SeriLog
- Azure Identity
- Azure Resource Manager
- Azure Resource Graph
## Building and Running
Clone the repository, open in VS Code, select the desired target platform and hit F5 to build and run the program.
### Build and Run for Each Platform
#### Windows
```
dotnet build AzTagger.Wpf/AzTagger.Wpf.csproj -c Release --framework net10.0-windows --runtime win-x64
dotnet run --project AzTagger.Wpf/AzTagger.Wpf.csproj --framework net10.0-windows --runtime win-x64
```
#### Linux
```
dotnet build AzTagger.Gtk/AzTagger.Gtk.csproj -c Release --framework net10.0 --runtime linux-x64
dotnet run --project AzTagger.Gtk/AzTagger.Gtk.csproj --framework net10.0 --runtime linux-x64
```
#### macOS
```
Apple Silicon (arm64):
dotnet build AzTagger.Mac/AzTagger.Mac.csproj -c Release --framework net10.0 --runtime osx-arm64
dotnet run --project AzTagger.Mac/AzTagger.Mac.csproj --framework net10.0 --runtime osx-arm64
Intel (x64):
dotnet build AzTagger.Mac/AzTagger.Mac.csproj -c Release --framework net10.0 --runtime osx-x64
dotnet run --project AzTagger.Mac/AzTagger.Mac.csproj --framework net10.0 --runtime osx-x64
```
### Publish
You can publish self-contained executables for each platform using `dotnet publish` with the same `--framework` and `--runtime` parameters.
You can also use the `publish.sh` or `publish.cmd` scripts.
#### Windows
```
x64:
dotnet publish AzTagger.Wpf/AzTagger.Wpf.csproj -c Release --framework net10.0-windows --runtime win-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false -o ./publish/win-x64
ARM64:
dotnet publish AzTagger.Wpf/AzTagger.Wpf.csproj -c Release --framework net10.0-windows --runtime win-arm64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false -o ./publish/win-arm64
```
#### Linux
```
x64:
dotnet publish AzTagger.Gtk/AzTagger.Gtk.csproj -c Release --framework net10.0 --runtime linux-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false -o ./publish/linux-x64
ARM64:
dotnet publish AzTagger.Gtk/AzTagger.Gtk.csproj -c Release --framework net10.0 --runtime linux-arm64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false -o ./publish/linux-arm64
```
#### macOS
```
Apple Silicon (arm64):
dotnet publish AzTagger.Mac/AzTagger.Mac.csproj -c Release --framework net10.0 --runtime osx-arm64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false -o ./publish/mac-arm64
Intel (x64):
dotnet publish AzTagger.Mac/AzTagger.Mac.csproj -c Release --framework net10.0 --runtime osx-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=false -o ./publish/mac-x64
```
## Report Bugs
Please open an issue on the GitHub repository with the tag "bug".
## Donate
If you are using the tool but are unable to contribute technically, please consider promoting it and donating an amount that reflects its value to you. You can do so either via PayPal
[](https://www.paypal.com/donate/?hosted_button_id=JVG7PFJ8DMW7J)
or via [GitHub Sponsors](https://github.com/sponsors/thgossler).
## Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star :wink: Thanks!
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
[contributors-shield]: https://img.shields.io/github/contributors/thgossler/AzTagger.svg
[contributors-url]: https://github.com/thgossler/AzTagger/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/thgossler/AzTagger.svg
[forks-url]: https://github.com/thgossler/AzTagger/network/members
[stars-shield]: https://img.shields.io/github/stars/thgossler/AzTagger.svg
[stars-url]: https://github.com/thgossler/AzTagger/stargazers
[issues-shield]: https://img.shields.io/github/issues/thgossler/AzTagger.svg
[issues-url]: https://github.com/thgossler/AzTagger/issues
[license-shield]: https://img.shields.io/github/license/thgossler/AzTagger.svg
[license-url]: https://github.com/thgossler/AzTagger/blob/main/LICENSE