7 ms·
>I feel like Pulumi takes the best of the two tools and has a really great developer experience. There is a little bit of a learning curve with Pulumi, and you
by juliangamble 4y ago
>I feel like Pulumi takes the best of the two tools and has a really great developer experience. There is a little bit of a learning curve with Pulumi, and you give up some of the simplicity of Terraform.
I'm familiar with Terraform, and generally like it compared to AWS Cloudformation, but do have some gripes. I'm not familiar with Pulumi - what have other people experienced with it? Do you like it better?
- verdverm 4y agoThey introduced a Yaml interface last year, because, as I suspect, programming configuration in multiple languages sounds nice up front but does not scale. When you program IaC, you stop being declarative in the same way TF is.
- zmgsabst 4y agoThat hasn’t been my experience; quite the reverse. Programmatic IaC made it a lot easier to: - turn our inventory DB into a IaC deployment for a hybrid cloud that needed IOT shadows per datacenter device - shard our data processing pipelines to localized data centers so we can respect data protection laws - automatically compiling infrastructure definitions directly from programs, to run as “cloud binaries” What do you imagine the challenges at scale are?
- verdverm 4y agoThe main issues with multilingual, imperative infra is sharing between teams who use different languages and building tooling for the stack. Another issue is understanding how the config / infra is assembled in high pressure situations like outages. All of those things you mention have been done for a long time before pulumi or re-imperative infra. OG DevOps was largely imperative until TF came out. There was a reason for the switch. Not that I don't have complaints about TF, but I would never go back to the imperative days I'm personally moving to CUE and outputting tf.json files until I have time to investigate crossplane. Want to see if their state management, permissions, and reconciliation is better by building on the k8s API S
- zmgsabst 4y ago> Another issue is understanding how the config / infra is assembled in high pressure situations like outages. My experience is that this is strictly easier in a full programming language than TF, due to debugging tools. > OG DevOps was largely imperative until TF came out. There was a reason for the switch. There’s also a reason for the switch back: I’ve had to maintain those declarative templates at scale and they’re ghastly. I would much, much rather deal with an actual programming language any time. I would never go back to the TF days.
- verdverm 4y ago> My experience is that this is strictly easier in a full programming language than TF, due to debugging tools. Is that with code you have written? At scale, you are SRE'n something someone else wrote, because no one can be on call 24/7 I've never had to really debug TF in an outage, the tools have been logmon & requires visibility across the stack, from infra to applications > There’s also a reason for the switch back I suspect this is more about everything old being new again, TF having a few rough edges, and DevOps people wanting to feel like they are programming. Their are better places to spend programming effort in the DevOps / sre job
- zmgsabst 4y ago> At scale, you are SRE'n something someone else wrote, because no one can be on call 24/7 My teams had dedicated on-calls; we were platform teams for other teams. So — perhaps it makes a difference if you’re talking about that situation? > DevOps people wanting to feel like they are programming. Their are better places to spend programming effort in the DevOps / sre job Yawn. You’re implying bad morals because someone has a different view than you — and such ad hominems are inappropriate. You also clearly are ignoring the experience of the many, many people migrating this way — purely out of hand. Maybe that’s why you don’t understand: you’re too stuck up.
- verdverm 4y agoyou sink to exaggerated and derogatory statements when someone makes points you disagree with what does that say about you?
- jen20 4y ago> you stop being declarative Pulumi uses a declarative model - actually the same model as Terraform.
- verdverm 4y agoWrapping declarative in imperative undoes the declarative
- jen20 4y agoNo, it does not. The thing that makes the decision about what effects to carry out in Pulumi and Terraform is what makes both declarative, not the programming language used to configure that thing.
- verdverm 4y agoNo... When you wrap config in code, you are instructing how to build a view of the world. Sure what you are outputting is declarative, but how you get there is not. You are not declaring what it looks like, you are writing instructions for how to produce declarative. The end user experience is no longer declarative, it's instructive, it's imperative. Pulumi & Terraform... infra... is not the only place where declarative happens. The driver and medium does not determine if the system is declarative. It is the developer experience which does
- jen20 4y agoThis is quite simply false. Reducing your statement, using count in Terraform makes it imperative, which is patently false, since it is instructing the tool how to build a view of the world. I could write a Prolog language host for Pulumi. Obviously that would not be imperative. It would present the exact same model as TypeScript or Go. The engine is what matters, not the configuration format.
- verdverm 4y agoTF has indeed introduced some questionable semantics, though count does not make it imperative. On this you are wrong. Yes the infra after the imperative step can have declarative layers, but the DX is still imperative. Declarative frameworks still have imperative operations underneath. You cannot argue that something is a declarative DX that is no longer a declarative input. Declarative DX is what matters. Pulumi reverses this so that the outer most layer is no longer declarative. Declarative as a term came to be because it is what the human is doing > The engine is what matters, not the configuration format. Code is not a configuration format...