0:34
Happy New Year, if I can say that. Hi, everyone. Yes. Hi, Håkan. Happy New Year, everyone
0:42
Welcome to Azure User Group Sweden. Today is very special because this is our great start
0:49
or beginning of the year, the first session, and we have a lot of things to learn today
0:54
I hope that you're having a great weekend in your couches, your bed or your home or wherever you are watching this from a mobile or everywhere
1:04
we're happy that you could join us today. How are you? How's your like holiday? So can you get a
1:10
time to recharge? Yeah, it was very, very relaxing and very recharging. But as we as we all know
1:18
Monday was the second of January. So it started very, very soon
1:23
yes i actually started my first i started my first week uh this week as well after two weeks
1:31
vacation and it was i had a good uh recharging and then after recharging i consumed some of my
1:38
battery already first week but it was great i learned a lot and it's great with challenges
1:44
and learnings from what we do all right so let me see we have uh people uh streaming with us or
1:52
joining us today. But before we get started, let me just introduce my friend and co-community
1:58
leader, Håkan Silvernagel here. So Håkan Silvernagel is a Microsoft MVP for AI. And by
2:06
daytime, he also works as a manager for big data and AI at Miles in Norway. And he is very active
2:15
as a public speaker internationally. And he is also contributing to the community
2:22
as an ambassador for Oslo AI.net user group in Norway and a lot of other communities
2:30
and even AI42, which is an AI school. So that's Håkan. And he's here with us as well to help us and guide us
2:39
Thank you. Thank you. So it's an honor for me to introduce Jona, Jona Anderson
2:44
She's the founder of our Meetup. And she is an Azure MVP and also a Microsoft certified trainer
2:52
And she is an international speaker and also a mentor. And in her day time, she works as a cloud and DevOps engineer
3:01
And she is also an active blogger and also a podcaster. And in addition to that, she is also writing a book
3:11
What is this book about, Jonah? Yeah, learning Microsoft Azure, cloud computing and development fundamentals
3:19
The result of my cloud migration journey, which is still in progress
3:23
And hopefully it will be published in the middle of this year
3:28
So I'm working to the finish line. And I've also seen recently or now the new year, you've started like a mini series
3:36
Yes. Maybe you can say something about that. Yeah, so I had an idea because all of us have been busy and then we have little time when we were on the break
3:47
I decided to start of the year to do a micro learning series, just one minute video where I share about Azure fundamentals
3:56
which is some topics are related to the book that I'm writing about
4:00
just to be like give that interest to the beginners in the cloud because i like this
4:06
idea that we welcome those that are new to the technology and it's just advanced level stuff
4:11
yes so that's that's it so follow me on linkedin if you want to know about it and i see the people
4:19
are saying hi already yes she's in everyone all right um let me let's get started so we don't
4:27
waste our precious time. Let me just start by sharing our code of conduct to everyone
4:36
So this is our code of conduct for Azure User Group Sweden. So as a community, we expect everyone
4:43
to be nice and friendly and listen with purpose and be thoughtful, respectful to others, especially
4:51
in our public live chat and even our after session FICA. Seek to understand the comments or feedback that you're getting
4:59
and not criticize. Be curious and open to share your ideas with others
5:04
even those that you don't know in the community yet. And be inclusive in your comments and questions
5:11
If you have further questions about a code of conduct, feel free to reach out to me and Hoken
5:18
And the details is also on our code of conduct page and meetup page
5:24
All right. You want to share about the FICA, Håkan, and then also about the prizes today
5:33
Yes. So me and Jona, we want to create an inclusive community and we want to give you, our viewers
5:41
a chance here to be able to ask questions directly to our speakers
5:46
So for that reason, we always, after our sessions, we have like a 10-15 minute Zoom meeting
5:54
So we call that Fika, which is very informal. You just log on to Zoom and then Esther and Freak will be there
6:02
And you can ask questions directly to them. And we will share this link with you at the end of our session
6:11
Yes, thank you. And in addition here, we also would like to promote two prices, two nice prices we have today. So one of the prices is from Microsoft. So we both can offer a learner badge here, which you can get by scanning this QR code
6:33
But in addition to that, we will also give away a cool backpack amongst the people who ask questions
6:40
So just ask many questions and you will stand a chance here of winning a very nice Microsoft backpack
6:48
Yes, thank you for that. So and then you may also scan the QR code for the learner badge for the Azure Heroes to claim this one
6:59
And one more thing later, you need to pay attention to our guest speakers today because they will be giving away a copy of this book
7:09
So you see the author is one of our speakers and they will have instructions how you can claim one of this book during the session
7:21
All right. Are you ready to introduce our guests, Håkan? Yes so let me add them here to the stream and I will just have like a little bit formal introduction first here Oh sorry
7:36
It's the first time after. There you are. You made me all nervous
7:44
It looks like Puzzle, right? I have to like watch. So, today we have the pleasure here of having two speakers, Esther and Freik
7:53
So Esther Bartel, she's a solution architect at Cognition IT, and she has worked in many different roles and functions as an IT consultant
8:05
And she combines her passion for design and implementing C2X solutions with a newfound love for DevOps automation using PowerShell, REST APIs, and JSON payloads to automate both on-premise and cloud infrastructure as code solutions
8:20
Wow, that's a very nice introduction. Thank you. Yes. And then we also have Frank, who speaks at various conferences worldwide, both Microsoft
8:34
Ignite, Microsoft Tech Summit, Microsoft Tech Days, Azure Saturday, and Experts Live. And he
8:43
has been a Microsoft MVP since 2011, and also authored this book, Getting Started with Bicep
8:50
which is the second edition that one lucky winner will be able to have in his or her book collection
8:58
And he also maintains a blog at the Microsoft Platform.net where he writes articles and blog posts related to Windows
9:05
Virtual Desktop, Remote Desktop Services, Azure and other Microsoft technologies. So we're very, very happy to have you here
9:13
Yes, welcome. It's a pleasure to have you devoted time for our community
9:17
I know that both of you are busy with your work and on community engagement you do as well
9:25
So thank you. I know, but these are the fun exercises or the privileges of being so actively involved in the community
9:36
As Frank and I discovered, even during COVID, it's such a pleasure to still have the virtual tour of our BICEP presentation
9:45
so even though it's still a wish of mine to get in an actual van
9:52
and do the road trip physical I'm still very happy that at least
9:57
virtually we get to roam the globe and share our enthusiasm for Bicep with so many
10:05
people and help and reach out to answer any questions that are out there in the community
10:13
so yeah and this is our first uh first session of the year as well so uh it's great to be here for
10:19
sure yes same for us uh hokan and i i believe yes yes all right so uh people are saying hi let me
10:28
just show a few of them uh nico's saying hi uh we have i'll just randomly show everyone so we have
10:37
The various people, Ashish, some common people, and, well, Lost Sound, Stefan, and a lot of them
10:48
Right. So many are excited to hear from you. So without further ado, maybe we should let you rock the stage, virtual stage, at least
10:59
Yep. All right. Yes. Okay. Perfect. Nice. yeah so um i know freke and i do not have direct access to the chat so feel free to interrupt any
11:14
of us if there are some questions that we can answer right away um welcome to the infrastructure
11:21
Just code with Bicep on tour. Once again, Freke and I saddled up, so to speak
11:29
and got very excited about showing all the cool stuff that you can do with Bicep
11:37
And thanks to Hocan and Jonah. Basically, we already had like an awesome introduction
11:45
So I'm very grateful that you did that because normally I just kind of stumble introducing myself and even more introducing Freik
11:57
So yeah, I guess we can just skip these two slides and just dive right into the funnel
12:03
Don't you think so, Freik? Yeah, let's do that. So we have, as Jonah also introduced in the Ossetlin introduction
12:11
we are going to be giving away something during the session. So maybe we should fast forward to that slide
12:17
Do you want me to quickly? Yeah, let's do that. Just give all the spoilers away
12:22
Why not? Oh, there it is. There it is. There it is
12:30
I got it on time. During this session, we are going to give away a physical paperback copy of the Bicep book
12:37
So in order to join that competition, what you have to do is quite easy
12:43
Just send us a tweet message about this session. What are your thoughts or what's your feedback
12:50
Make sure to mention us or at least one of us to join that competition
12:55
Or if you're not on Twitter, LinkedIn, that is all fine as well
13:00
I will make sure to draw a winner somewhere later this weekend and ship you a physical paperback copy of the book
13:08
So, yeah, we'll look forward to that too, to sharing that with you
13:13
Yeah, and to challenge you to be interactive during this session as well. Yes. Yeah
13:21
Because we would love for Hogan and Jonah to already find such an active community and
13:29
be able to give away that backpack as well. Yep. So let me see if I can quickly... Yes
13:36
Thanks for the home button. Oh, you already made a change. Thanks, Vic
13:42
Awesome. He likes to surprise me. Usually it's you surprising me. Usually it's me
13:50
Yeah, so I'm happy that you discovered this as well. So for those of you who are kind of wondering why I started laughing
13:59
Freke and I have this wonderful presentation shared through OneNote, which allows us to both share the same content and actively change the content
14:11
during the presentation. So that keeps us both sharp and on our toes
14:18
And in the past, yeah, I did surprise Freik by editing some of the slides at the end of the presentation
14:26
But thanks for doing that, Freik. Awesome. So first of all, we figured that if we're going to take you
14:34
on this bicep journey, it's also very important to start at the basics and basically explain where Bicep fits into the whole ecosystem of transitioning
14:47
or migrating to cloud or even getting started with your cloud journey
14:53
And in our case of course we focused on Azure So if we talking about Bicep we have to also explain infrastructure as code And I know this is a new very popular terminology same as with DevOps
15:08
But what we're talking about, if we're focusing on infrastructure as code, is that we're basically adapting some of the software tooling and mechanisms to provision infrastructure resources in our private or public cloud environments
15:29
And basically, that means that we're focusing or we're using templates and scripts together with an orchestration tooling to provision those resources
15:42
And if we're talking about infrastructure resources, it's usually network storage. But it also means that whole cloud infrastructure and security settings that come with that as well
15:55
So hopefully this gives you an idea of where we're starting in our BICEP journey
16:03
And one of the things that, well, not confused me or that I found very important to also explain if we're talking about code is that there basically are two specific, I'm not going to say streams, but specific types of coding that we can talk about
16:24
So the first one is imperative code. And basically, when we're talking about imperative code, we're talking about executing a sequence of commands
16:34
I like to basically translate that as providing a step-by-step instruction manual
16:40
And to link it more to one of my favorite hobbies, it feels like following a recipe for basically building your own burger, which is something that I love to do
16:51
So what I mean with that is that you have to specify each and every step, as you can see in this recipe as well
16:59
It focuses on not just grilling that minced burger, but also on how to prepare your barbecue sauce
17:10
And in which order do you need to build that bun together with the burger and some healthy things as well on there
17:18
And bacon, lots of bacon, of course. If we're translating that back to infrastructure as code, we're mostly talking about scripts because if we're scripting our automated deployments or automated configurations in Azure, for instance, it's all about those step-by-step instructions, as you can see in one of the examples that I included in this slide
17:44
The other type of code that we can talk about is something that is becoming more popular
17:51
And I will get back to that right in an instance. So if we're talking about declarative code, it's much more focused on specifying your end configuration
18:02
Basically, it feels like ordering from a menu. And of course, I included a burger menu because you already figured out where my hat was during this slide deck preparation
18:17
But you do realize that it's actually lunchtime for us, right? Yes, yes
18:21
That's what I realized as well. I think that's why I'm so focused on the burgers, to be honest
18:28
So bear with me. Basically, what I mean with ordering from a menu is that you specify the end result that you want to have or the end configuration if we're talking about code
18:40
But it still allows me, same with ordering in a restaurant, ordering your lunch in a restaurant, is that you can still specify some of the settings
18:50
Like, I want my hamburger to be medium rare cooked. I would like to have the bacon on it, but not the tomatoes
18:59
So you still have opportunities to make it a special order or a custom order
19:06
But still, in the end, you're focused on the end result. So I don't have to care or I don't have to be bothered with how it's cooked in the restaurant and how that burger is built up, like we saw with the previous one, the imperative code
19:22
So translating that back to infrastructure as code, declarative code is all about using templates
19:28
So that template specifies my end configuration. And then I basically present it once again to that orchestration tool and then have that tool determine how to build it in, for instance, Azure
19:43
In this case, talking about templates and the example, this is what BICEP is all about
19:50
but before we dive into PyTap one more little or little mention of course if we're talking about
20:01
templates and Azure it's all about the Azure resource manager templates or the ARM templates
20:07
and when I first dived into ARM templates I got all excited when I saw this example
20:14
of how the template is structured, because that looks very easy. It has clear sections for parameters, variables, resources
20:24
and even for output that I want to share back after my deployment
20:28
But if you really get started with ARM templates, it might become a bit overwhelming
20:35
At least sharing some personal experience, it was very overwhelming for me
20:40
And I was one of the very fortunate people that had Freak on speed dial
20:46
So whenever I was working on getting an Azure virtual desktop deployment automated through ARM templates
20:57
I had Freak on speed dial to talk me through all the troubleshooting and scrolling back and forth through this template
21:04
to figure out where I made even a typo or where we could blame DNS
21:11
to be the root cause of all our problems. And that's when Freik showed me Bicep
21:18
and he got all excited about it. And I think it's even best to let you explain Bicep, Freik
21:25
because I think you did a great job explaining it to me. Yeah, for sure
21:30
Yeah, so that's actually a great introduction into into what bicep is so if you're not less familiar with bicep what is it in well short short
21:42
description it's a domain specific language or short dsl so what does that mean it allows you
21:48
to create resources uh in the azure cloud because it's specifically designed for the azure cloud
21:54
in a declarative way right so recall the hamburger menu that so does just shared so the question that
22:00
we always get is, isn't that exactly the same as the ARM template? Although, you know, all the
22:06
complexity that Esther showed, that does the same thing. And the answer is yes. So the second
22:11
question that we then always get is, does that mean that a BICEP template as such is going to
22:16
replace ARM and ARM templates? And the answer there is definitely no. So BICEP is a transparent
22:24
instruction layer on top of ARM and on top of ARM templates with the purpose with the goal to simplify the authoring experience and to provide a much cleaner syntax when it comes to reading or troubleshooting
22:38
or digesting a specific template so we'll see some side-by-side comparisons in our demos in
22:44
just a second as well so bicep takes away all of that complexity uh while still allowing you to
22:52
take advantage of all of the capabilities of ARM templates and the ARM engine, which are still very
22:58
very powerful. So the other thing that Bicep also brings and focuses on is the ability to reuse your
23:05
code. So that means sharing your code with colleagues or someone else that you want to share
23:12
your piece of code with, providing a functionality called modules. So this allows you to extract
23:19
pieces of code, put them into separate module files and share them within your department
23:24
or within your company, or maybe even worldwide. So we'll see some examples on how to do that in our demos as well
23:31
That's a great spoiler for the question that Alan already asked. Awesome, Frig
23:37
Okay, good. So that's, yeah, basically think about Bicep as a layer on top of ARM, removing the complexity
23:45
and really focusing on, well, getting that hamburger ready, so to speak
23:51
So I still love the ogy. It's awesome. So when you take a look at BICEP
23:58
where do you position that in the Azure Resource Manager infrastructure architecture, if you will
24:03
And of course, this is a super simplified architecture just for the purpose to show you where BICEP comes in
24:09
But we have that Azure Resource Manager engine, the big blue bar, right
24:14
That is our front door to all of the resources and resource providers that we have in Azure to create storage and compute and networking and identity management or even Kubernetes clusters, et cetera
24:27
So on top of the ARM engine, of course, are different ways to communicate with the ARM engine
24:31
We're not going to focus on that. But one of the ways is using an ARM template
24:35
And that still remains. But on top of that, we have the BICEP language
24:40
So you as the infrastructure's code creator or writer or author, you will be authoring Bicep templates instead, which you will then transpile into an ARM template
24:52
And by transpiling, we mean taking a source code of a specific language or an infrastructure's code language and transforming it, transpiling it into another language by maintaining still the same goal and purpose of that template
25:06
So in the early days of Bicep, so this is the 0.1, 0.2 version, which is already a long time ago, you explicitly had to do that yourself by using the Bicep command to transpile it yourself into an ARM template and then provide that ARM template into the ARM engine
25:22
But today you can just directly pass your Bicep file directly into the ARM engine
25:28
The ARM engine will then transpile it for you and process the creation or deletion or whatever you're doing
25:34
making it even easier to build your infrastructure based on code. Yeah, definitely
25:42
Yeah, and so it will become much more intuitive as well, as we'll see in a couple of demos
25:49
And the modularity, that's what we'll focus on today as well, is extracting pieces of your code, put them into separate BICEP files
25:57
which that will then turn into a module, to be able to reuse that within your company or worldwide as well
26:04
The last thing I want to mention here is that Bicep, the entire thing, is open source, right
26:10
So it's all available on GitHub. And we all also encourage you to take a look at that and provide feedback, whether that's bug requests or pull requests or new features that you want to introduce
26:22
Because SNI, we have a close relationship with the product team that's behind Bicep and ARM templates as well
26:29
and we know for a fact that they are super eager to learn about what you're doing
26:35
and what you're running into in terms of issues or things that you want to achieve
26:40
So they are looking a lot on the feedback that's provided from the community
26:45
and from other members as well. And at the end of the session, we'll have a couple of links to share
26:50
on how to get engaged with the product team on a monthly basis as well
26:55
So stick around for that last slide. So before we dive into the demo, the next question that we always get, especially over the last year or so, I think, is what is then really the usage of Bicep
27:11
How well is it really adopted in the market? Because we've been using ARM templates for many, many years, right
27:18
And so Microsoft isn't really keen on, of course, sharing a lot of telemetry data about their cloud, right
27:26
It's their intelligence. but they did share some details last year. And that showed that they have about a million deployments
27:37
or so a million resources being deployed using the Bicep language. So this was back in May 21, which is, of course, quite some time ago
27:48
But the reason that they picked this one is because at this time they had the 0.3 version, which was the first production-ready version of Bicep
27:55
So million resources, that's still a lot, right? But they also shared back then one of the latest numbers
28:03
which was of August 2022, and that showed 22 million resources being deployed
28:12
So, of course, it's not about the number of resources that are 22 million, it's a lot, right
28:18
But it's more about... Zeist, Miller, yeah. I was not going to say that
28:22
but it's, of course, much more about... That's why I'm saying it. It's of course much more about the actual growth of adoption, right
28:30
So coming from 1 million to 22, that says a lot about how many users are actively starting to adopt the new language
28:40
Yeah, but it also explains why Microsoft is also very enthusiastic and very quick in responding to any product improvements or product requests that we have as a community
28:52
So it definitely is here to stay. Making sure that it's not a replacement for ARM templates, but it's just another set of tooling that can make it a lot easier to get started with building templates
29:10
If ARM is just one bridge too far as a beginner, then Bicep definitely, and we will show that in the demos in just a minute
29:18
But BICEP definitely is built to make it easy for you to get started with those templates
29:27
Yep. You can also tell by the way that the BICEP language is now also promoted across like the docs pages and documentation, etc
29:35
Where Microsoft provides sample code, the user only provides sample code in ARM
29:39
But they now provide both as well ARM as BICEP. So that's also, of course, a clear indicator on where they're going with this language
29:47
But yeah, well, we can talk about it for hours, but let's dive into a couple of demos, right Esther
29:56
Yes, yes. So first of all, I think one of The really cool additions to having Bicep for our usage in building templates is that there's also a Bicep extension for VS Code
30:13
And at first, I was still struggling to adapt VS Code as my new code editor
30:22
Because, well, I'm a PowerShell girl, so I still love the ISE as my very safe haven of slowly building code
30:34
But I have to admit that once I got started with Bicep and having that extension active in VS Code really made it so much easier to get started
30:45
And that's one of the reasons why instead of doing a live demo where I usually get distracted with all the cool stuff, I pre-recorded two videos to really zoom in on that added value of the BICEP extension in VS Code
31:04
So let's get started with that. And I auto-started the video, so that's the introduction
31:10
So first of all, to get started with creating a resource template, this is already showing all the additional information that that extension is giving me
31:24
It's helping me step by step actually building the code. It even has an option to make sure that I have all the required properties instantly there in my template
31:37
So all I have to do is just specify all the values for those properties
31:43
You can tell that I live in the Netherlands because I pick West Europe as the location
31:48
But the other cool thing is that the extension also gives me a pop-up of available options
31:55
Or even if I hover over with my mouse over the property, it gives me the type that it is, string in this case, but also all the available options
32:06
This makes it so much easier to create a template that is error less or has less errors
32:15
And the other cool thing, but this is basically because Freak is a huge contributor to snippets
32:25
And I realized the video is a bit going fast. is that if you do not type in resource full
32:33
but do RES minus, then you get a full list of snippets
32:37
And those are basically pre-configured pieces of code that you can already instantly enter into your template
32:45
or add to your template. So hopefully, I know this was very fast
32:52
but basically bear with me. I'm just that excited about the extension
32:56
But this gives you hopefully an idea of within less than two minutes, you are capable of building a template that will deploy a storage account in Azure automatically for you by just presenting that template to the Azure Resource Manager
33:13
One of the other examples that I have dies into how the BICEP extension also helps you in basically troubleshooting or fixing problems or offering fixes to problems, which is called a linter function
33:31
So if we're looking at this example of code, it already has a couple of problems that are asking to be fixed
33:40
So what you can see is that I have at least one error about not being very secure with my parameters
33:48
And once again, the extension gives me additional information if I hover over, in this case, the section that is marked as an error within my code
33:59
I also have a couple of warnings. And as you can see, it also provides links to each and every linter rule that is checked by the BICEP extension. And this one, I think, is even one that already offers me a fix
34:17
For instance, by saying that I forgot to specify that this type of parameter is a secure string
34:26
So I add the decorator to it. And what you see, or hopefully you saw, was that now instead of a warning, I have an error
34:34
And that's because I do have to fix the adding of secure information into my template
34:43
The cool part is that you can also control the number of error messages or warnings that are flagged by the extension by configuring a bicepconfig.json file in the same folder as your bicep files
34:59
And basically, it has all these rules that you can flag as either give me an error, give me a warning, or in my case, I'm just simply ignoring all the security settings or warnings by totally turning it off
35:18
And what you see is once I save that BICEP config file, the problems are getting less
35:25
I'm not saying this is a good way to solve your problems
35:29
Please bear with me. Please follow the instructions on how to solve it
35:34
But for demo purposes, this makes it a lot easier because all of a sudden warnings can be changed into informational messages
35:43
which means that I can easily use or continue in creating and testing other functionality
35:52
In this example, I have a lot of parameters in my template file
35:57
And another thing that VS Code has is a lot of built-in functionality through the context menus
36:03
in this case offering me to easily build a full parameter file
36:10
that you can use as an input when you offer your BICEP template to the Azure Resource Manager
36:17
and providing the context-specific parameter values through that parameter file
36:27
just as what we normally would do with presenting an ARM template to ARM
36:33
This is a fast course, I do realize that, but I didn't want to take away too much demo time from Freik
36:43
So, Hocan, if you can switch to Freik's screen, and I hope you're ready, Freik
36:51
Yeah, I am. Awesome. Then I would gladly hand it over to you and see if I can edit some more slides in the background
37:02
We'll see. Yeah, thanks for the demo. So that I think that really shows the power and capability of the VS Code editor when it comes to offering BICEP templates with all of the additional help that you get and the linter rules and the way they are actually guided into creating from scratch
37:21
So the next step we do is we take a look at some of the other syntaxes approach you can do with the modularity stuff that we mentioned in the beginning So the first thing I want to show you is an existing Bicep file And this deploys actually
37:37
multiple resources into a single file, which is, of course, a very common scenario. So in this case
37:43
we're deploying a virtual machine with containing a VNet, containing a network adapter, and containing
37:49
a virtual machine. So the first thing we can actually do just to show you some side-by-side comparison, and
37:56
this is also added recently in VS Code as well, I could just right-click this file and
38:01
say build ARM template. So what I now get on the left-hand side is the JSON equivalent of the Bicep file
38:08
And if I would open these up like side-by-side, we can clearly tell the difference between
38:14
left and right. So this is where all the complexity really starts to show
38:19
So left-hand side is the original, you could say old school JSON template
38:24
with all of the brackets and semicolons and all of the syntax overhead going on
38:29
where right-hand side is much clearer and much easier to read and to digest
38:33
and to start authoring. So just as an example, if we would scroll down to the number of lines
38:39
inside this JSON code, it would be 129 lines, whereas the same thing in Bicep is about 90 lines, right
38:46
So we're not only reducing in syntax, but also in number of lines of code that you need
38:54
The thing I wanted to mention here is if you start to deploy multiple resources
38:58
there's most likely a chance that they depend on each other, right
39:02
So for example, if I would take a look to this, let's take a look at the
39:08
that's the virtual network as the example here. So we're creating a virtual network, and we can see that there's a dependency
39:17
Let me scroll down. So once we start to create the network interface, there's a dependency because, of course, first the virtual network needs to exist prior to be able to creating that VNet
39:27
The network interface, sorry. Right. So that's an explicit depends on section here
39:31
If we take a look at the BICEP code on the right-hand side, I scroll down to the same resource declaration, which, of course, looks much simpler
39:39
but there's no depends on section here. So how did it end up in the JSON template
39:45
that actually is going to be used by the ARM engine? So the thing is that what Bicep does
39:50
is when you start to refer to a resource that you previously declared, right
39:54
So this is a resource showing the network adapter and I'm pointing to the VNet
39:58
which is a symbolic name that Esther also showed and I'm getting the ID of that VNet
40:04
At that point, Bicep actually knows that there's a dependency between these objects
40:08
and it starts to add these depends on sections for you. So that's what we call an implicit depends on section
40:14
So you don't have to worry about that anymore. And if you are familiar with ARM templates
40:18
and you've been authoring those in the past, you will probably know that once you have a lot of resources to deploy
40:23
it can become very tricky to have the good amount of the depends on sections
40:27
to make that deployed in the correct order. So that is what BICEP also does when it comes to multiple resources
40:34
So the next thing I want to show you is that module part, right
40:39
We've been mentioning it a couple of times. Let's take a look at it
40:43
So what I have here is a main.bicep file, which is just another bicep file containing the parameters, the variables that Astor in the beginning also showed
40:53
But we now have something else. We're not using the resource name here, but we're using the module
41:00
module so we specify module and then that same symbolic name and then a reference to a local
41:06
bicep file so this is us telling the arm engine anything that's specified inside this bicep file
41:13
treat it as a module and also deploy it as part of this main dot bicep so what we can then do is
41:20
define the scope where is this going to be deployed right so all of the resources inside this bicep
41:25
file are going to deploy it inside this scope and this scope as you can see is a resource group
41:31
and then we're then going to pass a couple of parameters towards that module so these are
41:35
parameters that we collected above in this main bicep file and we're passing them along to this
41:40
module to be able to have the vnet location in this case the vnet name and the subnet name
41:48
well you can also see and this is also something that's really uh handy to use in inside bicep
41:53
files is conditional deployments right so this is not a module declaration this is a resource
41:58
declaration so we're creating a resource group but we're doing that based on a dependency so we're
42:03
only going to deploy that if this um uh if this condition is true right and as you can see this
42:09
is a boolean specifying to a parameter we collect above so only if this uh boolean is set to true
42:17
this is actually going to be deployed so that's an example of an easy example but you can imagine
42:21
in more advanced scenarios, but you can use conditions to deploy something or not deploy it
42:28
So if you take a look at this specific file here, this is, of course, a local file on my local file
42:33
system for now. Let's actually take the VM as the example here. We can see that although we're using
42:41
this as a module, this is just another BICEP file, right? So there's no difference between a module
42:46
and a regular BICEP file. No, but it does basically allow us to use like templates
42:52
and reuse that code in our deployments, right? Yep, exactly. Yeah, so I could just take this BICEP file
43:00
and deploy it separately. Or as I said, as I showed in the main file
43:05
leverage it as a module and just treat it as sort of a black box and have it deploy
43:09
whatever inside that module file. Yep, that's right. So the other thing is that inside this file, we're also using something that's called loops
43:19
And this is a very common scenario. Let me just get this screen out of the way. So in this case, we are declaring a resource, which is a virtual network adapter
43:28
Again, we're not deploying it once, but we're deploying it multiple times
43:31
So we're creating multiple instances of this network adapter interface based on the loop condition
43:37
So we're going to say that for I and I is going to be the index in range of one to number of virtual machines
43:42
deploy this network adapter. So in this case, we're going to deploy
43:45
five network adapters at the same time. So that's an example of how you can use
43:50
looping inside modules or inside Bicep files as well. The other interesting thing
43:57
which is also a very common question, is we've shown you the way to point to an existing resource, right
44:04
So right here, I'm pointing to the VNet that I declared above
44:08
and I'm getting the ID, the social property of the VNet. But what if I didn't create that resource inside the Bicep file
44:15
Would I still be able to point to that to retrieve properties? And the answer is yes, because we're using that existing keyword, which is a very powerful keyword, which essentially says we are not creating that VNet here, but instead we're pointing to an existing VNet that has been maybe created by someone else or could be inside a completely different Azure resource group
44:39
Subscriptions, yeah, subscription or resource group, etc. So we're pointing to something that we know is out there just to retrieve the properties
44:46
So that's the existing keyword. Yeah and I think this makes it very powerful because at least from customers where I been I am still allowed to create all the virtual machines that I need within my subscription but I definitely not allowed to build any VNets or subnet configurations because that basically the other team
45:09
So I love how we can reference existing resources in Azure and still use the full power of templates to automate my own resource deployments
45:21
Yeah. Yeah. And I agree that the symbolic name in itself, that's a really powerful thing in Bicep. So that results in those huge lines of codes in the JSON equivalent because there's no such thing as a symbolic name in there. So it's definitely really powerful to use
45:38
So that's in a nutshell how modules work, right? So I have a main.file and I'm pointing to, in this case, different module files that contain other pieces of code that might be written by someone else or by me or I'm sharing that code
45:51
So I think we can really bridge this to the question that Alan had at the beginning of our presentation, where he basically asked, how can we use BICEP modules and even share that easily with others
46:10
Oh, thank you for showing the question. Awesome. So what's the best way to create Bicep modules from resources? Yes
46:19
And also the best route to share them with other team members
46:23
That is a great question. Yeah. And it's a great jump towards the next topic
46:27
So very well done. So as you can see right now, we have Bicep files that are stored on my local file system
46:34
Right. So that's ideally for me. ideally for me, but if I would want to share this with Esther, that's going to be a challenge
46:40
Right. So this is where also module registry concept comes in. So let's actually dive to that topic as we are
46:51
Yeah, because I think from a DevOps point of view, it would be easy to say, oh, put everything in a repository and then you have a centralized place to maintain any of the changes
47:05
or improvements that you're making to the modules. But I think the registry is even more powerful
47:12
because that allows you to also be more in control of versioning a full module file
47:20
Yep. Yep, totally agree. Let's dive in and actually emphasize that versioning as well
47:28
That's important to mention. So what we're doing is this is just another BISO file
47:34
just to show you what we're creating as a prerequisite for using these container registries
47:40
which are short ACR. So that stands for Azure Container Registry. So you are creating that
47:44
resource, right? So this is just another by sub file to create that ACR inside the Azure cloud
47:51
What I'm then able to do, and let me open up the PowerShell commandlet. Where is it
47:58
It's 15, right? Oh, there is. That's the wrong number. I'm not sure why that was
48:07
Okay. I confused myself there. But this is the deployment line to get that Bicep file into there
48:13
And then the end result, and I'll show you that in the portal in just a second
48:17
we're able to retrieve, in this case, the URL that points to that ACR
48:22
to that Azure Container Registry. What we're then able to do is use the BICEP command to publish a module that is currently on my local file system into that ACR
48:33
So the end result then is that it's going to be a module file inside that ACR that you can then share with other coworkers based on the permissions on that specific ACR
48:44
So let me switch to the Azure portal real quick. So this is the example here
48:51
We have that container registry. If I would open it up, we could see that there is a section here called repositories
48:58
And inside the repository, this is that path towards the module, right
49:03
So this can be anything that you want it to be. In this case, it's Bicep modules storage, for the example
49:08
And here's that versioning, right? So this is V1 of that Bicep file
49:13
So this means that I can now share that with other coworkers to start using that module
49:18
without having to have it on the local files. So the way you would do that is super easy
49:25
If I were to take a look at this main.bicep file, we would still use the module keyword
49:30
we'd still use that symbolic name, but this time we're not pointing to a local file
49:35
but instead we're pointing to the URL where this version of the module is stored
49:40
And that's it. So just, you know, the rest is just similar, just providing it the name, again
49:45
the scope where we want to deploy this, pass it the parameters and start leveraging this module
49:50
That's the way that the ACR works. It's a really powerful way to, as we said
49:56
share BICEP modules across anyone who has access to that ACR essentially
50:03
This basically allows us to build a similar registry like the PowerShell gallery
50:10
for instance, or your artifact feed within Azure DevOps. So it gives you a very centralized location to basically separate maintaining and versioning your modules from the actual templates that you are deploying
50:28
So I think that makes it very powerful to even more easily share your modules with the entire community, so to speak. Yeah
50:41
Though there is still like one little small print with this, I think, Freik, because the
50:48
registries are still bound to my Azure subscription, right? So it's still only accessible by my co workers and not the entire community
51:00
Yeah, correct. Yeah. So anyone who has who needs to leverage that model, of course, needs to have Azure permissions
51:06
towards that ACR and to be able to read it and get the code
51:11
That's of course going to be mandatory. But on that side, Microsoft is also working on something else
51:18
that they call not the ACR, but the Microsoft container registry, which is then the public version of something that we saw in just a second
51:29
So these are a piece of code that Microsoft put out there
51:33
that you can use in the same way. So now it's not called ACR, but it's called MCR
51:38
What's in the name? But that allows us to use these modules the same way
51:43
we're using the ACR modules as well. So in this time, we're relying on Microsoft providing these modules for us
51:51
So for now, it's just a small list of modules that they have created up until now
51:57
We'll see this grow with more scenarios, more use cases to leverage
52:02
And hopefully this at some point will also be open up for anyone to contribute code to as well
52:09
So that's the MCR part of the container registry solution. So looking at time
52:16
So the last thing that I do want to show you is the scenario of what if you are an existing ARM template developer and you want to transition to Bicep as a great way to start from scratch But what if you have a large collection of JSON files and you want to transpile those back to Bicep
52:35
Is that possible? Of course it is. Otherwise, I wouldn't mention it
52:39
But here's an example. So we are looking at a JSON file, right
52:43
So this deploys, again, an Azure Virtual Desktop scenario with a couple of resources
52:49
What I'm able to do is just right-click here and say decompile into Bicep
52:53
And within a second, we now have the BICEP source code of the JSON equivalent, right
52:58
So this is a super easy way to transition to BICEP based on existing work that you did
53:04
existing resources you created using JSON files. The good thing is, you know, that allows you to decompile an entire BICEP template with all of the resources in it
53:15
But sometimes you might want to have a really specific resource and just one and not the entire JSON file
53:21
So what you could then do is let's open up a sample Bicep file here
53:29
And let's actually quickly go to the Azure portal and take a look at just a random resource
53:36
In this case, we'll select a virtual machine. We'll select JSON view and we'll copy the resource ID here
53:44
So going back to my VS Code, I could just right click here and I could say insert resource
53:50
history resource ID, hit enter, and within a second or so. It is a live demo
53:59
So it is a live demo. Let's try that again. Insert resource
54:08
Yeah, I think Azure is not on our site today. You can feel the excitement, right? Yeah
54:16
Oh, there we go. Yeah, it's just slow. slow. Okay, and I should place it twice. So that is why I also get the linter rules. That's a nice
54:23
bridge through what's going to rules. But as you can see, this is the full base of bicep language
54:29
of the resource that I just entered. So just a single resource by pointing to a resource ID
54:34
you can use any resource ID that's out there in the Azure cloud and just, you know, take a look
54:39
at the code, start reverse engineering and start learning from it as well. That's awesome. Yeah
54:45
Yeah, so that's on the transpiling and retranspiling or backwards transpiling or whatever you want to call it section
54:53
Well, before we go back to the slide deck, there's one more thing I want to show you, which is in terms of visualization
55:01
So as soon as you start to create more resources and leverage more modules, at some point, you probably want to see what you're actually deploying, right
55:10
and that is now also really easy right from within the console. I could right-click any Bicep file
55:16
and I could say open the Bicep Visualizer. Oh, yeah, I love this one
55:22
Right, so I now have an interactive diagram of all of the resources that I'm about to deploy
55:27
including mentions of the modules I'm using, the resources that I'm using, et cetera
55:33
And as you can see, this is also interactive, so I could change this around or revert back to what it was as well
55:37
The other great thing about this is that it's also interactive in a way that it builds up as you are typing
55:45
So if I would open this up side by side, and if I would, for example, introduce another resource here just by simply copying and pasting it for now, getting rid of the linter rules, you can see that right here, any resource has been added, right
56:00
So as I'm typing this and as I'm changing the template, it also starts to update and visualize what it's actually creating
56:07
So that's a really easy way to do that. And this is, of course, just three resources
56:14
But just to show you what it looks like, if I would take a little bit more resources
56:18
like, for example, in this one, and by the way, also the visualizer is also available
56:23
right from within this click here. Yeah, the cool part is that the visualizer also includes all the module references
56:31
Yeah. So it doesn't just show the main bicep with links to modules
56:38
No, it also takes on the content of the module. Yeah, so the module is outlined here like that folder icon
56:46
and inside of there with all of the resources. But as you can see, this is really helpful
56:50
when you start to document this or explain this to a coworker
56:54
or just want to have a visualization of what you're actually going to create
56:58
So that's definitely a great one to start using as you are learning the language
57:03
and trying to figure out what you're actually creating inside the Azure portal
57:08
Yeah, and we're still trying to push Microsoft to also include an export to JPEG
57:16
or an export to Visio, for instance, option in there. But unfortunately, that's taking
57:24
that's a bit larger challenge, I think, than just the visualizer. So right now, it's still a matter of taking a screenshot and adding that to your documentation or wiki pages, whatever you prefer to keep up to date with the code you're building
57:45
But yeah, I'm still very hopeful that in the near future, we will be having export opportunities
57:53
Yeah, that would be great. All right. So let me switch back to the deck
57:58
because we promised to share a couple of links and a couple of call to actions
58:03
Did you want to go over these, Esther? Oh, sure. So as we mentioned at the beginning
58:10
first of all, there's a very extensive documentation provided for BICEP from getting started
58:17
and showing you what you need to set in place, even mentioning VS Code and the BICEP extension
58:24
So that's the easy link to get started with Bicep. And as Frank mentioned at the beginning, we're also in very direct contact with the developers
58:36
But that's not an MVP exclusive perk, so to say. There is a BICEP monthly community call where they invite everyone in the community that is interested in BICEP to join that call and to basically give direct feedback and comments on the roadmap that they present for BICEP
59:02
GitHub, I think, is very explanational. As we mentioned at the beginning, BICEP is open source
59:08
So they have listed all the code in a BICEP GitHub repository
59:17
And they invite you as well to make contributions. For instance, I know Freak made a lot of contributions to the snippets that we can instantly use in the code
59:28
but also if you report any issues that you might encounter or if you have any modules that you would like to share with the community
59:41
this is the place to be to create your own pull requests and see your own contributions in the BICEP code reflected
59:53
And for those of you who felt like, especially my videos were too fast
59:59
to reproduce yourself. There's also a whole Bicep learning path available on Microsoft
1:00:08
And I think it even gives you your own sandbox to experiment and to see how your templates
1:00:16
are deployed in Azure. So feel free to check out all these links
1:00:21
and get into action, get involved, get excited, and share your excitement about Bicep with us
1:00:30
And for those of you who are gonna join us at the FICA
1:00:35
I might just even share Freik's phone number. We would love, I would love to not be the only one to have him on speed dial
1:00:47
No, just kidding. But definitely feel free to reach out to us
1:00:52
through social media. maybe not by phone, but at least through social media
1:00:57
If you have any questions, if you need, or even have exciting stories that you want to share with us
1:01:03
we'd be very happy to help you out. Yeah, and in regards to learning
1:01:08
you can still send in those tweets to win Dubuque, so make sure to do that
1:01:14
Other than that, do we have any questions? I don't have any visual on the chat
1:01:19
but are there any questions you want to address now, or do we want to do that
1:01:23
Yes, I think we'll take some questions here. Yes. Perhaps we can get it answered in
1:01:29
So we can start off here from the start here. So we have Ashish is asking
1:01:34
how does Bicep authenticate with Azure? Yes, so what we mentioned at the beginning very quickly
1:01:42
with the infrastructure as code slide is that we're using those templates
1:01:48
So in this case, Bicep, in combination with what I call an orchestrator
1:01:53
But what we basically mean is that if you want to deploy your BICEP templates to or present it to the Azure Resource Manager
1:02:03
you usually use either PowerShell or the Azure CLI to run that new deployment commandlet
1:02:12
And that allows you to either provide an ARM template or a BICEP template
1:02:18
So in that process, you first obviously, or it was, I stepped over that, to use that commandlet, you first have to log in to Azure
1:02:32
So that's where the authentication happens. So then you are already able via the CLI or an API to communicate with the Azure Resource Manager, present the template, and then have the magic happen
1:02:46
So I hope that answers the question. Do you want to take this next one
1:02:53
Yes, I do. Yes, any advice? I was switching between like sharing
1:02:58
because I don't want to remove Easter on this one. Okay, let's remove the screen
1:03:03
I want everyone to see you when you answer this question. So I'll remove the PowerPoint for now
1:03:08
So we have a question for Alan and he said, any advice on troubleshooting BICEP deployments
1:03:15
Have an issue where BICEP deploys a V1, VHub, an Azure Front FW. Firewall
1:03:23
Firewall. And when it reruns, it disconnects the firewall from the hub
1:03:28
Tried using what if, but didn't help. Oh, wow. Yeah, yeah. So one thing that I usually do
1:03:38
but that's because I'm still very visual oriented, is that I always double check in Azure itself
1:03:46
either at the resource group, what deployments were done automatically. So if you go to, in the Azure portal
1:03:55
go to resource group, I think even on subscription level, there's a tab that says
1:04:01
or an option in the menu that says deployments. And there you can see all the deployments
1:04:08
that were presented basically, or were done by the Azure resource manager
1:04:12
So that's usually my first point of entry or check when one of my deployments is not working to see if that produces any problems or error messages
1:04:26
And then I can work on that one because it might be that some of the references are not done correctly Or even if you deploy it for the second time that bicep doesn or the arm arm doesn fully understand that it an existing resource already So it might be that one of the
1:04:48
references to the resources were not flagged as already existing or created by the template. So
1:04:58
that might interfere and explain why it's disconnecting from the V hub. Yeah. And also
1:05:04
So depending on the way you're deploying this, sometimes you don't get the full error
1:05:08
message inside the console where you're deploying from, whether that's PowerShell or something else
1:05:13
And the portal does allow you to click through all of the error messages and gets probably
1:05:17
some more details on the exact error. But if, well, if you're not able to fix it, feel free to either send us something and
1:05:26
we'll have you take a look at it in more detail to see if we can help you along
1:05:31
It's no problem. While eating a burger or something like that. Thank you for the answer
1:05:36
I actually got hungry at the beginning of the session. I didn't have lunch or breakfast yet
1:05:42
Oh, okay. I do apologize. I'm going to eat something after this session. You made me hungry, Esther
1:05:49
Well, I was going to apologize for that, but I'm not sorry, to be honest
1:05:55
We're humans. It's good to be ourselves also. We're friends and everyone
1:06:00
We eat. All right. So then next question is from Azar, who asked
1:06:07
JSON templates are used as artifact for Azure Blueprint. How can we replace all existing blueprints smoothly
1:06:13
with artifacts based on BICEP? Oh, I wish it was that easy, because I have to admit
1:06:20
that currently we are, or I'm part of a DevOps initiative within a project that is looking at virtual machine image deployments, for instance, and we figured we wanted to dynamically adjust the templates
1:06:40
And as Azhar is also mentioning, JSON is perfect because you can use PowerShell to import JSON as an object and then make the changes and then export it back to the JSON template
1:06:56
Unfortunately, BICEP is not an object oriented language, so to speak. So it's just basically plain text. So I cannot import it like a convert from JSON into an object and easily manipulate it
1:07:16
So I am suspecting that in this particular case, you can still use Bicep in your repository to ask that template for your code, but you will need to do that transpile step in between and then pick up the JSON that the transpile produces and then use that as your Azure blueprint
1:07:42
So that still allows you to make it easier to build those templates
1:07:48
But unfortunately, due to the mechanism of Azure Blueprint, I think you still need to have that JSON as input and not the BICEP natively
1:07:58
Yeah, I think that the good thing about that, although it does sound like a downside not to be able to use it
1:08:03
but it also allows you to leverage all the linter rules to actually get feedback on the transpilation process as well
1:08:10
So it does bring you some additional benefit as you are transpiling it to see what the end result in JSON is going to be
1:08:16
And as I mentioned, that does allow you to start authoring the templates in Bicep and have all of the code completion and features in there
1:08:25
While in the end, you'll probably be using and leveraging the compiled JSON templates for that
1:08:32
All right. Thank you. Let's take one more question. I found the next one, I think, interesting
1:08:37
uh right so side uh if i hope i pronounce your uh name correctly if not i apologize but here is the
1:08:46
question how can i use azure bicep to implement a multi-environment deployment strategy for my
1:08:53
infrastructure and what are the best practices for doing so wow that's a great great questions today
1:09:02
Yeah, that's a great question because we didn't really show that. But once you start by default, if you deploy something to Azure, the target scope
1:09:11
So the scope of where you deploying it is going to be in a single resource group right That the default target scope But as soon as you start to work with modules and we didn really explicitly show you that but what you do is inside the Bicep file you specify the target scope to something else
1:09:28
to, for example, a subscription or even a management group on top of that
1:09:32
And that allows you to then, using modules and using the scope of a module
1:09:37
to deploy it to a specific subscription and then into a specific resource group
1:09:43
to have multi-environment across different Azure subscriptions or even different management groups on top of it
1:09:51
So the target scope property, that's the one to look for. That allows you to deploy resources into different areas
1:10:00
across different regions or different Azure subscriptions as well. Yeah, and it also usually means that if you are deploying it via PowerShell
1:10:11
that instead of the new resource group deployment commandlet, there's also a new deployment commandlet
1:10:18
that allows you to go above that resource group scope for your deployment
1:10:26
So that is also a trigger for ARM to realize that it needs to look for a different scoping
1:10:32
in the template itself. Yep. Okay, thank you. Should we, I don't think we have time to answer all questions
1:10:41
So do you want to grab one or two more? Or what do you think
1:10:46
Yeah, we can do that. And let's see here. Yeah, I think I will just take the next one here
1:10:56
So the next one is from Ashish. How can I use secrets in my..
1:11:01
That's a good one. Yes. Please do not do as I showed in the videos and put them in clear text
1:11:07
First of all, the extension and the linter rules will beat you up for that
1:11:13
The way I do it, especially also if I'm incorporating in my DevOps CICD pipelines and automated deployments
1:11:24
is to have either the secrets within, for instance, in Azure DevOps, you have your variable groups
1:11:34
or you can even reference your keyfold secrets from within I think bicep as well if you are using modules
1:11:47
So within the module you can reference by using a standard function you can reference a keyfold secret
1:11:55
So that allows you to not explicitly have to put the secrets itself, the strings in your bicep files, but to reference them to the keyfold and the secrets that you have managed within your keyfold
1:12:13
But the only trick to do that is to have that module file, that bicep file that uses all the parameters and properties, and then reference that from another, like the main bicep that Freik showed
1:12:31
Reference that module file, and then you can use that keyfold functionality
1:12:36
So it's a bit complex, but it does work to keep the secrets out of your code, so to speak
1:12:43
Frank is now cleaning up some secrets, I think. I was quickly trying to find if I could find an example, but I don't have it in place
1:12:55
but you're right. So there's a dedicated function that's actually introduced a couple of months or half a year
1:13:01
ago that allows you, like SSH, to retrieve it from the Azure Key Vault
1:13:05
And since Azure Key Vault is also an Azure resource itself, you can also deploy the keyword
1:13:10
using mys app, you know, enter in the secrets and then retrieve them secretly using the function
1:13:15
as well. So I was going to see if I could find a quick example, but I failed. Yeah. And the other
1:13:23
trick that I did is if you deploy, for instance, your template with PowerShell is that I used
1:13:32
splatting for my parameters. So I build a hash table to externally through that hash table
1:13:39
specify all the parameters. And in that case, I could use the secure string within PowerShell
1:13:46
to make sure that my secret is not out in the open. Okay, that's great. Oh, there's a lot of questions, Hockens. It's like, oh, we could
1:13:55
take another hour and answer great questions I think we actually What we also can do is that you send me and Freik the questions and then we will answer them and we can post them
1:14:07
either with the video later on or in another way. We'd be happy
1:14:14
to answer all the questions that there are out there. Yes, and also
1:14:17
we have a short 15 minutes, 20 minutes Fika and I shared Bitly
1:14:25
link to the Zoom meeting. So right after the stream, we will connect to that Zoom meeting
1:14:32
And if you remember your question, you can definitely get that answer
1:14:37
farther from our guest today, from Esther and Freak. Yes. Oh, it's very a great start, like powerful session, Esther and Freak
1:14:48
Thank you so much. And I really love the engagements of our audience today
1:14:54
So thank you for the interaction and asking questions. It's great. So thank you so much
1:15:01
Any words, Hakan, from you? No, I'm just very, very impressed by this session here
1:15:08
It was very informative. I also like that people were engaged. And also what I like mostly was also that there were many people helping out each other in the comments
1:15:22
Awesome. Oh, that's great. Yeah, it's really great. Yes. And one of my favorite part of this session is the visualizer
1:15:32
I love it. Yes. That's awesome, right? Yes, that's right. Okay, so I think we're about to end our session. Just to finalize Easter and Rick, do you have any, aside from what the book and everything
1:15:48
Do you have any upcoming community events that you want to share to our audience today
1:15:56
Wow. So next week is a virtual Azure community day. So I have been, I'm not going to say tricked, but I have been asked if once again, I would
1:16:08
love to present. And in my case, it's going to be more about my journey transitioning from ops to DevOps
1:16:15
and the mindset change that came with it that I had to go through
1:16:21
So if you are interested in that, that will be streamed next week, Wednesday
1:16:28
at 4.30 CET. And yeah, I guess the first in-person one
1:16:38
is going to be IGEL Disrupt, but that's very end-user computing focused
1:16:43
so hopefully I'll meet some of you there in person as well
1:16:48
yes that's great how about you Freak do you have anything coming
1:16:52
I do have a couple things planned but it's still very early
1:16:55
at the beginning of the year so I still have to structure the agenda and take a look
1:17:00
at that but yeah be sure to watch social channels LinkedIn and Twitter I'll make sure to
1:17:05
send any upcoming events and hopefully we'll bring the on tour event in person again with Esther
1:17:12
as well. That'll be fun. Yeah, looking forward to this new year
1:17:18
That's great. Thank you so much, everyone. Before I actually end our stream and say goodbye
1:17:23
and see together again in Zoom, let me just share this session we have
1:17:32
coming, which is next session will be with another MVP, Victor Hedberg, and he will
1:17:39
be sharing about security implementing RBAC in Microsoft Defender. So if you're interested in this topic
1:17:47
feel free to join us in two weeks. Next on the 24th of January
1:17:54
All right. I think I'm good. Are you ready, Håkan? Yes. Looking forward to Fika
1:18:02
Yeah, I feel like I don't want to let go. Yes, but let's see each other again on this meeting
1:18:09
thank you everyone and have a great weekend enjoy with yourselves family how you do it
1:18:16
have a great weekend and see you in two weeks again thank you okay bye