{"id":62077,"date":"2021-08-10T06:00:18","date_gmt":"2021-08-10T14:00:18","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/devops\/?p=62077"},"modified":"2021-07-29T07:24:05","modified_gmt":"2021-07-29T15:24:05","slug":"azurefunbytes-episode-50-intro-to-biceplang-with-adotfrank","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/devops\/azurefunbytes-episode-50-intro-to-biceplang-with-adotfrank\/","title":{"rendered":"AzureFunBytes Episode 50 &#8211; Intro to @BicepLang with @adotfrank"},"content":{"rendered":"<p>AzureFunBytes is a weekly opportunity to learn more about the fundamentals and foundations that make up Azure. It&#8217;s a chance for me to understand more about what people across the Azure organization do and how they do it. Every week we get together at 11 AM Pacific on <a href=\"https:\/\/cda.ms\/226\">Microsoft LearnTV<\/a> and learn more about Azure.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--Z7BxBMz1--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880\/https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/j2xzw2g664tj31jij13t.gif\" alt=\"AzureFunBytes animation\" \/><\/p>\n<p>This week on AzureFunBytes we flex some Azure muscle with <a href=\"https:\/\/cda.ms\/2dv\">Bicep<\/a>. Bicep is a language that allows you to use a declarative syntax to codify your Azure infrastructure deployments. Bicep is an Azure native <a href=\"https:\/\/cda.ms\/2dm\">Domain-Specific Language (DSL)<\/a> that promotes a cleaner syntax, improved type safety, and better support for modularity and re-use of code. Bicep is a transparent abstraction over <a href=\"https:\/\/cda.ms\/2dt\">Azure Resource Manager (ARM) templates<\/a> that gives you the ability to create nearly any required resource within Azure. <a href=\"https:\/\/bicepdemo.z22.web.core.windows.net\/\">Bicep has a playground<\/a> that allows you to start using existing ARM Template Quickstarts right away. Or if you choose to build them from scratch, the snippets with the <a href=\"https:\/\/cda.ms\/2df\">VS Code Bicep extension<\/a> will be a huge help.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/dev-to-uploads.s3.amazonaws.com\/uploads\/articles\/987m8ma7xxtofjt533aj.png\" alt=\"Bicep to JSON\" \/><\/p>\n<p>I was lucky enough to get one of the experts on Bicep to join us this week! We&#8217;ll welcome <a href=\"https:\/\/twitter.com\/adotfrank\">Microsoft Program Manager Alex Frankel<\/a> to the show to give us greater insight into how to use Bicep to create our infrastructure. I&#8217;ll ask Alex your questions, we&#8217;ll look at some Bicep basics, discuss best practices, and even kick off some deployments. Don&#8217;t miss this incredible opportunity to learn about building your <a href=\"https:\/\/cda.ms\/2dg\">Infrastructure as Code (IAC)<\/a> with Bicep!<\/p>\n<p><iframe title=\"AzureFunBytes Episode 50 - Intro to Bicep with @adotfrank\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/8ZMB1HCGBXA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p>Our Agenda:<\/p>\n<ul>\n<li>Why we are investing in Bicep in the first place \n<ul>\n<li>ARM Templates are by far the most popular declarative tool for deploying to Azure, want to improve the experience for those customers<\/li>\n<li>Clarify that Bicep is just one of many great options<\/li>\n<\/ul>\n<\/li>\n<li>Key differences between Bicep and ARM templates \n<ul>\n<li>Modules, richer intellisense, auto DependsOn, richer type safety<\/li>\n<\/ul>\n<\/li>\n<li>How the language is designed and the importance of tooling \n<ul>\n<li>In terms of language design (not complexity), Bicep shares more DNA with C# and TypeScript than traditional \u201cscripting\u201d languages like HCL or Chef<\/li>\n<li>Tooling is built alongside the language, so our syntax decisions are always driven by our ability to build tooling to go with it<\/li>\n<\/ul>\n<\/li>\n<li>Benefits of being \u201cAzure native\u201d \n<ul>\n<li>Day zero support for all resource types<\/li>\n<li>No state management without losing the ability to perform what-if (\u201ctf plan\u201d equivalent) and manage lifecycle (\u201ctf destroy\u201d equivalent)<\/li>\n<li>Works with other platform capabilities like Template Specs, Azure Marketplace, etc.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Full details of how the Bicep language works can be found in the <a href=\"https:\/\/cda.ms\/2dx\">Bicep documentation<\/a> and there is a rich library of examples to help you get a jumpstart.<\/p>\n<p>Alternatively, you can try the <a href=\"https:\/\/aka.ms\/bicepdemo\">Bicep Playground<\/a> or use the <a href=\"https:\/\/github.com\/Azure\/vscode-remote-try-bicep\">VS Code Devcontainer\/Codespaces<\/a> repo to get a pre-configured environment.<\/p>\n<p>If you have an existing ARM Template or set of resources that you would like to convert to <code>.bicep<\/code> format, see <a href=\"https:\/\/github.com\/Azure\/bicep\/blob\/main\/docs\/decompiling.md\">Decompiling an ARM Template<\/a>.<\/p>\n<hr \/>\n<p>Learn about Azure fundamentals with me!<\/p>\n<p>Live stream is normally found on Twitch, YouTube, and LearnTV at 11 AM PT \/ 2 PM ET Thursday. You can also find the recordings here as well:<\/p>\n<p><a href=\"https:\/\/twitch.tv\/azurefunbytes\">AzureFunBytes on Twitch<\/a><br \/>\n<a href=\"https:\/\/aka.ms\/jaygordononyoutube\">AzureFunBytes on YouTube<\/a><br \/>\n<a href=\"https:\/\/www.youtube.com\/channel\/UC-ikyViYMM69joIAv7dlMsA\">Azure DevOps YouTube Channel<\/a><br \/>\n<a href=\"https:\/\/twitter.com\/azurefunbytes\">Follow AzureFunBytes on Twitter<\/a><\/p>\n<p>Useful Docs:<\/p>\n<p><a href=\"https:\/\/cda.ms\/219\">Get $200 in free Azure Credit<\/a><br \/>\n<a href=\"https:\/\/cda.ms\/243\">Microsoft Learn: Introduction to Azure fundamentals<\/a><br \/>\n<a href=\"https:\/\/cda.ms\/2dc\">Microsoft Learn: Deploy and manage resources in Azure by using Bicep<\/a><br \/>\n<a href=\"https:\/\/cda.ms\/2db\">Bicep Documentation<\/a><br \/>\n<a href=\"https:\/\/cda.ms\/2df\">Quickstart: Create Bicep files with Visual Studio Code<\/a><br \/>\n<a href=\"https:\/\/bicepdemo.z22.web.core.windows.net\/\">Bicep Playground<\/a><br \/>\n<a href=\"https:\/\/cda.ms\/2dt\">ARM template documentation<\/a><br \/>\n<a href=\"https:\/\/twitter.com\/BicepLang\">Bicep on Twitter<\/a><br \/>\n<a href=\"https:\/\/cda.ms\/2d9\">Install the Azure CLI<\/a><br \/>\n<a href=\"https:\/\/cda.ms\/2dd\">Best practices for Bicep<\/a><br \/>\n<a href=\"https:\/\/cda.ms\/2dg\">What is Infrastructure as Code?<\/a><br \/>\n<a href=\"https:\/\/cda.ms\/2dm\">About Domain-Specific Languages<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week on AzureFunBytes we flex some Azure muscle with Bicep. Bicep is a language that allows you to use a declarative syntax to codify your Azure infrastructure deployments. Bicep is an Azure native Domain-Specific Language (DSL) that promotes a cleaner syntax, improved type safety, and better support for modularity and re-use of code.<\/p>\n","protected":false},"author":39313,"featured_media":62078,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[224,1],"tags":[],"class_list":["post-62077","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","category-devops"],"acf":[],"blog_post_summary":"<p>This week on AzureFunBytes we flex some Azure muscle with Bicep. Bicep is a language that allows you to use a declarative syntax to codify your Azure infrastructure deployments. Bicep is an Azure native Domain-Specific Language (DSL) that promotes a cleaner syntax, improved type safety, and better support for modularity and re-use of code.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/62077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/users\/39313"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/comments?post=62077"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/62077\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media\/62078"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media?parent=62077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/categories?post=62077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/tags?post=62077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}