Dan
banner
rios.engineer
Dan
@rios.engineer
Microsoft Azure MVP | Azure Architect | #AzureBicep 🦾 | All things Azure! 💙
Blog 🔗 https://rios.engineer
🇬🇧
Pinned
Dan @rios.engineer · Nov 11
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...
Reposted by Dan
I will be giving a session on the 𝐀𝐳𝐮𝐫𝐞 𝐃𝐞𝐯𝐎𝐩𝐬 𝐥𝐨𝐜𝐚𝐥-𝐝𝐞𝐩𝐥𝐨𝐲 𝐞𝐱𝐭𝐞𝐧𝐬𝐢𝐨𝐧, @rios.engineer will present his 𝐂𝐥𝐨𝐮𝐝𝐟𝐥𝐚𝐫𝐞 𝐥𝐨𝐜𝐚𝐥-𝐝𝐞𝐩𝐥𝐨𝐲 𝐥𝐨𝐜𝐚𝐥-𝐝𝐞𝐩𝐥𝐨𝐲 𝐞𝐱𝐭𝐞𝐧𝐬𝐢𝐨𝐧 and the 𝐃𝐞𝐩𝐥𝐨𝐲𝐦𝐞𝐧𝐭 𝐒𝐭𝐚𝐜𝐤𝐬 𝐨𝐫𝐜𝐡𝐞𝐬𝐭𝐫𝐚𝐭𝐨𝐫, and there is much more!
October 29, 2025 at 8:10 AM
Reposted by Dan
🚀 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
Create your own custom extension for Azure Bicep
A 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…
johnlokerse.dev
October 20, 2025 at 6:24 AM
Reposted by Dan
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 💪!
October 20, 2025 at 6:24 AM
Hey Bsky! I’m up as a finalist for best blogger + azure evangelist apparently. Your support if you feel like it, would be good. But also there’s tons of good people here who deserve a vote too. www.ukcommunityawards.co.uk 🙏
UK Community Awards – Microsoft Technology UK Community Recognition Awards
www.ukcommunityawards.co.uk
October 8, 2025 at 5:43 PM
Reposted by Dan
New on my blog: Build a Custom Extension for Bicep 🚀

In this post, I walk you through how to extend Bicep with your own extension!

👉 Check it out here: msftplayground.com/2025/09/bice...

#Azure #Http #Custom #CSharp #Bicep
Build a Custom Extension for Bicep
In a previous post about Bicep Local, I explained how this feature enables the creation of custom extensions that can be used directly within Bicep. Also that by using this option you are not limited ...
msftplayground.com
October 8, 2025 at 9:58 AM
Reposted by Dan
⚠️ Azure Resource Manager (ARM) extension for @vscode.dev is now officially deprecated! Microsoft now recommends that you use the Bicep extension instead.

#MVPBuzz #azure #azurebicep
October 8, 2025 at 3:36 PM
My favourite go to Azure Bicep resources

rios.engineer/my-favourite...

#azure #azurebicep #iac #devops
My favourite 5 Bicep resources - Rios Engineer
rios.engineer
October 6, 2025 at 6:59 PM
Reposted by Dan
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
Release v0.38.3 · Azure/bicep
Highlights onlyIfNotExists GA! (#17996) @onlyIfNotExists() resource onlyDeployIfNotExists 'Microsoft...' = { name: 'example' location: 'eastus' properties: { ... } } [Experimental] ...
github.com
October 1, 2025 at 5:01 PM
Reposted by Dan
🚀 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
September 23, 2025 at 10:43 AM
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 - 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
github.com
September 21, 2025 at 2:50 PM
📣 Myself & @johnlokerse.dev have now taken control of the previously abandoned r/AzureBicep and looking to give it some love for the @biceplang.bsky.social community! It offers a different medium than LinkedIn, that I know some folks will prefer to engage through 🙏

www.reddit.com/r/AzureBicep...
From the AzureBicep community on Reddit
Explore this post and more from the AzureBicep community
www.reddit.com
September 14, 2025 at 4:54 PM
Using shared variable file pattern to simplify role assignments in Azure Bicep. Plus, automated devops pipeline to keep the json file up to date. Worth a read:

rios.engineer/using-shared...
Using Shared Variable File Pattern to simplify Azure Roles In Bicep - Rios Engineer
rios.engineer
September 8, 2025 at 8:01 AM
Reposted by Dan
🚀 2600 Azure Bicep enthusiasts! A LinkedIn community where you can share Bicep experiences, blogs, tips and tricks and ask questions!

💪🏼 Happy to be running this with @rios.engineer for the Bicep community.

#azure #azurebicep #MVPBuzz
September 2, 2025 at 8:20 PM
Two new examples: Azure Deployment Stack output references + Resource Derived Types. Check it out #azurebicep #azure github.com/riosengineer...
GitHub - riosengineer/Bicepify: Simplify getting started with Bicep through easy to digest examples🦾
Simplify getting started with Bicep through easy to digest examples🦾 - riosengineer/Bicepify
github.com
September 1, 2025 at 1:22 PM
Integrating Companies House API with Azure AI Agent in Foundry with OpenAPI tool rios.engineer/integrating-... #azure #openai #azureaifoundry #aiagent
Integrating Companies House with Azure AI Agent in Foundry Using OpenAPI - Rios Engineer
rios.engineer
August 19, 2025 at 9:46 AM
This weeks bicep did you know? Is now up! @johnlokerse.dev showcases the new fail function! A really useful function to leverage. Check it out www.linkedin.com/feed/update/... #biceplang #azure #iac
Sign Up | LinkedIn
500 million+ members | Manage your professional identity. Build and engage with your professional network. Access knowledge, insights and opportunities.
www.linkedin.com
August 19, 2025 at 7:03 AM
Reposted by Dan
🎯 New #BicepDidYouKnow by @rios.engineer! Save time with resourceInput<> and resourceOutput<> by eliminating the need to create custom Bicep User-Defined Types:

🔗 www.linkedin.com/feed/update/...

#azure #bicep #infrastructureascode
Sign Up | LinkedIn
500 million+ members | Manage your professional identity. Build and engage with your professional network. Access knowledge, insights and opportunities.
www.linkedin.com
August 12, 2025 at 8:45 AM
Reposted by Dan
Create your own Bicep Local Extension using .NET
Create your own Bicep Local Extension using .NET
Bicep 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.
techcommunity.microsoft.com
August 7, 2025 at 3:44 PM
Reposted by Dan
Bicep ❤️ Azure DevOps! With Bicep Local, you can interact with more than just Azure or Entra.

You can connect Bicep to anything. This is going to be amazing!

#bicep #azuredevops #azure
August 7, 2025 at 6:37 PM
This week’s @biceplang.bsky.social #BicepTip by @johnlokerse.dev showcases the Bicep linter! Check it out in the group here: www.linkedin.com/feed/update/...
www.linkedin.com
August 5, 2025 at 7:02 AM
Reposted by Dan
🚀 Bicep is now in the Managed DevOps Pools docs! I contributed snippets across the docs, an all-new quickstart to deploy a Managed DevOps Pool to Azure, and references to Azure Verified Modules.

learn.microsoft.com/en-us/azure/...
Create a Managed DevOps Pool using a Bicep template - Managed DevOps Pools
Learn how to create a Managed DevOps Pool using a Bicep template.
learn.microsoft.com
August 4, 2025 at 7:04 AM
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!
August 4, 2025 at 6:15 PM
🚀 𝗦𝗽𝗲𝗰𝘁𝗿𝗮𝗹: 𝗧𝗵𝗲 𝗔𝗣𝗜 𝗟𝗶𝗻𝘁𝗶𝗻𝗴 𝗧𝗼𝗼𝗹 𝗬𝗼𝘂 𝗡𝗲𝗲𝗱 𝗶𝗻 𝗬𝗼𝘂𝗿 𝗪𝗼𝗿𝗸𝗳𝗹𝗼𝘄

rios.engineer/spectral-the...
Spectral: The API Linting Tool You Need in Your Workflow 🔎 - Rios Engineer
rios.engineer
July 30, 2025 at 10:55 AM