Bicep vs Terraform - A fair and balanced comparison

Поділитися
Вставка
  • Опубліковано 8 гру 2020
  • Bicep is the new Azure Resource Management Domain Specific Language (ARM DSL) from the Azure team. In this video we look at how it compares to Terraform and raw ARM templates and I show you how I implemented it in Memealyzer.
    Memealyzer Bicep Code: github.com/jongio/memealyzer/...
    Dev, Debug, and Deploy Microservices with Project Tye Video: • Project Tye 101 - Dev,...
    Bicep: github.com/Azure/bicep/
    Azure SDKs: aka.ms/azsdk
    Project Tye: github.com/dotnet/tye
    Azure Quickstart Templates: github.com/Azure/azure-quicks...
    ARM Stacks Overview - • ARM Templates and Bice... - To help with deployment management
  • Наука та технологія

КОМЕНТАРІ • 36

  • @SimonTimms
    @SimonTimms 3 роки тому +1

    This is not only the most calming and enjoyable terraform vs. bicep video on youtube but the most calming and enjoyable terraform vs. bicep video possible. I have certainly fallen into the trap of having to fill gaps in terraform before and it is no fun. I'd be interested to see your take on Pulumi with this mix.

  • @aatif.akhter912
    @aatif.akhter912 2 роки тому +1

    Awesome Work ! I just went through 20 videos to understand the topic but this is the one which gives the best comparisons considering all aspect for an Ops/DevOps.

  • @kipergil
    @kipergil Рік тому +1

    Brilliant comparison... Thanks for your efforts 👍

  • @TakekazuOmi
    @TakekazuOmi 3 роки тому +3

    It was a very good comparison. I think the limits of the bicep are the same as the limits of the ARM Template at this time. The ARM Template philosophy is a declarative resource definition, but it requires help such as az CLI due to missing features. This is also the limit of the bicep.
    In comparison, the Terraform team seems to be making practical tools by actively filling in the gaps.
    I love bicep because that is a natively use Azure RM. I think Terraform is too much layering for azure resource provisioning tools.

  • @marktheimmortal
    @marktheimmortal 3 роки тому +4

    Awesome video. I've just ported a jumpbox environment from terraform to bicep to learn bicep. Got to say, I like Bicep. No more remote state to worry about (yay!), no more waiting for a feature to be implemented in terraform. The Bicep documentation could be improved thus it was a bit of a struggle to get some of the final pieces working (e.g. AD Linux Login extension) but got there in the end. Just watched your video after finishing and learned a few things! Thank you! :-)

    • @juanjedidiah5250
      @juanjedidiah5250 2 роки тому

      I guess im asking randomly but does any of you know a trick to get back into an instagram account??
      I was dumb lost my login password. I appreciate any tips you can offer me!

    • @gustavojaxton7877
      @gustavojaxton7877 2 роки тому

      @Juan Jedidiah Instablaster =)

    • @juanjedidiah5250
      @juanjedidiah5250 2 роки тому

      @Gustavo Jaxton i really appreciate your reply. I found the site through google and im waiting for the hacking stuff atm.
      Looks like it's gonna take a while so I will reply here later with my results.

    • @juanjedidiah5250
      @juanjedidiah5250 2 роки тому

      @Gustavo Jaxton it worked and I finally got access to my account again. Im so happy!
      Thanks so much, you really help me out !

    • @gustavojaxton7877
      @gustavojaxton7877 2 роки тому

      @Juan Jedidiah no problem :D

  • @Gbolagunte
    @Gbolagunte 3 роки тому +1

    Loved it!

  • @arieheinrich3457
    @arieheinrich3457 3 роки тому +4

    1. The "API Version" exists in the Azurerm Provider in TF which i think it better then adding apiversion as a property inside the resource group in bicep. This will cause some chaos in using services using different api versions that weren't necessarily tested in that combination.
    2. Bicep takes SOOO much from terraform that i dont understand why they even continue abstracting ARM instead of completely ditching it and going over a better solution (Terraform and pulumi- which has TF underneath as well). I don't like "tool-locking" but i rather use same tool and concepts for multi cloud then learn 5 different ways to provision per cloud provider
    3. TF is still better when you have a need to run on multiple cloud accounts.
    4. Lack of state file means were still not solving state drift , even tough MS had that built-in into DSC for example.
    5. Bicep and ARM still do not use immutable resources concept.
    6. Terraform supports adding ARM templates for those preview/new resources,. Not the cleanest way but allows to use the service in the mean time if you cant wait for the resource to be added to the provider.
    7. The AzureRM provider has new updates like at least once a week but you are correct in the fact that you rely on other to add the implementation but if that bothers you that a service you want to use, doesn't get the "desired focus", its a great reason to contribute yourself and return some thing to the community.
    8. The issue with Role Assignments is that its the subtle border between infra provisioning and config management. Originally they always say to use the right tool for the right job. Its one of the reasons Hashi are removing the provisioners from 0.15 towards 1.0. Which means you have to involve task form your cicd pipeline or helper files as in your example.
    9. The what-if is one of the best solutions that bicep has and terraform doesnt have and should focus on imho. As Unit testing when you deal with IAC is almost non existing and requires a sandbox deployment for testing. This can be aided by infra testing via powershell using poster or via python, but still requires a live deployment to start a test.
    I have abandoned ARM ages ago and moved to Terraform and recently even ventured into pulumi after their 2.0 version introduced native support for Azure API so all new/preview services that are introduced are supported on day 0.
    Yes terraform have given me some gray hair before and some frustration but overall i still think anyone that works with any cloud provider should aim for a solution like terraform instead of the native cloud tools . Adding an abstraction layer on top, just goes to show you how poor solution ARM is now days, but since they have major, well-paying enterprise customers invested in ARM they don't want to replace it with something else so they come up with ways to make it "easier" to digest. Problem is that the same IT peopl (inc. management) that complained so much about how hard it was to work with ARM over the years, instead of getting out of their narrow box and mind view and adopting new tools, will not all of the sudden embrace bicep just because it "builds" into an artifact, as they still have to learn how to use "code" for this. If they had the will to learn how to code, they would have moved to terraform ages ago. IF they come from full software background they might even jump over Terraform directly to pulumi as that is a REAL Infra-structure-as-code, while TF has mostly been Infrastructure-text or as-config. With TF 0.12+ it started looking like code but its still not there .

    • @nasarazam
      @nasarazam 3 роки тому

      For someone fairly new to all this, I get confused with all this. I was tilting more towards Terraforms as we have to support Azure and GCP (limited to BigQuery and GCS). Then I read your comment on Pulumi. Shall I go directly to Pulimi and discard both Bicep/ARM and Terraform? Any help is appreciated. - Thanks

    • @arieheinrich3457
      @arieheinrich3457 3 роки тому

      @@nasarazam Pulumi might be better if you are doing Azure (as its no longer needs the azurerm provider from terraform, but has its own implementation that speaks natively to the ARM API layer. This means you can always use the latest resource that MS creates even when it is still in preview. AND especially if you or you developers already work with languages like go, javascript, typescript, c# and even python. If you are coming from an OPS side, where youre more into python, powershell and DSC, and you really dont care about waiting a relative short period of time until newest services are available via the AzureRM or GCP providers, then Terraform HCL language is pretty easy to learn, and even though it tries to be considered as a programming language, its not yet there, perhaps after v1.0.
      Its never a bad bet, choosing Terraform, as pulumi is still relatively new. But i would say both would be better then native ARM. Which is why MS went for the bicep option to create another layer on top so its less intimidating for people. As mentioned though its only for Azure.
      While Terraform works on a provider-per cloud to deal with the API layers of each cloud provider, you will never get to a level where one code covers all cloud providers, theres simply not enough incentive to all the clouds providers to sit down and create a format thats globally adopted. Who knows maybe CNCF would create such a standard but we will see.

    • @nasarazam
      @nasarazam 3 роки тому

      @@arieheinrich3457 One advantage of Bicep that we cannot overlook is, it is by Microsoft. Which means they can afford to put more money into it and keep improving...

    • @arieheinrich3457
      @arieheinrich3457 3 роки тому +3

      @@nasarazam No doubt they will. Issues with ARM have been going on for almost a decade. Does it really take a decade to come with an innovative idea and solution ? While i love the fact i dont need a statefile as bicep goes directly to the ARM API layer, which means -whatif is a great option. I would have loved MS to spend the time and money for over 10 years almost to come with a better ideas especially seeing Terrform and Pulumi exist..its like reinventing the wheel 10 years after instead of working on standards.

  • @artisticcheese
    @artisticcheese 3 роки тому +6

    Probably worth removing background music or lower volume of it. It seems to be the same level and speech

    • @JonGallant
      @JonGallant  3 роки тому

      Thanks for letting me know. What device are you listening to this on? Headphones or speakers? Just wondering if I can try to repro. It sounds okay on my machine, but I didn't test with different setups.

    • @artisticcheese
      @artisticcheese 3 роки тому

      @@JonGallant I'm using speakers

    • @JonGallant
      @JonGallant  3 роки тому

      Ok. Thanks. I’ll keep that in mind for the next one.

  • @bocckoka
    @bocckoka 2 роки тому +2

    Bicep... ARM template... didn't make that connection until now.

  • @woutershorts
    @woutershorts 3 роки тому +4

    Great video Jon, but has the team thought about using terraform files and language to generate the arm template? It seems that most people like the way terraform works but want the zero day functionality of bicep. Without the mess of managing state of course.

    • @dennishsu899
      @dennishsu899 2 роки тому

      Great comparison video! 😊I have same thought as Wouter suggests. If Terraform can get the zero day functionality of bicep/arm, it would be awesome!
      It looks like Terraform is still easier to use than Bicep.

  • @OurCloudSchool-Hindi
    @OurCloudSchool-Hindi 2 роки тому

    I think you can get the resource properties you need check the code again

  • @nasarazam
    @nasarazam 3 роки тому +1

    As someone quite new to all this. From what I can gather from your very nice presentation, Terraform still looks the best choice. While Bicep will add more functionality, at the same time Terraform will not be stagnant and will improve as well. True, any new feature added in Azure may not be immediately available in Terraform, but its cross cloud/platform support is crucial to someone who supports both Azure and GCP. Love to hear your response - Thanks

    • @JonGallant
      @JonGallant  3 роки тому +1

      If you need cross cloud, then yes on Terraform, which we also love.

    • @nasarazam
      @nasarazam 3 роки тому

      @@JonGallant Pulumi looks ever better - comments?

    • @marktheimmortal
      @marktheimmortal 3 роки тому

      @@JonGallant When I first started Terraform I was expecting cross-cloud but it seems that so much of the implementation is very vendor-specific. Also the need for separate tweaks scripts to call cloud vendor APIs direct due to issues/missing-features taint the cross-cloud expectations. If I'm only using Azure with no actual plan to use another vendor (e.g. AWS) then I'm tempted to implement straight in Bicep. I guess that's the point right? If you really do need cross-cloud then Terraform may make more sense. But... if you don't need it, or are unlikely to need it, then perhaps Bicep is the way to go.

  • @teo11300
    @teo11300 2 роки тому

    This is great. Bicep is Azure specific whereas Terraform is cloud provider agnostic (so for me Terraform is better to learn!).

  • @adityanarayannayak6295
    @adityanarayannayak6295 Рік тому +1

    Wow i found gilfoyle

    • @JonGallant
      @JonGallant  Рік тому

      Wow that's the first time I've heard that

  • @emmanuelgelatimesa2712
    @emmanuelgelatimesa2712 Рік тому

    terraform, I want to avoid vendor lock in

  • @PaulShadwell
    @PaulShadwell 3 роки тому +1

    This looked so interesting but the music was too distracting so had to give up and give it a thumbs down. Can you release this video without the music?

    • @peterderwa5100
      @peterderwa5100 2 роки тому

      Sorry but that feels like a problem that you have, I thought this was a nice background ;-)