Slide 1

Slide 1 text

Power to the people Combine imperative with declarative aspects Ringo De Smet @ringods @[email protected]

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Both terms refer to how the user provides direction to the automation platform. With an imperative tool, you define the steps to execute in order to reach the desired solution. With a declarative tool, you define the desired state of the final solution, and the automation platform determines how to achieve that state. Source: https://www.linode.com/blog/devops/declarative-vs-imperative-in-iac/

Slide 8

Slide 8 text

What is the behaviour when running multiple times? Imperative Run #1 all steps are executed and resources are created Run #2 All steps are executed and resources are created again Declarative Run #1 All resources are declared and converged Run #2 All resources are declared again, the tool remembers these are already converged, and does nothing

Slide 9

Slide 9 text

Imperative & Declarative aspects of tools in our toolbox Chef Helm Pulumi Dagger

Slide 10

Slide 10 text

Chef

Slide 11

Slide 11 text

Short recap ● DSL in Ruby for configuration management ● Resource ● Recipe ● Cookbook ● And some more

Slide 12

Slide 12 text

Chef - single resource

Slide 13

Slide 13 text

Chef - collection of resources

Slide 14

Slide 14 text

Chef - remote collection of resources

Slide 15

Slide 15 text

Helm

Slide 16

Slide 16 text

Source: https://github.com/prometheus-community/helm-charts/blob/main/charts/prometheus/templates/service.yaml

Slide 17

Slide 17 text

Source: https://helm.sh/docs/chart_template_guide/functions_and_pipelines/

Slide 18

Slide 18 text

Source: https://helm.sh/docs/chart_template_guide/function_list/

Slide 19

Slide 19 text

Pulumi

Slide 20

Slide 20 text

Language Host Pulumi CLI + Engine Pulumi Providers gRPC gRPC Pulumi Architecture

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Language Host Pulumi CLI + Engine Pulumi Providers gRPC gRPC VPC Register resource

Slide 23

Slide 23 text

Language Host Pulumi CLI + Engine Pulumi Providers gRPC gRPC VPC IG Register resource Register resource

Slide 24

Slide 24 text

Language Host Pulumi CLI + Engine Pulumi Providers gRPC gRPC VPC IG RT Register resource Register resource Register resource

Slide 25

Slide 25 text

Language Host Pulumi CLI + Engine Pulumi Providers gRPC gRPC VPC IG RT Register resource Register resource Register resource SG Register resource

Slide 26

Slide 26 text

Language Host Pulumi CLI + Engine Pulumi Providers gRPC gRPC VPC IG RT Register resource Register resource Register resource Create Resource Create Resource Create Resource 1 2 3 SG Create Resource 2 Register resource

Slide 27

Slide 27 text

Language Host Pulumi CLI + Engine Pulumi Providers gRPC gRPC Pulumi Architecture An imperative language setup drives a … … declarative engine, which uses … … imperative calls to fulfil the desired state

Slide 28

Slide 28 text

Dagger

Slide 29

Slide 29 text

Dagger (High Level) Architecture

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Why do we want both aspects?

Slide 32

Slide 32 text

Integration!

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

Pulumi Automation API Allows you to embed Pulumi in bigger automations Pulumi Engine Your automation project Automation API

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

Thank you! @ringods @[email protected]