{"id":549031,"date":"2025-03-12T17:07:30","date_gmt":"2025-03-12T16:07:30","guid":{"rendered":"https:\/\/www.devoteam.com\/expert-view\/infrastructure-as-code-with-configuration-languages\/"},"modified":"2025-06-13T09:04:15","modified_gmt":"2025-06-13T07:04:15","slug":"infrastructure-as-code-with-configuration-languages","status":"publish","type":"expert-view","link":"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/","title":{"rendered":"Unlock your Infrastructure-as-Code with the power of Configuration Languages"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"h-why-do-you-need-a-configuration-language\">Why do you need a configuration language?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You will benefit greatly from a configuration language if you regularly write JSON or YAML files and have found a need to adopt:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Text templating tools like Mustache, Go Template, or Jinja;<\/li>\n\n\n\n<li>General purpose programming languages to manage infrastructure with tools like CDK or Pulumi;<\/li>\n\n\n\n<li>Or data-aware template tooling such as Jsonnet or Carvel ytt. <\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If you are a Platform or Cloud engineer, then this definitely applies to you. The reason is simple: your daily interactions with code often involve <a href=\"https:\/\/devoteam.info\/expert-view\/infrastructure-automation-infrastructure-as-code\/\">Infrastructure-as-Code (IaC<\/a>). Modern IaC tooling takes a declarative approach to defining infrastructure. It focuses on the outcomes we want irrespective of the steps taken to get there. IaC is a configuration of state, or put simply data. Data which can be produced by a configuration language.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now you know <em>if<\/em> you need a configuration language, the question is <em>what<\/em> exactly is a configuration language?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-is-a-configuration-language\">What is a configuration language?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A configuration language is a language which is used to define data structures. Unlike programming languages, configuration languages do not need to be Turing-complete to be useful. In fact, those who aren&#8217;t glean power from their simplicity and shallow learning curve. Another distinction is the relative purity of a configuration language. <font color=\"#000000\"><span style=\"background-color: rgba(0, 0, 0, 0.2);\">On the one hand, a general-purpose programming language is most often used to write program<\/span><\/font>s which act upon the world. On the other hand, the goal of a configuration language is to transform given input to output data. Side effects such as file IO or network calls are either not directly supported or play only a supporting role in defining data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There are many examples of configuration languages out there, such as Vimscript, Jsonnet, Carvel, and Nix. Some of these you may already be using, while others may be the more esoteric option if used outside of their intended domain. However, all of the options that existed before the year 2020 are limited. They are either domain-specific, bound to a data format, or tightly scoped in their solution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-new-wave\">The New Wave<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There is now a new wave of configuration languages which boast a more holistic approach to configuration. This distinguishes them from the swathes of domain-specific cousins. So <em>why<\/em> exactly do you need a configuration language? Allow me to highlight two projects which offer complete configuration solutions worthy of defining even the most complex infrastructure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Born out of use cases <span style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">dealin<\/span>g with large-scale configuration and policy management,&nbsp;CUE&nbsp;and&nbsp;KCL&nbsp;offer complete solutions. Both are configuration languages that offer ways to enforce policy and package and distribute code. These latter requirements define the new wave of configuration tooling. They set it apart from the previous generation of tooling, such as Jsonnet and Carvel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is not a comparison of CUE and KCL. It is rather an introduction to the tooling void they are designed to fill. After reading this section, I want you to feel excited about the possibilities of modern configuration languages!<\/p>\n\n\n\n<div class=\"wp-block-group has-secondary-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-03cab32d wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--medium);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--medium);padding-left:var(--wp--preset--spacing--medium)\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8d39b2df wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"200\" height=\"200\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/CUE.png\" alt=\"\" class=\"wp-image-544867\" title=\"CUE Logo\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/CUE.png 200w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/CUE-150x150.png 150w\" sizes=\"auto, (max-width: 200px) 100vw, 200px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<h3 class=\"wp-block-heading has-medium-small-font-size\" id=\"h-example-1-cue\">Example 1: CUE<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CUE stands for <em>Configure<\/em>, <em>Unify<\/em>, and <em>Execute<\/em>. CUE makes it easy to validate data, write schemas, and ensure configurations align with policies.<\/p>\n<\/div>\n<\/div>\n\n\n\n<pre class=\"wp-block-code has-gray-light-background-color has-background\"><code>\/\/ config.cue\nimport \"strings\"\n\n_name: \"CUE\"\n\noutput: message: string &amp; strings.MinRunes(1)\noutput: format: \"YAML\" | \"JSON\"\n\noutput: {\n  message: \"\\(_name) is a configuration language\"\n  format: \"YAML\"\n  messageLength: len(message)\n}\n\n\u276f cue export config.cue --out yaml\noutput:\n  message: CUE is a configuration language\n  format: YAML\n  messageLength: 31<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/cuelang.org\/play\/?id=vY6vib6V5IE#w=function&amp;i=cue&amp;f=export&amp;o=yaml\" target=\"_blank\" rel=\"noreferrer noopener\"><em>Click here to play with this example on the CUE Playground<\/em><\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-secondary-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-03cab32d wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--medium);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--medium);padding-left:var(--wp--preset--spacing--medium)\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8d39b2df wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"385\" height=\"152\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/KCL.png\" alt=\"\" class=\"wp-image-544888\" style=\"width:391px;height:auto\" title=\"KCL Logo\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/KCL.png 385w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/KCL-300x118.png 300w\" sizes=\"auto, (max-width: 385px) 100vw, 385px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<h3 class=\"wp-block-heading has-medium-small-font-size\" id=\"h-example-2-kcl\">Example 2: KCL<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">KCL is a CNCF Sandbox project and stands for <em>Kusion<\/em> <em>Configuration<\/em> <em>Language<\/em>. It is an open-source constraint-based record &amp; functional language mainly used in configuration and policy scenarios.<\/p>\n<\/div>\n<\/div>\n\n\n\n<pre class=\"wp-block-code has-gray-light-background-color has-background\"><code># config.k\n\n_name = \"KCL\"\n\nschema Output:\n\n&nbsp;&nbsp;message: str\n\n&nbsp;&nbsp;format: \"YAML\" | \"JSON\"\n\n&nbsp;&nbsp;messageLength: int\n\n&nbsp;&nbsp;check:\n\n&nbsp;&nbsp;&nbsp;&nbsp;len(message) &gt; 0, \"Message must not be empty\"\n\noutput = Output {\n\n&nbsp;&nbsp;message = \"${_name} is a configuration language\"\n\n&nbsp;&nbsp;format = \"YAML\"\n\n&nbsp;&nbsp;messageLength = len(message)\n\n}\n\n\u276f kcl run config.k\n\noutput:\n\n&nbsp;&nbsp;message: KCL is a configuration language\n\n&nbsp;&nbsp;format: YAML\n\n&nbsp;&nbsp;messageLength: 31<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/play.kcl-lang.io\/?s=MQAgxg9gdgZglgcwHQGsBQB9KBDAtgUxAF4QAiAaQGEAZUtNAZzAAt9dsQB5AVwBcAHPgC40IEAQYNsCfEJANeAJ1EgYERe15zSATQCCAWVogAPmQBSAZU4A5OmIlSZ1fFAS9mcuFF4qVLfDAUETExABtXAApHaXwAShAAPhAABgAaMgN8SVjxbgUQKAheEAAjQjZ+XgBPOjQIPkESkh4BPhAAbxUYmWIyABIOrDx8AF8QOAYQDkhYRG5FbF44aBAw7DduWPtVdU0+3UNabuynfBc3Dz6IqGjT2Li0UaA\" target=\"_blank\" rel=\"noreferrer noopener\"><em>Click here to play with this example on the KCL Playground<\/em><\/a><\/p>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The examples shown above are only a very small part of the power of these languages. Although simple, they are exciting to YAML wranglers like myself. As you can gather from the blurbs of CUE and KCL, they both talk about schema, validation, policy and configuration. These are high level concepts, and they need to be to fit on the home page of their websites. So <strong>what can you actually do with this?<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"623\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/CUE-KCL-configurationlanguages-1024x623.png\" alt=\"\" class=\"wp-image-544909\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/CUE-KCL-configurationlanguages-1024x623.png 1024w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/CUE-KCL-configurationlanguages-300x182.png 300w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/CUE-KCL-configurationlanguages-768x467.png 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/CUE-KCL-configurationlanguages-1536x934.png 1536w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/CUE-KCL-configurationlanguages.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-characteristics-of-configuration-languages\">Characteristics of configuration languages<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use your imagination and reinvent anything that revolves around data. There are so many valuable uses for configuration languages, and they&#8217;re all made possible by their defining characteristics. So let&#8217;s talk about them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-1-a-simplified-language\">1. A Simplified Language<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><font color=\"#000000\"><span style=\"background-color: rgba(0, 0, 0, 0.2);\">While inspired by gener<\/span><\/font>al-purpose languages, both CUE and KCL limit the number of language features on offer to keep the toolbox fit for purpose. This minimal approach reduces the amount of foot guns present in many other general purpose languages. It also simplifies the writing and reading of language syntax. A key in how both these languages operate is an effort in the reduction of indirection. In large, complex configurations it could be difficult to pinpoint the line of code responsible for a configuration outcome if complex inheritance structures or overlays and mutability were allowed. As such, both CUE and KCL prioritise immutability, albeit in different ways.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-first-class-policies\">2. First-Class Policies<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CUE and KCL are different from the configuration authoring tools of the past. They include ways to write and enforce policy directly in the language spec. CUE does this through a unique approach. This approach narrows data types using a <a href=\"https:\/\/cuelang.org\/docs\/concept\/the-logic-of-cue\/#the-value-lattice\">value lattice<\/a>. Meanwhile, KCL achieves the result through a <a href=\"https:\/\/www.kcl-lang.io\/docs\/reference\/lang\/spec\/schema#check-block\">schema check syntax<\/a> and <a href=\"https:\/\/www.kcl-lang.io\/docs\/reference\/lang\/tour#rule\">rules<\/a>. Making policy a first class citizen with powerful expressiveness is an important part of forming the identity of these projects as configuration languages and sets them apart from the tools that came before.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-modules\">3. Modules<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CUE and KCL have both embraced the OCI standard. This can be used to package and distribute modules which can be imported into other modules to form your configuration. The implementation of these is particularly useful for distributing schemas or policies to users. Authors of APIs can provide schema modules such as those for Kubernetes.  Security, cloud and platform engineers in the organisation can add policy and abstraction before redistributing it internally for developers to consume by supplying the final layer of data. This ability to import, enhance, and distribute configuration using OCI images is an incredible way to speed up developers. All while ensuring correctness and compliance.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-4-data-agnostic\">4. Data Agnostic<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">There are many data models out there from JSON and YAML to Nix and Lisp. While many tools focus on just one, CUE and KCL have their own intermediate data formats and provide <a href=\"https:\/\/cuelang.org\/docs\/integration\/\">integrations<\/a> which map data between it and the formats we use. While formats such as Nix and Lisp are not yet supported, many of the common ones are with the list growing over time.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"365\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/configuration-languages-2-1024x365.png\" alt=\"\" class=\"wp-image-544930\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/configuration-languages-2-1024x365.png 1024w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/configuration-languages-2-300x107.png 300w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/configuration-languages-2-768x274.png 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/configuration-languages-2-1536x548.png 1536w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/configuration-languages-2.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"298\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/configuration-languages-3-1024x298.png\" alt=\"\" class=\"wp-image-544951\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/configuration-languages-3-1024x298.png 1024w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/configuration-languages-3-300x87.png 300w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/configuration-languages-3-768x224.png 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/configuration-languages-3-1536x447.png 1536w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/03\/configuration-languages-3.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-5-sdks\">5. SDKs<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When a piece of the puzzle is missing for your use case, such as a certain import or export option, all is not lost. CUE and KCL both offer extensive SDKs to allow you to embed the usage of these configuration languages into your own programs. CUE provides a <a href=\"https:\/\/cuelang.org\/docs\/concept\/how-cue-works-with-go\/#using-cues-go-api\">very comprehensive Go API<\/a> to enable anything from using CUE as your application&#8217;s primary configuration format to implementing a full test suite leveraging the power of CUE&#8217;s <a href=\"https:\/\/cuelang.org\/docs\/tour\/basics\/unification\/\">unification engine<\/a>. KCL also offers <a href=\"https:\/\/www.kcl-lang.io\/docs\/reference\/xlang-api\/overview\">SDKs<\/a> across an extensive list of languages ranging from Go to Lua.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-6-automation\">6. Automation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Like tools that have come before, both CUE and KCL output data by invocation, either to stdout or to a provided output file. Though unlike many others, both CUE and KCL implement APIs to enable automation right in the language (this is where <em>Execute<\/em> comes into play for the <strong>E<\/strong> in CUE). The benefit of this is that you can implement your integration actions close to the data that drives them instead of finding another tool to parse and execute like you&#8217;d commonly find a Python script doing. CUE provides a tooling layer for enhancing the CLI with custom <a href=\"https:\/\/cuelang.org\/docs\/howto\/use-your-first-cue-workflow-command\/\">workflow commands<\/a> which can print various data to stdout, write to file, or even <a href=\"https:\/\/cuelang.org\/docs\/howto\/fetch-json-data-http\/\">make HTTP requests<\/a>. KCL also offers <a href=\"https:\/\/www.kcl-lang.io\/docs\/reference\/model\/overview\">system packages<\/a> for writing to stdout and file IO with the opportunity to extend capabilities through custom plugins. Though it is important to note that as of the time of publishing, custom plugins require the usage of the KCL SDK rather than the CLI. Something I hope to see made possible via modules in the future.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-gray-color has-alpha-channel-opacity has-gray-background-color has-background\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-should-you-pick-the-cue-playground-or-the-kcl-playground\">Should you pick the <a href=\"https:\/\/cuelang.org\/play\/\">CUE Playground<\/a> or the <a href=\"https:\/\/play.kcl-lang.io\/\">KCL Playground<\/a>?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I strongly urge you to take a closer look at either CUE or KCL. Pick any and start having a play with them. I find it difficult to pick my favourite and keep going back and forth, they both have so much to offer. I would characterise CUE as the dogmatic choice and KCL as pragmatic. Given my love for Haskell, the poster child of dogmatic programming, CUE satisfies me in just the right way. However, KCL&#8217;s roadmap has allowed it to tick a lot of the boxes early in development enabling it to already be a productive configuration language in many scenarios. At the time of writing, both are in initial development with major version zero and both projects have plans to tick boxes in all the same categories. I would absolutely recommend keeping your finger on this pulse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Delving deeper into how configuration languages facilitate Infrastructure as Code will empower you to simplify your cloud management practices significantly. Learn more in our article &#8220;<strong><a href=\"https:\/\/devoteam.info\/expert-view\/infrastructure-as-code-simplify-your-cloud-management-today\/\">Infrastructure as Code: Simplify Your Cloud Management Today!<\/a><\/strong>&#8220;<\/p>\n\n\n\n<div class=\"wp-block-group has-gray-light-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-03cab32d wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--medium);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--medium);padding-left:var(--wp--preset--spacing--medium)\">\n<p class=\"wp-block-paragraph\">You can follow the development through their GitHub repositories and check out their community links. I&#8217;ll see you there!<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GitHub:<\/strong> <a href=\"https:\/\/github.com\/cue-lang\/cue\">CUE<\/a> | <a href=\"https:\/\/github.com\/kcl-lang\/kcl\">KCL<\/a> <\/li>\n\n\n\n<li><strong>Community:<\/strong> <a href=\"https:\/\/cuelang.org\/community\/\">CUE<\/a> | <a href=\"https:\/\/www.kcl-lang.io\/docs\/community\/intro\/\">KCL<\/a><\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-secondary-background-color has-background is-vertical is-layout-flex wp-container-core-group-is-layout-8382bf89 wp-block-group-is-layout-flex\" style=\"margin-top:var(--wp--preset--spacing--medium);margin-bottom:var(--wp--preset--spacing--medium);padding-top:0;padding-bottom:0\">\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-baf45ea7 wp-block-group-is-layout-constrained\" style=\"margin-top:var(--wp--preset--spacing--small);margin-bottom:var(--wp--preset--spacing--small);padding-top:var(--wp--preset--spacing--small);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--small);padding-left:var(--wp--preset--spacing--medium)\">\n<p class=\"has-text-align-center has-medium-font-size wp-block-paragraph\"><strong>Cloud Trend Report 2025<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-center has-base-font-size wp-block-paragraph\" style=\"margin-top:var(--wp--preset--spacing--small);margin-bottom:var(--wp--preset--spacing--small)\">Get your free report and learn how AWS, Microsoft, and Google Cloud:<\/p>\n\n\n\n<div class=\"wp-block-columns are-vertically-aligned-top is-layout-flex wp-container-core-columns-is-layout-8d39b2df wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:40%\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"920\" height=\"547\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/Cloud-Trend-Report-2025-005-Mockup-920.png\" alt=\"\" class=\"wp-image-468594\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/Cloud-Trend-Report-2025-005-Mockup-920.png 920w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/Cloud-Trend-Report-2025-005-Mockup-920-300x178.png 300w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/Cloud-Trend-Report-2025-005-Mockup-920-768x457.png 768w\" sizes=\"auto, (max-width: 920px) 100vw, 920px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:60%\">\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-0b1620ab wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-f533a020 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large is-resized wp-duotone-red-devoteam\"><img decoding=\"async\" src=\"https:\/\/devoteam.info\/wp-content\/themes\/lsac-devoteam\/patterns\/images\/controle-des-badges.svg\" alt=\"\" style=\"aspect-ratio:1;object-fit:contain;width:40px;height:auto\"\/><\/figure>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-b3fc9f22 wp-block-group-is-layout-flex\">\n<p class=\"has-x-small-font-size wp-block-paragraph\" style=\"font-style:normal;font-weight:400\">Embed&nbsp;AI everywhere&nbsp;to achieve market leadership through enhanced capabilities.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-f533a020 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large is-resized wp-duotone-red-devoteam\"><img decoding=\"async\" src=\"https:\/\/devoteam.info\/wp-content\/themes\/lsac-devoteam\/patterns\/images\/controle-des-badges.svg\" alt=\"\" style=\"aspect-ratio:1;object-fit:contain;width:40px\"\/><\/figure>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-b3fc9f22 wp-block-group-is-layout-flex\">\n<p class=\"has-x-small-font-size wp-block-paragraph\" style=\"font-style:normal;font-weight:400\">Embrace API-first composability&nbsp;for flexible systems and accelerated innovation.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-fe6f0742 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large is-resized wp-duotone-red-devoteam\"><img decoding=\"async\" src=\"https:\/\/devoteam.info\/wp-content\/themes\/lsac-devoteam\/patterns\/images\/controle-des-badges.svg\" alt=\"\" style=\"object-fit:contain;width:40px;height:auto\"\/><\/figure>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-b3fc9f22 wp-block-group-is-layout-flex\">\n<p class=\"has-x-small-font-size wp-block-paragraph\" style=\"font-style:normal;font-weight:400\">Democratise data and AI&nbsp;to drive smarter, more informed decisions.<br><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-fe6f0742 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large is-resized wp-duotone-red-devoteam\"><img decoding=\"async\" src=\"https:\/\/devoteam.info\/wp-content\/themes\/lsac-devoteam\/patterns\/images\/controle-des-badges.svg\" alt=\"\" style=\"aspect-ratio:1;object-fit:contain;width:40px;height:auto\"\/><\/figure>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-b3fc9f22 wp-block-group-is-layout-flex\">\n<p class=\"has-x-small-font-size wp-block-paragraph\" style=\"font-style:normal;font-weight:400\">Enable robust security and ethical governance&nbsp;for responsible and sustainable AI.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-b7c91e0b wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/devoteam.info\/cloud-trend-report\/?utm_source=website&amp;utm_medium=CTA&amp;utm_campaign=cloud_trend_report_2024&amp;utm_content=long_cta\">Download the Free Report<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--1\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/devoteam.info\/get-in-touch\/\">Get in touch<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Why do you need a configuration language? You will benefit greatly from a configuration language if you regularly write JSON or YAML files and have found a need to adopt: If you are a Platform or Cloud engineer, then this definitely applies to you. The reason is simple: your daily interactions with code often involve [&hellip;]<\/p>\n","protected":false},"featured_media":148112,"template":"","categories":[1060],"tags":[],"industry":[],"class_list":["post-549031","expert-view","type-expert-view","status-publish","has-post-thumbnail","hentry","category-cloud-native-architecture"],"acf":[],"cards":"\n\t<div class=\"single-post-card\">\n\n\t\t<figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/\" target=\"_self\" ><img width=\"1920\" height=\"1280\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Unlock your Infrastructure-as-Code with the power of Configuration Languages\" style=\"aspect-ratio:4\/3;width:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575.jpg 1920w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575-300x200.jpg 300w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575-1024x683.jpg 1024w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575-768x512.jpg 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575-1536x1024.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/figure>\n\n\t\t\n\t\t<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-43282307 wp-block-group-is-layout-flex\">\n\t<p style=\"font-style:normal;font-weight:700\" class=\"has-link-color wp-elements-1 wp-block-lp-post-type has-text-color has-primary-color has-small-font-size\">Expert View<\/p>\n\n\t\t\n\t\t<h3 style=\"font-style:normal;font-weight:400\" class=\"wp-block-post-title has-base-font-size\"><a href=\"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/\" target=\"_self\" >Unlock your Infrastructure-as-Code with the power of Configuration Languages<\/a><\/h3><\/div>\n\t\t\n\t<\/div>\n\n","yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.4 (Yoast SEO v28.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Infrastructure as Code: Use Modern Configuration Languages | Devoteam<\/title>\n<meta name=\"description\" content=\"Enhance Infrastructure as Code (IAC) using modern configuration languages. Explore CUE &amp; KCL, their benefits, and practical examples.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Unlock your Infrastructure-as-Code with the power of Configuration Languages\" \/>\n<meta property=\"og:description\" content=\"Enhance Infrastructure as Code (IAC) using modern configuration languages. Explore CUE &amp; KCL, their benefits, and practical examples.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/\" \/>\n<meta property=\"og:site_name\" content=\"Devoteam\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-13T07:04:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1280\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"16 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/be\\\/expert-view\\\/infrastructure-as-code-with-configuration-languages\\\/\",\"url\":\"https:\\\/\\\/devoteam.info\\\/be\\\/expert-view\\\/infrastructure-as-code-with-configuration-languages\\\/\",\"name\":\"Infrastructure as Code: Use Modern Configuration Languages | Devoteam\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/be\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/be\\\/expert-view\\\/infrastructure-as-code-with-configuration-languages\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/be\\\/expert-view\\\/infrastructure-as-code-with-configuration-languages\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/GettyImages-1214403575.jpg\",\"datePublished\":\"2025-03-12T16:07:30+00:00\",\"dateModified\":\"2025-06-13T07:04:15+00:00\",\"description\":\"Enhance Infrastructure as Code (IAC) using modern configuration languages. Explore CUE & KCL, their benefits, and practical examples.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/be\\\/expert-view\\\/infrastructure-as-code-with-configuration-languages\\\/#breadcrumb\"},\"inLanguage\":\"en-BE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/devoteam.info\\\/be\\\/expert-view\\\/infrastructure-as-code-with-configuration-languages\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-BE\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/be\\\/expert-view\\\/infrastructure-as-code-with-configuration-languages\\\/#primaryimage\",\"url\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/GettyImages-1214403575.jpg\",\"contentUrl\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/GettyImages-1214403575.jpg\",\"width\":1920,\"height\":1280,\"caption\":\"Cloud Monitoring Data and Cloud Management\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/be\\\/expert-view\\\/infrastructure-as-code-with-configuration-languages\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/devoteam.info\\\/be\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Expert View\",\"item\":\"https:\\\/\\\/devoteam.info\\\/be\\\/expert-view\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Unlock your Infrastructure-as-Code with the power of Configuration Languages\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/be\\\/#website\",\"url\":\"https:\\\/\\\/devoteam.info\\\/be\\\/\",\"name\":\"Devoteam\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/devoteam.info\\\/be\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-BE\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Infrastructure as Code: Use Modern Configuration Languages | Devoteam","description":"Enhance Infrastructure as Code (IAC) using modern configuration languages. Explore CUE & KCL, their benefits, and practical examples.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/","og_locale":"en_US","og_type":"article","og_title":"Unlock your Infrastructure-as-Code with the power of Configuration Languages","og_description":"Enhance Infrastructure as Code (IAC) using modern configuration languages. Explore CUE & KCL, their benefits, and practical examples.","og_url":"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/","og_site_name":"Devoteam","article_modified_time":"2025-06-13T07:04:15+00:00","og_image":[{"width":1920,"height":1280,"url":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/","url":"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/","name":"Infrastructure as Code: Use Modern Configuration Languages | Devoteam","isPartOf":{"@id":"https:\/\/devoteam.info\/be\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/#primaryimage"},"image":{"@id":"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/#primaryimage"},"thumbnailUrl":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575.jpg","datePublished":"2025-03-12T16:07:30+00:00","dateModified":"2025-06-13T07:04:15+00:00","description":"Enhance Infrastructure as Code (IAC) using modern configuration languages. Explore CUE & KCL, their benefits, and practical examples.","breadcrumb":{"@id":"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/#breadcrumb"},"inLanguage":"en-BE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/"]}]},{"@type":"ImageObject","inLanguage":"en-BE","@id":"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/#primaryimage","url":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575.jpg","contentUrl":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575.jpg","width":1920,"height":1280,"caption":"Cloud Monitoring Data and Cloud Management"},{"@type":"BreadcrumbList","@id":"https:\/\/devoteam.info\/be\/expert-view\/infrastructure-as-code-with-configuration-languages\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devoteam.info\/be\/"},{"@type":"ListItem","position":2,"name":"Expert View","item":"https:\/\/devoteam.info\/be\/expert-view\/"},{"@type":"ListItem","position":3,"name":"Unlock your Infrastructure-as-Code with the power of Configuration Languages"}]},{"@type":"WebSite","@id":"https:\/\/devoteam.info\/be\/#website","url":"https:\/\/devoteam.info\/be\/","name":"Devoteam","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devoteam.info\/be\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-BE"}]}},"uagb_featured_image_src":{"full":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575.jpg",1920,1280,false],"thumbnail":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575-150x150.jpg",150,150,true],"medium":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575-300x200.jpg",300,200,true],"medium_large":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575-768x512.jpg",768,512,true],"large":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575-1024x683.jpg",1024,683,true],"1536x1536":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575-1536x1024.jpg",1536,1024,true],"2048x2048":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1214403575.jpg",1920,1280,false]},"uagb_author_info":{"display_name":"lea.mitteaux","author_link":"https:\/\/devoteam.info\/be\/author\/"},"uagb_comment_info":0,"uagb_excerpt":"Why do you need a configuration language? You will benefit greatly from a configuration language if you regularly write JSON or YAML files and have found a need to adopt: If you are a Platform or Cloud engineer, then this definitely applies to you. The reason is simple: your daily interactions with code often involve&hellip;","_links":{"self":[{"href":"https:\/\/devoteam.info\/be\/wp-json\/wp\/v2\/expert-view\/549031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devoteam.info\/be\/wp-json\/wp\/v2\/expert-view"}],"about":[{"href":"https:\/\/devoteam.info\/be\/wp-json\/wp\/v2\/types\/expert-view"}],"version-history":[{"count":0,"href":"https:\/\/devoteam.info\/be\/wp-json\/wp\/v2\/expert-view\/549031\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devoteam.info\/be\/wp-json\/wp\/v2\/media\/148112"}],"wp:attachment":[{"href":"https:\/\/devoteam.info\/be\/wp-json\/wp\/v2\/media?parent=549031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devoteam.info\/be\/wp-json\/wp\/v2\/categories?post=549031"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devoteam.info\/be\/wp-json\/wp\/v2\/tags?post=549031"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/devoteam.info\/be\/wp-json\/wp\/v2\/industry?post=549031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}