Terraform or Bicep? ULTIMATE IaC Guide & Career Choice
Read full transcript 14 segments
-
in this video I would like to speak in this video I would like to speak about infrastructure as code terraform about infrastructure as code terraform about infrastructure as code terraform and bicep what are these things and and bicep what are these things and and bicep what are these things and which one should you learn which one should you learn which one should you learn infrastructure as code means that you infrastructure as code means that you infrastructure as code means that you define your infrastructure in files as define your infrastructure in files as define your infrastructure in files as code so that you can reproduce them very code so that you can reproduce them very code so that you can reproduce them very easily so this is what infrastructure as easily so this is what infrastructure as easily so this is what infrastructure as code look like looks like in in bicep so code look like looks like in in bicep so code look like looks like in in bicep so you define a resource in your code in you define a resource in your code in you define a resource in your code in this case it's a key volt and then I this case it's a key volt and then I this case it's a key volt and then I have a parameter of location which is have a parameter of location which is have a parameter of location which is the same as the resource Group but here the same as the resource Group but here the same as the resource Group but here I'm creating a key vaol called Misha 138 I'm creating a key vaol called Misha 138 I'm creating a key vaol called Misha 138 with these parameters and then when I with these parameters and then when I with these parameters and then when I run this it will be deployed in Azure so run this it will be deployed in Azure so run this it will be deployed in Azure so that is the the main principle of that is the the main principle of that is the the main principle of infrastructure is code you can define infrastructure is code you can define infrastructure is code you can define something in code and then you know something in code and then you know something in code and then you know exactly what's going to be provisioned exactly what's going to be provisioned exactly what's going to be provisioned now what are the advantages of this well now what are the advantages of this well now what are the advantages of this well for one your infrastructure becomes for one your infrastructure becomes for one your infrastructure becomes reproducible reproducible so that means reproducible reproducible so that means reproducible reproducible so that means that you can tear down all of your that you can tear down all of your that you can tear down all of your infrastructure and then redeploy it be infrastructure and then redeploy it be infrastructure and then redeploy it be and everything will be the same because and everything will be the same because and everything will be the same because you have everything defined in code you have everything defined in code you have everything defined in code secondly you can create templates or secondly you can create templates or secondly you can create templates or modules so if you have a certain set of modules so if you have a certain set of modules so if you have a certain set of resources that you want a development resources that you want a development resources that you want a development team to have for example so for example team to have for example so for example team to have for example so for example we used to have a a set of resources we used to have a a set of resources we used to have a a set of resources that would contain a cluster it would that would contain a cluster it would that would contain a cluster it would contain a key Vault it would contain um contain a key Vault it would contain um contain a key Vault it would contain um entries in the firewall Etc you can entries in the firewall Etc you can entries in the firewall Etc you can create this whole package and then you create this whole package and then you create this whole package and then you only have to enter the name of the team only have to enter the name of the team only have to enter the name of the team and the rest is going to be rolled out and the rest is going to be rolled out and the rest is going to be rolled out automatically so that's a very powerful
-
automatically so that's a very powerful automatically so that's a very powerful feature of infrastructure as code and feature of infrastructure as code and feature of infrastructure as code and lastly another very important feature of lastly another very important feature of lastly another very important feature of infrastructure is code is that you get infrastructure is code is that you get infrastructure is code is that you get Version Control on it so you can track Version Control on it so you can track Version Control on it so you can track the changes in your infrastructure the changes in your infrastructure the changes in your infrastructure through the code so you would have this through the code so you would have this through the code so you would have this code in a git repository and then if code in a git repository and then if code in a git repository and then if you're working with several Dev uh you're working with several Dev uh you're working with several Dev uh several Ops or devops Engineers you several Ops or devops Engineers you several Ops or devops Engineers you would create pool requests to that would create pool requests to that would create pool requests to that Repository and then you can audit the Repository and then you can audit the Repository and then you can audit the changes that one another does so you can changes that one another does so you can changes that one another does so you can review the changes that your colleague review the changes that your colleague review the changes that your colleague wants to do and you can point out hey wants to do and you can point out hey wants to do and you can point out hey maybe that's not a good idea or maybe we maybe that's not a good idea or maybe we maybe that's not a good idea or maybe we can improve this and then when that's can improve this and then when that's can improve this and then when that's done you can also Trace back in history done you can also Trace back in history done you can also Trace back in history what has been done earlier like if a what has been done earlier like if a what has been done earlier like if a mistake happens so that's a huge mistake happens so that's a huge mistake happens so that's a huge advantage of infrastructure is code and advantage of infrastructure is code and advantage of infrastructure is code and what is the alternative to all of this what is the alternative to all of this what is the alternative to all of this well that is when you go into the the well that is when you go into the the well that is when you go into the the portal of portal of portal of azure uh let me see portal Azure and azure uh let me see portal Azure and azure uh let me see portal Azure and then you go into uh for example virtual then you go into uh for example virtual then you go into uh for example virtual machines and you would create a machine machines and you would create a machine machines and you would create a machine and then the the virtual you create it and then the the virtual you create it and then the the virtual you create it like this and then you give it a name like this and then you give it a name like this and then you give it a name Etc and then the resource exists in Etc and then the resource exists in Etc and then the resource exists in Azure now like if you're just testing or Azure now like if you're just testing or Azure now like if you're just testing or trying something out this is not a trying something out this is not a trying something out this is not a problem but there are companies who have problem but there are companies who have problem but there are companies who have been doing it like this what what we been doing it like this what what we been doing it like this what what we call click Ops so people just click in call click Ops so people just click in call click Ops so people just click in the portal and create resources but then the portal and create resources but then the portal and create resources but then there's no Central Way of managing that there's no Central Way of managing that there's no Central Way of managing that there's no way of to re reproduce that there's no way of to re reproduce that there's no way of to re reproduce that so whenever you work with Cloud so whenever you work with Cloud so whenever you work with Cloud resources always try to do it from
-
resources always try to do it from resources always try to do it from infrastructure as code there's one infrastructure as code there's one infrastructure as code there's one principle that I would like to give you principle that I would like to give you principle that I would like to give you so that that is the the the the the so that that is the the the the the so that that is the the the the the concept of infrastructure is code and concept of infrastructure is code and concept of infrastructure is code and now bicep and now bicep and now bicep and terraform are implementations of that terraform are implementations of that terraform are implementations of that bicep and bicep and bicep and terraform so um let's let's talk about terraform so um let's let's talk about terraform so um let's let's talk about each of these so terraform is by Hashi each of these so terraform is by Hashi each of these so terraform is by Hashi Corp Corp Corp hashy Corp and it's a um it's hashy Corp and it's a um it's hashy Corp and it's a um it's multifunctional what do I mean by that multifunctional what do I mean by that multifunctional what do I mean by that you can use it with different clouds you can use it with different clouds you can use it with different clouds it's Cloud agnostic and it's even tool it's Cloud agnostic and it's even tool it's Cloud agnostic and it's even tool agnostic so you can use terraform to agnostic so you can use terraform to agnostic so you can use terraform to provision Cloud resource in Azure you provision Cloud resource in Azure you provision Cloud resource in Azure you can use it to provision resources in AWS can use it to provision resources in AWS can use it to provision resources in AWS but you can also use it in for example but you can also use it in for example but you can also use it in for example proxmox if you know what proxmox is um proxmox if you know what proxmox is um proxmox if you know what proxmox is um it's it's like a an operating system to it's it's like a an operating system to it's it's like a an operating system to create virtual machines create virtual machines create virtual machines and you can use a terraform provider to and you can use a terraform provider to and you can use a terraform provider to do that likewise grafana if you have a do that likewise grafana if you have a do that likewise grafana if you have a grafana cloud instance for grafana cloud instance for grafana cloud instance for example you can provision uh teams and example you can provision uh teams and example you can provision uh teams and dashboards and all sorts of things dashboards and all sorts of things dashboards and all sorts of things through teror terraform providers so through teror terraform providers so through teror terraform providers so terraform is not only for cloud terraform is not only for cloud terraform is not only for cloud infrastructure although that is its main infrastructure although that is its main infrastructure although that is its main use you will find that there are more use you will find that there are more use you will find that there are more implementations that you can do with implementations that you can do with implementations that you can do with terraform now it's very often used in terraform now it's very often used in terraform now it's very often used in conjunction with conjunction with conjunction with AWS but AWS but AWS but uh Azure also has a rich set of uh Azure also has a rich set of uh Azure also has a rich set of terraform providers and I'll get back to
-
terraform providers and I'll get back to terraform providers and I'll get back to that now bicep is azure that now bicep is azure that now bicep is azure only Azure bicep is created by Microsoft only Azure bicep is created by Microsoft only Azure bicep is created by Microsoft as a domain specific language so it can as a domain specific language so it can as a domain specific language so it can only be used on only be used on only be used on Azure uh it is created by Microsoft it Azure uh it is created by Microsoft it Azure uh it is created by Microsoft it is maintained by Microsoft now there are is maintained by Microsoft now there are is maintained by Microsoft now there are a few benefits of using bicep if you are a few benefits of using bicep if you are a few benefits of using bicep if you are a a a Azure focused professional or company a Azure focused professional or company a Azure focused professional or company a few benefits are benef um BP is few benefits are benef um BP is few benefits are benef um BP is developed by Microsoft so you always developed by Microsoft so you always developed by Microsoft so you always have access to the latest have access to the latest have access to the latest apis so whenever apis so whenever apis so whenever Azure makes updates to their resources Azure makes updates to their resources Azure makes updates to their resources or they introduce a new feature then it or they introduce a new feature then it or they introduce a new feature then it is updated in the buep uh apis however is updated in the buep uh apis however is updated in the buep uh apis however the terraform the terraform the terraform providers so I'll I'll speak to providers so I'll I'll speak to providers so I'll I'll speak to Providers after this but the terraform Providers after this but the terraform Providers after this but the terraform providers are community-driven so providers are community-driven so providers are community-driven so Microsoft does not officially support or Microsoft does not officially support or Microsoft does not officially support or um or contribute to Microsoft to um or contribute to Microsoft to um or contribute to Microsoft to terraform providers I should rephrase terraform providers I should rephrase terraform providers I should rephrase that they do contribute to them but it's that they do contribute to them but it's that they do contribute to them but it's not that Microsoft is um incentivized to not that Microsoft is um incentivized to not that Microsoft is um incentivized to do so because hashicorp is a different do so because hashicorp is a different do so because hashicorp is a different company now there is a thing called company now there is a thing called company now there is a thing called Azure verified modules which I have Azure verified modules which I have Azure verified modules which I have already created a video on but which I already created a video on but which I already created a video on but which I will expand upon in a later video will expand upon in a later video will expand upon in a later video uh and in there they do have um create uh and in there they do have um create uh and in there they do have um create they do create terraform modules now they do create terraform modules now they do create terraform modules now what is a terraform provider now if you
-
what is a terraform provider now if you what is a terraform provider now if you go to terraform Azure if you go to the go to terraform Azure if you go to the go to terraform Azure if you go to the terraform terraform terraform registry this is the a list of providers registry this is the a list of providers registry this is the a list of providers and a provider is basically an interface and a provider is basically an interface and a provider is basically an interface that you can speak to where you can that you can speak to where you can that you can speak to where you can Define resources and then terraform Define resources and then terraform Define resources and then terraform translates that to the actual API of the translates that to the actual API of the translates that to the actual API of the cloud provider so the cloud provider has cloud provider so the cloud provider has cloud provider so the cloud provider has um in in the case of azure it's called um in in the case of azure it's called um in in the case of azure it's called the Azure resource manager this is an the Azure resource manager this is an the Azure resource manager this is an API to which you will send Json objects API to which you will send Json objects API to which you will send Json objects fundamentally and the armm then converts fundamentally and the armm then converts fundamentally and the armm then converts that to Azure resources like to Virtual that to Azure resources like to Virtual that to Azure resources like to Virtual machines or kubernetes machines or kubernetes machines or kubernetes clusters so the Azure resource manager clusters so the Azure resource manager clusters so the Azure resource manager is an API that takes Json objects is an API that takes Json objects is an API that takes Json objects through through it's a rest API and you through through it's a rest API and you through through it's a rest API and you can basically talk to the Azure resource can basically talk to the Azure resource can basically talk to the Azure resource manager through Json by post requests if manager through Json by post requests if manager through Json by post requests if you wanted to but a terraform provider you wanted to but a terraform provider you wanted to but a terraform provider is an abstraction above that now there is an abstraction above that now there is an abstraction above that now there are many different uh providers like are many different uh providers like are many different uh providers like here's Azure there's also kubernetes here's Azure there's also kubernetes here's Azure there's also kubernetes provider um and as you can see here provider um and as you can see here provider um and as you can see here maybe there are a few more like a Helm maybe there are a few more like a Helm maybe there are a few more like a Helm provider Nomad boundary so there are provider Nomad boundary so there are provider Nomad boundary so there are tons of Salesforce there very a lot of tons of Salesforce there very a lot of tons of Salesforce there very a lot of different providers that you can use but different providers that you can use but different providers that you can use but these providers are community-driven these providers are community-driven these providers are community-driven they are open-source projects so when a they are open-source projects so when a they are open-source projects so when a new feature comes out on an Azure
-
new feature comes out on an Azure new feature comes out on an Azure resource then it's immediately updated resource then it's immediately updated resource then it's immediately updated in the bicep API but you are then in the bicep API but you are then in the bicep API but you are then dependent on the open source Community dependent on the open source Community dependent on the open source Community for that to be implemented in the the for that to be implemented in the the for that to be implemented in the the terraform provider and from experience I terraform provider and from experience I terraform provider and from experience I know that this does not happen quick or know that this does not happen quick or know that this does not happen quick or frequently so many things that you can frequently so many things that you can frequently so many things that you can do in bicep are not supported in do in bicep are not supported in do in bicep are not supported in terraform or at least not yet supported terraform or at least not yet supported terraform or at least not yet supported in for so if you choose bicep then you in for so if you choose bicep then you in for so if you choose bicep then you always have the latest features and you always have the latest features and you always have the latest features and you know that everything is up to date in know that everything is up to date in know that everything is up to date in according with the Microsoft armm uh according with the Microsoft armm uh according with the Microsoft armm uh apis so that's one very important thing apis so that's one very important thing apis so that's one very important thing about bicep um a disadvantage of bicep about bicep um a disadvantage of bicep about bicep um a disadvantage of bicep is that you would have to that you learn is that you would have to that you learn is that you would have to that you learn this but you can only use it on Azure this but you can only use it on Azure this but you can only use it on Azure you can you can not take this with you you can you can not take this with you you can you can not take this with you to other uh Cloud providers now I don't to other uh Cloud providers now I don't to other uh Cloud providers now I don't see that as a problem because I see that as a problem because I see that as a problem because I basically pick one cloud provider and I basically pick one cloud provider and I basically pick one cloud provider and I stick to that one and there's enough stick to that one and there's enough stick to that one and there's enough work in that so I don't I don't worry work in that so I don't I don't worry work in that so I don't I don't worry about like locking into Azure because about like locking into Azure because about like locking into Azure because I'm I'm fine with locking into Azure I'm I'm fine with locking into Azure I'm I'm fine with locking into Azure personally like I would rather have one personally like I would rather have one personally like I would rather have one provider that I know well and to use provider that I know well and to use provider that I know well and to use their domain specific language to know their domain specific language to know their domain specific language to know that I know well so that I can do great that I know well so that I can do great that I know well so that I can do great things with that right so that's just my things with that right so that's just my things with that right so that's just my my take on it now another big difference my take on it now another big difference my take on it now another big difference between bicep and terraform is the fact between bicep and terraform is the fact between bicep and terraform is the fact that ter ter form uses a state file and that ter ter form uses a state file and that ter ter form uses a state file and bicep bicep does not so what does this bicep bicep does not so what does this bicep bicep does not so what does this mean mean mean so terraform you keeps a state file
-
so terraform you keeps a state file so terraform you keeps a state file where it will um basically store all of where it will um basically store all of where it will um basically store all of the state all of the things that are the state all of the things that are the state all of the things that are currently available in Azure and then it currently available in Azure and then it currently available in Azure and then it Compares that with the code that you Compares that with the code that you Compares that with the code that you write so if I say in the code I want one write so if I say in the code I want one write so if I say in the code I want one VM and one AKs cluster I'm just making VM and one AKs cluster I'm just making VM and one AKs cluster I'm just making something up 1 VM 1 AKs cluster then something up 1 VM 1 AKs cluster then something up 1 VM 1 AKs cluster then terraform is going to check hey are terraform is going to check hey are terraform is going to check hey are these things in my state file are my these things in my state file are my these things in my state file are my things available in the state that I things available in the state that I things available in the state that I know about and if they are great I don't know about and if they are great I don't know about and if they are great I don't have to do anything if they're not then have to do anything if they're not then have to do anything if they're not then terraform will create those resources to terraform will create those resources to terraform will create those resources to make sure that the state file matches make sure that the state file matches make sure that the state file matches the code that you the code that you the code that you write now problems arise when you have a write now problems arise when you have a write now problems arise when you have a friendly engineer friendly engineer friendly engineer who then enters the who then enters the who then enters the portal and starts making changes in portal and starts making changes in portal and starts making changes in there and if someone for example changes there and if someone for example changes there and if someone for example changes the dis size of a virtual machine and the dis size of a virtual machine and the dis size of a virtual machine and then you start working with terraform then you start working with terraform then you start working with terraform and then you change the IP address I'm and then you change the IP address I'm and then you change the IP address I'm just making something up but if you just making something up but if you just making something up but if you change that then suddenly your state change that then suddenly your state change that then suddenly your state file is messed up so your your state file is messed up so your your state file is messed up so your your state file does not match what is in Azure file does not match what is in Azure file does not match what is in Azure anymore so it doesn't match anymore so anymore so it doesn't match anymore so anymore so it doesn't match anymore so so either ter form is going to fix that so either ter form is going to fix that so either ter form is going to fix that but most often if you make manual but most often if you make manual but most often if you make manual changes in Azure and then it doesn't changes in Azure and then it doesn't changes in Azure and then it doesn't match the stage file anymore it will match the stage file anymore it will match the stage file anymore it will basically break and this in my opinion
-
basically break and this in my opinion basically break and this in my opinion is a nightmare to manage like I don't is a nightmare to manage like I don't is a nightmare to manage like I don't like working with terraform because of like working with terraform because of like working with terraform because of this reason especially if you have this reason especially if you have this reason especially if you have multiple people deploying from the same multiple people deploying from the same multiple people deploying from the same state file so usually you would do this state file so usually you would do this state file so usually you would do this in pipelines but it is also possible to in pipelines but it is also possible to in pipelines but it is also possible to do locally for example and this state do locally for example and this state do locally for example and this state file would then be stored somewhere in a file would then be stored somewhere in a file would then be stored somewhere in a storage account but if multiple people storage account but if multiple people storage account but if multiple people are working with this and for example are working with this and for example are working with this and for example you do something simultaneously oh boy you do something simultaneously oh boy you do something simultaneously oh boy you can get into real trouble with that you can get into real trouble with that you can get into real trouble with that and I've worked with terraform and I've worked with terraform and I've worked with terraform extensively I've worked with bicep extensively I've worked with bicep extensively I've worked with bicep extensively and for me terraform has extensively and for me terraform has extensively and for me terraform has been a huge headache and that's probably been a huge headache and that's probably been a huge headache and that's probably because like like I know it can work because like like I know it can work because like like I know it can work there are plenty of companies that make there are plenty of companies that make there are plenty of companies that make it work well so I'm not saying that it work well so I'm not saying that it work well so I'm not saying that terraform inherently is bad I just terraform inherently is bad I just terraform inherently is bad I just haven't worked in an environment where haven't worked in an environment where haven't worked in an environment where it has worked well and I know several it has worked well and I know several it has worked well and I know several senior Engineers 13 plus years of senior Engineers 13 plus years of senior Engineers 13 plus years of experience who have told me that they experience who have told me that they experience who have told me that they share my experience across different share my experience across different share my experience across different companies that they've worked in as companies that they've worked in as companies that they've worked in as consultants that terraform basically consultants that terraform basically consultants that terraform basically always is a nasty experience to work always is a nasty experience to work always is a nasty experience to work with because of these with because of these with because of these problems bicep does not have this problems bicep does not have this problems bicep does not have this problem bicep simply looks at the state problem bicep simply looks at the state problem bicep simply looks at the state in in in Azure and it will have your code file Azure and it will have your code file Azure and it will have your code file and then it will either it will just and then it will either it will just and then it will either it will just create the resources that it needs to create the resources that it needs to create the resources that it needs to create and otherwise it won't do create and otherwise it won't do create and otherwise it won't do anything there are different modes you anything there are different modes you anything there are different modes you can use in bicep there is mode
-
can use in bicep there is mode can use in bicep there is mode incremental which does this but there's incremental which does this but there's incremental which does this but there's also something called mode complete and also something called mode complete and also something called mode complete and that means if you have a a a a file with that means if you have a a a a file with that means if you have a a a a file with code which contains a resource Group and code which contains a resource Group and code which contains a resource Group and then all of the resource in it if you do then all of the resource in it if you do then all of the resource in it if you do mode complete then it's B basically just mode complete then it's B basically just mode complete then it's B basically just going to Brute Force creating this every going to Brute Force creating this every going to Brute Force creating this every single time if it doesn't exist and it single time if it doesn't exist and it single time if it doesn't exist and it will overwrite everything in the will overwrite everything in the will overwrite everything in the resource Group it will just Brute Force resource Group it will just Brute Force resource Group it will just Brute Force like this is the state we want create it like this is the state we want create it like this is the state we want create it boom usually this is not used but you boom usually this is not used but you boom usually this is not used but you can do it this way but the mode can do it this way but the mode can do it this way but the mode incremental this way is a uh is the incremental this way is a uh is the incremental this way is a uh is the gener generic way to do gener generic way to do gener generic way to do it and it works really well because it and it works really well because it and it works really well because either you make the change or not so either you make the change or not so either you make the change or not so what you do is you create pipelines with what you do is you create pipelines with what you do is you create pipelines with the infrastructure is code which run the infrastructure is code which run the infrastructure is code which run periodically so you do it like every periodically so you do it like every periodically so you do it like every hour or something or every day and that hour or something or every day and that hour or something or every day and that way if someone comes along and makes way if someone comes along and makes way if someone comes along and makes their change in the Azure portal then their change in the Azure portal then their change in the Azure portal then their stuff breaks or they their stuff their stuff breaks or they their stuff their stuff breaks or they their stuff gets overwritten and then they come gets overwritten and then they come gets overwritten and then they come knocking at your door saying hey I knocking at your door saying hey I knocking at your door saying hey I changed this and now it changed back why changed this and now it changed back why changed this and now it changed back why is that and I say well that's because is that and I say well that's because is that and I say well that's because you're not following the process and we you're not following the process and we you're not following the process and we actually should do it from the code actually should do it from the code actually should do it from the code because then we know exactly what's because then we know exactly what's because then we know exactly what's going on and if an engineer gets this going on and if an engineer gets this going on and if an engineer gets this answer three times then they won't do it answer three times then they won't do it answer three times then they won't do it anymore and then they will um do it the anymore and then they will um do it the anymore and then they will um do it the proper way now of course in a proper proper way now of course in a proper proper way now of course in a proper setup a person wouldn't have this option setup a person wouldn't have this option setup a person wouldn't have this option at all to change these things but that's at all to change these things but that's at all to change these things but that's a discussion for a later dat so in my a discussion for a later dat so in my a discussion for a later dat so in my experience bicep has been more pleasant
-
experience bicep has been more pleasant experience bicep has been more pleasant to work with in Azure now let's take a to work with in Azure now let's take a to work with in Azure now let's take a look at the code what does this actually look at the code what does this actually look at the code what does this actually look like so it's a very I have found look like so it's a very I have found look like so it's a very I have found bicep to be a very intuitive language bicep to be a very intuitive language bicep to be a very intuitive language very easy to learn very nicely very easy to learn very nicely very easy to learn very nicely structured in in Json objects and it's structured in in Json objects and it's structured in in Json objects and it's um very very easy to learn for example um very very easy to learn for example um very very easy to learn for example an AKs cluster looks like this you just an AKs cluster looks like this you just an AKs cluster looks like this you just Define the resource which is called Define the resource which is called Define the resource which is called manage cluster then you give it the API manage cluster then you give it the API manage cluster then you give it the API version and then you give it the name of version and then you give it the name of version and then you give it the name of the cluster the location and then you the cluster the location and then you the cluster the location and then you set certain properties and then if you set certain properties and then if you set certain properties and then if you don't set it it will get a default value don't set it it will get a default value don't set it it will get a default value generally some properties you have to generally some properties you have to generally some properties you have to set but for example enable Ro based set but for example enable Ro based set but for example enable Ro based Access Control you get a prefix for the Access Control you get a prefix for the Access Control you get a prefix for the DNS and then you add a Noe pool and DNS and then you add a Noe pool and DNS and then you add a Noe pool and that's it it's really simple nice that's it it's really simple nice that's it it's really simple nice intuitive and terraform is practically intuitive and terraform is practically intuitive and terraform is practically the same it just looks a little bit the same it just looks a little bit the same it just looks a little bit different has a little bit different different has a little bit different different has a little bit different syntax and uses something called HCL I syntax and uses something called HCL I syntax and uses something called HCL I think it's the acronym for hashy Corp think it's the acronym for hashy Corp think it's the acronym for hashy Corp language so this is all this is like it language so this is all this is like it language so this is all this is like it it's not both are just as easy to learn it's not both are just as easy to learn it's not both are just as easy to learn basically but bicep might be just easier basically but bicep might be just easier basically but bicep might be just easier actually now that I think of it bicep is actually now that I think of it bicep is actually now that I think of it bicep is easier to learn but terraform has a easier to learn but terraform has a easier to learn but terraform has a wider wider wider application but both are it's it's not application but both are it's it's not application but both are it's it's not difficult at all to learn this stuff difficult at all to learn this stuff difficult at all to learn this stuff like people try to make it out as super like people try to make it out as super like people try to make it out as super complex but it's not it's actually super complex but it's not it's actually super complex but it's not it's actually super simple you can learn it in an afternoon simple you can learn it in an afternoon simple you can learn it in an afternoon if if you really put your mind to it to if if you really put your mind to it to if if you really put your mind to it to at least get your first resources at least get your first resources at least get your first resources deployed now how now the question is deployed now how now the question is deployed now how now the question is which one should you learn and how do I
-
which one should you learn and how do I which one should you learn and how do I learn them learn them learn them now I would say learn both both are now I would say learn both both are now I would say learn both both are important to know as an infrastructure important to know as an infrastructure important to know as an infrastructure engineer or devops engineer but focus on engineer or devops engineer but focus on engineer or devops engineer but focus on one I would say and the way you um one I would say and the way you um one I would say and the way you um figure out which one to focus on is figure out which one to focus on is figure out which one to focus on is simply to look at the job postings where simply to look at the job postings where simply to look at the job postings where you want to work look at the companies you want to work look at the companies you want to work look at the companies where you want to work and base your where you want to work and base your where you want to work and base your decision on that so if I want to work um decision on that so if I want to work um decision on that so if I want to work um if I need to find a junior devops if I need to find a junior devops if I need to find a junior devops position if I were in that situation position if I were in that situation position if I were in that situation again I would look in all the job again I would look in all the job again I would look in all the job postings for Azure that are on my level postings for Azure that are on my level postings for Azure that are on my level and then I would see is the majority and then I would see is the majority and then I would see is the majority asking for terraform or is the majority asking for terraform or is the majority asking for terraform or is the majority asking for bicep asking for bicep asking for bicep I would base my decision on that now I would base my decision on that now I would base my decision on that now don't weigh it too heavily because all don't weigh it too heavily because all don't weigh it too heavily because all of these skills transfer to one another of these skills transfer to one another of these skills transfer to one another if you learn bicep you know terraform if you learn bicep you know terraform if you learn bicep you know terraform for 80% and if you know terraform you for 80% and if you know terraform you for 80% and if you know terraform you know bicep for 80% it it's very know bicep for 80% it it's very know bicep for 80% it it's very transferable so it's you can go wrong transferable so it's you can go wrong transferable so it's you can go wrong basically um in order to learn them in basically um in order to learn them in basically um in order to learn them in in the case of bicep I would highly in the case of bicep I would highly in the case of bicep I would highly recommend doing the Microsoft recommend doing the Microsoft recommend doing the Microsoft learn they have complete courses on this learn they have complete courses on this learn they have complete courses on this uh let's see uh let's see uh let's see uh there is the fundamentals of bicep uh there is the fundamentals of bicep uh there is the fundamentals of bicep intermediate bicep and advanced bicep I intermediate bicep and advanced bicep I intermediate bicep and advanced bicep I think that's the let me think that's the let me think that's the let me see yeah yeah this is basically a see yeah yeah this is basically a see yeah yeah this is basically a complete course for free with bicep with complete course for free with bicep with complete course for free with bicep with with the practice environments the whole with the practice environments the whole with the practice environments the whole shebang you have everything you need
-
shebang you have everything you need shebang you have everything you need here to learn bicep and to learn it well here to learn bicep and to learn it well here to learn bicep and to learn it well if you go through these modules you're if you go through these modules you're if you go through these modules you're ready to deploy you're ready to start ready to deploy you're ready to start ready to deploy you're ready to start working with Azure and infrastructure working with Azure and infrastructure working with Azure and infrastructure scode scode scode seriously so in this course seriously so in this course seriously so in this course these courses are for free just learn these courses are for free just learn these courses are for free just learn them and it's all you need and what I them and it's all you need and what I them and it's all you need and what I recommend is then creating a lab repo recommend is then creating a lab repo recommend is then creating a lab repo like I have here and I have my bicep like I have here and I have my bicep like I have here and I have my bicep here and here I I have tons of files here and here I I have tons of files here and here I I have tons of files about bicep and then as you're learning about bicep and then as you're learning about bicep and then as you're learning you commit that to your lab repo and you commit that to your lab repo and you commit that to your lab repo and then that way you also build up a bit of then that way you also build up a bit of then that way you also build up a bit of a code repository for yourself that you a code repository for yourself that you a code repository for yourself that you can then refer back to if you want to so can then refer back to if you want to so can then refer back to if you want to so uh I would I would learn bicep this way uh I would I would learn bicep this way uh I would I would learn bicep this way do these courses commit all of the code do these courses commit all of the code do these courses commit all of the code and practice in your own Azure and practice in your own Azure and practice in your own Azure subscription uh don't just do the subscription uh don't just do the subscription uh don't just do the modules also try to think of your own uh modules also try to think of your own uh modules also try to think of your own uh stuff so if you have learned how to do stuff so if you have learned how to do stuff so if you have learned how to do virtual machines well then think well virtual machines well then think well virtual machines well then think well maybe how do I um deploy an an app maybe how do I um deploy an an app maybe how do I um deploy an an app service or how do I deploy an um an AKs service or how do I deploy an um an AKs service or how do I deploy an um an AKs cluster for example a key volt try to cluster for example a key volt try to cluster for example a key volt try to think of your own little projects and think of your own little projects and think of your own little projects and and and uh go beyond the course and and uh go beyond the course and and uh go beyond the course basically and in terms of terraform uh I basically and in terms of terraform uh I basically and in terms of terraform uh I basically learn by doing the terraform basically learn by doing the terraform basically learn by doing the terraform has great docs but they do have a uh has great docs but they do have a uh has great docs but they do have a uh terraform um here terraform associate that's it so um here terraform associate that's it so here this is a free learning path and
-
here this is a free learning path and here this is a free learning path and then you can learn everything about then you can learn everything about then you can learn everything about infrastructure as code how terraform infrastructure as code how terraform infrastructure as code how terraform Works Etc it's pretty easy and then in Works Etc it's pretty easy and then in Works Etc it's pretty easy and then in the end you can get a certification and the end you can get a certification and the end you can get a certification and then you also know enough to get started then you also know enough to get started then you also know enough to get started with terraform and with terraform I'm with terraform and with terraform I'm with terraform and with terraform I'm you might want to check out YouTube if you might want to check out YouTube if you might want to check out YouTube if you can find a free course maybe on you can find a free course maybe on you can find a free course maybe on udemy I don't I don't have any resources udemy I don't I don't have any resources udemy I don't I don't have any resources to recommend actually on this particular to recommend actually on this particular to recommend actually on this particular one because I I think bicep is a is a one because I I think bicep is a is a one because I I think bicep is a is a good way to go if you're going for Azure good way to go if you're going for Azure good way to go if you're going for Azure and the learning material for that is and the learning material for that is and the learning material for that is available for free so but there's tons available for free so but there's tons available for free so but there's tons of free terraform resources available of free terraform resources available of free terraform resources available too like you don't need me to tell you too like you don't need me to tell you too like you don't need me to tell you what to search for there's not really a what to search for there's not really a what to search for there's not really a certification for this but um enough certification for this but um enough certification for this but um enough resources to learn and basically is resources to learn and basically is resources to learn and basically is learn by doing and building up your own learn by doing and building up your own learn by doing and building up your own lab environment and expanding that in lab environment and expanding that in lab environment and expanding that in complexity as you go along bicep also complexity as you go along bicep also complexity as you go along bicep also comes with very good um IDE integration comes with very good um IDE integration comes with very good um IDE integration so I do it in neovin but if you use vs so I do it in neovin but if you use vs so I do it in neovin but if you use vs code it has very good intellisense and code it has very good intellisense and code it has very good intellisense and it has all of the API integrated so it's it has all of the API integrated so it's it has all of the API integrated so it's a very very comfortable editing a very very comfortable editing a very very comfortable editing experience as experience as experience as well so that's what I would do to uh well so that's what I would do to uh well so that's what I would do to uh learn infrastructure as code uh I learn infrastructure as code uh I learn infrastructure as code uh I personally would check out the job personally would check out the job personally would check out the job postings see what's available and what postings see what's available and what postings see what's available and what what what they are asking for and base what what they are asking for and base what what they are asking for and base my decision on that but if you're uh my decision on that but if you're uh my decision on that but if you're uh planning on working with Azure then I planning on working with Azure then I planning on working with Azure then I would highly suggest learning bicep it would highly suggest learning bicep it would highly suggest learning bicep it will take you maybe a day to a few days will take you maybe a day to a few days will take you maybe a day to a few days to go through all of these modules and to go through all of these modules and to go through all of these modules and then you know it you can put it on your then you know it you can put it on your then you know it you can put it on your CV you have the code in your lab repo to CV you have the code in your lab repo to CV you have the code in your lab repo to prove it and um you're Off to the Races
-
prove it and um you're Off to the Races prove it and um you're Off to the Races because fundamentally like I said bicep because fundamentally like I said bicep because fundamentally like I said bicep is basically just a templating language is basically just a templating language is basically just a templating language that um all bicep does is let me see that um all bicep does is let me see that um all bicep does is let me see bicep all bicep does is it takes these bicep all bicep does is it takes these bicep all bicep does is it takes these little objects that you define and little objects that you define and little objects that you define and underwater it just turns them into Azure underwater it just turns them into Azure underwater it just turns them into Azure resource manager templates arm templates resource manager templates arm templates resource manager templates arm templates arm templates are the old school way of arm templates are the old school way of arm templates are the old school way of doing it basically just pure Json that doing it basically just pure Json that doing it basically just pure Json that you would write and bicep is just you would write and bicep is just you would write and bicep is just another layer on top of that that another layer on top of that that another layer on top of that that basically transforms this into Json and basically transforms this into Json and basically transforms this into Json and then sends it to the Azure resource then sends it to the Azure resource then sends it to the Azure resource manager manager manager API and uh so if you learn bicep you API and uh so if you learn bicep you API and uh so if you learn bicep you will also get a much better sense of how will also get a much better sense of how will also get a much better sense of how the Azure resource manager works and you the Azure resource manager works and you the Azure resource manager works and you get less of that when you use a get less of that when you use a get less of that when you use a terraform provider in my in my opinion terraform provider in my in my opinion terraform provider in my in my opinion let me know in the comments which one let me know in the comments which one let me know in the comments which one you are going to learn and if this was you are going to learn and if this was you are going to learn and if this was useful to you and remember I have my useful to you and remember I have my useful to you and remember I have my school Community which you can join if school Community which you can join if school Community which you can join if you need to if you need help with you need to if you need help with you need to if you need help with learning this if you want to ask learning this if you want to ask learning this if you want to ask questions to professionals who know who questions to professionals who know who questions to professionals who know who know this stuff if you need some help know this stuff if you need some help know this stuff if you need some help with Direction in what to take your with Direction in what to take your with Direction in what to take your career or if you want to have access to career or if you want to have access to career or if you want to have access to all of my courses check out my community all of my courses check out my community all of my courses check out my community I think you will like it so thank you I think you will like it so thank you I think you will like it so thank you very much for watching and see you in very much for watching and see you in very much for watching and see you in the next one
Summary
This tech summary discusses Infrastructure as Code (IaC) tools like Terraform and Bicep, highlighting how they allow infrastructure to be defined in code for easy reproduction. Key benefits include reproducibility, template creation for teams, and Version Control via Git, enabling collaboration and auditing. The practical takeaway is that IaC offers significant advantages over manual portal-based deployments.