Dan

Dan

@rios.engineer

Microsoft Azure MVP | Azure Architect | #AzureBicep ๐Ÿฆพ | All things Azure! ๐Ÿ’™ Blog ๐Ÿ”— https://rios.engineer ๐Ÿ‡ฌ๐Ÿ‡ง

953 followers220 following232 posts

Pinned

Introducing the Azure Bicep Starter Pack ๐Ÿ’ช Includes some great people to follow in the #AzureBicep Community and an #Azure Bicep custom feed you can pin as a tab! If you regularly share and/or create Azure Bicep content, drop a reply so I can add you ๐Ÿ˜Ž #mvpbuzz #microsoft bsky.app/starter-pack...

Dan reposted

๐๐ž๐ฐ ๐›๐ฅ๐จ๐ : ๐€๐ฎ๐ญ๐จ๐ฆ๐š๐ญ๐ข๐ง๐  ๐€๐ณ๐ฎ๐ซ๐ž ๐๐ข๐œ๐ž๐ฉ ๐“๐ž๐ฌ๐ญ๐ข๐ง๐  ๐ฐ๐ข๐ญ๐ก ๐„๐ฉ๐ก๐ž๐ฆ๐ž๐ซ๐š๐ฅ ๐„๐ง๐ฏ๐ข๐ซ๐จ๐ง๐ฆ๐ž๐ง๐ญ๐ฌ ๐ข๐ง ๐†๐ข๐ญ๐‡๐ฎ๐› ๐€๐œ๐ญ๐ข๐จ๐ง๐ฌ rios.engineer/automating-a...

rios.engineerAutomating Azure Bicep Testing with Ephemeral Environments in GitHub Actions - Rios Engineer

Introducing the Azure Bicep Starter Pack ๐Ÿ’ช Includes some great people to follow in the #AzureBicep Community and an #Azure Bicep custom feed you can pin as a tab! If you regularly share and/or create Azure Bicep content, drop a reply so I can add you ๐Ÿ˜Ž #mvpbuzz #microsoft bsky.app/starter-pack...

Dan reposted

Replying to @johnlokerse.dev

I will be giving a session on the ๐€๐ณ๐ฎ๐ซ๐ž ๐ƒ๐ž๐ฏ๐Ž๐ฉ๐ฌ ๐ฅ๐จ๐œ๐š๐ฅ-๐๐ž๐ฉ๐ฅ๐จ๐ฒ ๐ž๐ฑ๐ญ๐ž๐ง๐ฌ๐ข๐จ๐ง, @rios.engineer will present his ๐‚๐ฅ๐จ๐ฎ๐๐Ÿ๐ฅ๐š๐ซ๐ž ๐ฅ๐จ๐œ๐š๐ฅ-๐๐ž๐ฉ๐ฅ๐จ๐ฒ ๐ฅ๐จ๐œ๐š๐ฅ-๐๐ž๐ฉ๐ฅ๐จ๐ฒ ๐ž๐ฑ๐ญ๐ž๐ง๐ฌ๐ข๐จ๐ง and the ๐ƒ๐ž๐ฉ๐ฅ๐จ๐ฒ๐ฆ๐ž๐ง๐ญ ๐’๐ญ๐š๐œ๐ค๐ฌ ๐จ๐ซ๐œ๐ก๐ž๐ฌ๐ญ๐ซ๐š๐ญ๐จ๐ซ, and there is much more!

Dan reposted

๐Ÿš€ New blog! A long-lived dream of many Bicep users is to extend Bicep beyond Azure by connecting it to other services. With the experimental Bicep local-deploy feature that dream is becoming a reality! ๐Ÿ”— Read the blog post here: johnlokerse.dev/2025/10/20/c... #azure #azurebicep #MVPBuzz

johnlokerse.devCreate your own custom extension for Azure BicepA long-lived dream of many Azure Bicep users has been the ability to deploy outside the Azure environment, similar to what you can do with Terraform. With the experimental Bicep local-deploy featurโ€ฆ

Dan reposted

Replying to @johnlokerse.dev

In my latest post, you will learn about Azure Bicep local-deploy and how you can create your own Azure Bicep extension in a few steps. I also break down how each component in the local-deploy framework works from model to handler to deployment. Thanks for the review @rios.engineer ๐Ÿ’ช!

Dan reposted

Dan reposted

v0.38 is out!๐Ÿ’ช๐ŸŽ‰ OnlyifNotExists() is now GA! Many new features have been added: validate() decorator, 'any' type, several new [experimental] bicep commands, and more! Read more here: github.com/Azure/bicep/... Check out our September Community Call here: youtu.be/SqQi1hOnKAs

github.comRelease v0.38.3 ยท Azure/bicepHighlights onlyIfNotExists GA! (#17996) @onlyIfNotExists() resource onlyDeployIfNotExists 'Microsoft...' = { name: 'example' location: 'eastus' properties: { ... } } [Experimental] ...

Dan reposted

๐Ÿš€ Need your help! With Bicep local-deploy, we can create extensions outside the Azure environment. I have developed an extension that integrates ๐€๐ณ๐ฎ๐ซ๐ž ๐๐ข๐œ๐ž๐ฉ ๐ข๐ง๐ญ๐จ ๐€๐ณ๐ฎ๐ซ๐ž ๐ƒ๐ž๐ฏ๐Ž๐ฉ๐ฌ, allowing you to configure Azure DevOps using Azure Bicep IaC! #MVPBuzz #azure #azurebicep #azuredevops

Create your CloudFlare DNS records with Azure Bicep! Thought I'd put some time aside to dive into the local deploy experimental feature. Really cool, and lots of possibilities and creativity to be had. #azurebicep #biceplang #cloudflare #DevOps github.com/riosengineer...

github.comGitHub - riosengineer/cloudflare-bicep-deploy: A CloudFlare Bicep Local Deploy extension to deploy DNS record to CloudFlare & more.A CloudFlare Bicep Local Deploy extension to deploy DNS record to CloudFlare & more. - riosengineer/cloudflare-bicep-deploy

Dan reposted

Create your own Bicep Local Extension using .NET

techcommunity.microsoft.comCreate your own Bicep Local Extension using .NETBicep Local Deploy can be used to author Bicep files which use Bicep extensions that are designed to run fully locally, without the need for an Azure connection. This quick start guide provides guidance for creating your own Bicep Local Extension using .NET. For more information on Bicep Local please check out this doc and this demo. This guide assumes you have the .NET 9 SDK installed locally, and the Bicep 0.37.4 (or higher) CLI and VSCode extension installed. Project Scaffolding Create a project file named MyExtension.csproj with the following contents:<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <RootNamespace>MyExtension</RootNamespace> <AssemblyName>my-extension</AssemblyName> <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract> <PublishSingleFile>true</PublishSingleFile> <SelfContained>true</SelfContained> <InvariantGlobalization>true</InvariantGlobalization> <TargetFramework>net9.0</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="Azure.Bicep.Local.Extension" Version="0.37.4" /> </ItemGroup> </Project> Create a file named Program.cs with the following contents: using Microsoft.AspNetCore.Builder; using Bicep.Local.Extension.Host.Extensions; using Microsoft.Extensions.DependencyInjection; var builder = WebApplication.CreateBuilder(); builder.AddBicepExtensionHost(args); builder.Services .AddBicepExtension( name: "MyExtension", version: "0.0.1", isSingleton: true, typeAssembly: typeof(Program).Assembly) .WithResourceHandler<MyResourceHandler>(); var app = builder.Build(); app.MapBicepExtension(); await app.RunAsync(); 3. Create a file named Models.cs with the following contents: using System.Text.Json.Serialization; using Azure.Bicep.Types.Concrete; using Bicep.Local.Extension.Types.Attributes; public enum OperationType { Uppercase, Lowercase, Reverse, } public class MyResourceIdentifiers { [TypeProperty("The resource name", ObjectTypePropertyFlags.Identifier | ObjectTypePropertyFlags.Required)] public required string Name { get; set; } } [ResourceType("MyResource")] public class MyResource : MyResourceIdentifiers { [TypeProperty("The resource operation type", ObjectTypePropertyFlags.Required)] [JsonConverter(typeof(JsonStringEnumConverter))] public OperationType? Operation { get; set; } [TypeProperty("The text output")] public string? Output { get; set; } } 4. Create a file under Handlers/MyResourceHandler.cs with the following contents: using Bicep.Local.Extension.Host.Handlers; public class MyResourceHandler : TypedResourceHandler<MyResource, MyResourceIdentifiers> { protected override async Task<ResourceResponse> Preview(ResourceRequest request, CancellationToken cancellationToken) { await Task.CompletedTask; return GetResponse(request); } protected override async Task<ResourceResponse> CreateOrUpdate(ResourceRequest request, CancellationToken cancellationToken) { await Task.CompletedTask; request.Properties.Output = request.Properties.Operation switch { OperationType.Uppercase => request.Properties.Name.ToUpperInvariant(), OperationType.Lowercase => request.Properties.Name.ToLowerInvariant(), OperationType.Reverse => new([.. request.Properties.Name.Reverse()]), _ => throw new InvalidOperationException(), }; return GetResponse(request); } protected override MyResourceIdentifiers GetIdentifiers(MyResource properties) => new() { Name = properties.Name, }; } Publishing your extension locally Run the following to in the project directory to publish your extension to your local filesystem: dotnet publish --configuration release -r osx-arm64 . dotnet publish --configuration release -r linux-x64 . dotnet publish --configuration release -r win-x64 . bicep publish-extension --bin-osx-arm64 ./bin/release/osx-arm64/publish/my-extension --bin-linux-x64 ./bin/release/linux-x64/publish/my-extension --bin-win-x64 ./bin/release/win-x64/publish/my-extension.exe --target ./bin/my-extension --force Running your extension Create a file named bicepconfig.json with the following contents: { "experimentalFeaturesEnabled": { "localDeploy": true }, "extensions": { "myextension": "./bin/my-extension" }, "implicitExtensions": [] } 2. Create a file named main.bicep with the following contents: targetScope = 'local' extension myextension param inputText string resource foo 'MyResource' = { name: inputText operation: 'Reverse' } output outputText string = foo.output 3. Create a file named main.bicepparam with the following contents: using 'main.bicep' param inputText = 'Please reverse me!' 4. Run the following: bicep local-deploy main.bicepparam You should see the following output in your terminal: % bicep local-deploy main.bicepparam Output outputText: "!em esrever esaelP" Resource foo (Create): Succeeded Result: Succeeded Giving feedback and getting help Bicep Local is still under development and your feedback is critical to shaping the feature. Please use our GitHub Repo to get support for give feedback.

Iโ€™ve got like 5 blog ideas but finding the time to lab them and do a meaningful a write up is proving a challenge at the moment!

๐Ÿš€ ๐—ฆ๐—ฝ๐—ฒ๐—ฐ๐˜๐—ฟ๐—ฎ๐—น: ๐—ง๐—ต๐—ฒ ๐—”๐—ฃ๐—œ ๐—Ÿ๐—ถ๐—ป๐˜๐—ถ๐—ป๐—ด ๐—ง๐—ผ๐—ผ๐—น ๐—ฌ๐—ผ๐˜‚ ๐—ก๐—ฒ๐—ฒ๐—ฑ ๐—ถ๐—ป ๐—ฌ๐—ผ๐˜‚๐—ฟ ๐—ช๐—ผ๐—ฟ๐—ธ๐—ณ๐—น๐—ผ๐˜„ rios.engineer/spectral-the...

rios.engineerSpectral: The API Linting Tool You Need in Your Workflow ๐Ÿ”Ž - Rios Engineer

Learnt a hell of a lot today about the Azure AI Agent Service from just โ€œdoingโ€. So much nuance and experience is learnt in between the theory and docs when you actually get your hands dirty and just build something tangible

Dan reposted

๐ŸŽฏ New #BicepTip is posted by @rios.engineer! Reusability plays an important role in avoiding duplication of code. This tip is about how to use import and export in Azure Bicep to avoid duplication: ๐Ÿ”— www.linkedin.com/feed/update/... #azure #azurebicep

linkedin.comSign Up | LinkedIn500 million+ members | Manage your professional identity. Build and engage with your professional network. Access knowledge, insights and opportunities.

Claude seems WAY better than GPT for Copilot Agent mode, in my experience so far. Like itโ€™s not even close how much better it is IMO

Dan reposted

Starting tomorrow ๐Ÿ‘‡! #azurebicep

๐Ÿ’ช @rios.engineer and I are rebooting the @biceplang.bsky.social tip and did you know series. We will share a weekly tip or did you know on Bicep every Tuesday! Join the Azure Bicep users community here: www.linkedin.com/groups/13004... #azure #azurebicep #mvpbuzz #infrastructureascode

Dan reposted

๐Ÿ’ช @rios.engineer and I are rebooting the @biceplang.bsky.social tip and did you know series. We will share a weekly tip or did you know on Bicep every Tuesday! Join the Azure Bicep users community here: www.linkedin.com/groups/13004... #azure #azurebicep #mvpbuzz #infrastructureascode

linkedin.comLinkedIn Login, Sign in | LinkedInLogin to LinkedIn to keep in touch with people you know, share ideas, and build your career.