<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Deploy, configure and provision Grafana with as-code workflows on Grafana Labs</title><link>https://grafana.com/docs/grafana/v12.4/as-code/</link><description>Recent content in Deploy, configure and provision Grafana with as-code workflows on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v12.4/as-code/index.xml" rel="self" type="application/rss+xml"/><item><title>Observability as code</title><link>https://grafana.com/docs/grafana/v12.4/as-code/observability-as-code/</link><pubDate>Fri, 03 Apr 2026 12:35:46 -0500</pubDate><guid>https://grafana.com/docs/grafana/v12.4/as-code/observability-as-code/</guid><content><![CDATA[

  
    
      
    
  
&lt;div class=&#34;docs-hero my-2 &#34;&gt;
  &lt;div class=&#34;d-flex flex-direction-row flex-direction-column-small column-gap-20 row-gap-10 justify-content-start align-items-center align-items-start-small flex-wrap &#34;&gt;&lt;div class=&#34;d-flex flex-direction-column flex-1-1 minw-400 minw-xs-unset&#34;&gt;
      &lt;div&gt;&lt;h1
  
  id=&#34;configure-and-provision-grafana-with-as-code-workflows&#34;
  &gt;Configure and provision Grafana with as-code workflows&lt;/h1&gt;&lt;/div&gt;
      
        &lt;div class=&#34;&#34;&gt;Manage resources, including folders and dashboards, and configurations with as-code workflows.&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;Grafana provides a suite of tools for &lt;strong&gt;Observability as code&lt;/strong&gt; to help you manage your Grafana resources programmatically and at scale. This approach lets you define dashboards, data sources, and other configurations in code, enabling version control, automated testing, and reliable deployments through CI/CD pipelines. You can apply code management best practices to your observability resources, and integrate them into existing infrastructure-as-code workflows.&lt;/p&gt;
&lt;p&gt;Historically, managing Grafana as code involved various community and Grafana Labs tools, but lacked a single, cohesive story. Grafana 12 introduces foundational improvements, including new versioned APIs and official tooling, to provide a clearer path forward:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This approach requires handling HTTP requests and responses but provides complete control over resource management.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grafanactl&lt;/code&gt;, Git Sync, and the Foundation SDK are all built on top of these APIs.&lt;/li&gt;
&lt;li&gt;To understand Dashboard Schemas accepted by the APIs, refer to the 
    &lt;a href=&#34;/docs/grafana/v12.4/observability-as-code/schema-v2/&#34;&gt;JSON models documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;explore&#34;&gt;Explore&lt;/h2&gt;

&lt;div class=&#34;w-100p&#34;&gt;
  &lt;div class=&#34;card-content-grid mt-1&#34;&gt;&lt;a class=&#34;card sm&#34; href=&#34;./observability-as-code/&#34;&gt;
  &lt;div class=&#34;card-content-container p-1 d-flex flex-direction-column align-items-start justify-content-start &#34;&gt;&lt;div class=&#34;card-title body-default fw-500 lh-2 text-gray-16&#34;&gt;Observability as code&lt;/div&gt;&lt;div class=&#34;card-description body-small text-gray-12 fw-400&#34;&gt;Using Observability as code, you can version, automate, and scale Grafana configurations, including dashboards and observability workflows.&lt;/div&gt;&lt;/div&gt;
&lt;/a&gt;&lt;a class=&#34;card sm&#34; href=&#34;./infrastructure-as-code/&#34;&gt;
  &lt;div class=&#34;card-content-container p-1 d-flex flex-direction-column align-items-start justify-content-start &#34;&gt;&lt;div class=&#34;card-title body-default fw-500 lh-2 text-gray-16&#34;&gt;Infrastructure as code&lt;/div&gt;&lt;div class=&#34;card-description body-small text-gray-12 fw-400&#34;&gt;Using Infrastructure as code, you can declaratively manage what Grafana resources to use.&lt;/div&gt;&lt;/div&gt;
&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;additional-observability-as-code-tools&#34;&gt;Additional Observability as code tools&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re already using established 
    &lt;a href=&#34;/docs/grafana/v12.4/as-code/infrastructure-as-code/&#34;&gt;Infrastructure as code&lt;/a&gt; or other configuration management tools, Grafana offers integrations to manage resources within your existing workflows.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana-cloud/as-code/infrastructure-as-code/terraform/&#34;&gt;Terraform&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Use the Grafana Terraform provider to manage dashboards, alerts, and more.&lt;/li&gt;
&lt;li&gt;Understand how to define and deploy resources using HCL/JSON configurations.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana-cloud/as-code/infrastructure-as-code/ansible/&#34;&gt;Ansible&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Learn to use the Grafana Ansible collection to manage Grafana Cloud resources, including folders and cloud stacks.&lt;/li&gt;
&lt;li&gt;Write playbooks to automate resource provisioning through the Grafana API.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana-cloud/as-code/infrastructure-as-code/grafana-operator/&#34;&gt;Grafana Operator&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Utilize Kubernetes-native management with the Grafana Operator.&lt;/li&gt;
&lt;li&gt;Manage dashboards, folders, and data sources via Kubernetes Custom Resources.&lt;/li&gt;
&lt;li&gt;Integrate with GitOps workflows for seamless version control and deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/crossplane-provider-grafana&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Crossplane&lt;/a&gt; lets you manage Grafana resources using Kubernetes manifests with the Grafana Crossplane provider.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/grafonnet&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafonnet&lt;/a&gt; is a Jsonnet library for generating Grafana dashboard JSON definitions programmatically.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;div class="docs-hero my-2 ">
&lt;div class="d-flex flex-direction-row flex-direction-column-small column-gap-20 row-gap-10 justify-content-start align-items-center align-items-start-small flex-wrap ">&lt;div class="d-flex flex-direction-column flex-1-1 minw-400 minw-xs-unset">
&lt;div>&lt;h1
id="configure-and-provision-grafana-with-as-code-workflows"
>Configure and provision Grafana with as-code workflows&lt;/h1>&lt;/div>
&lt;div class="">Manage resources, including folders and dashboards, and configurations with as-code workflows.&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;hr />
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Grafana provides a suite of tools for &lt;strong>Observability as code&lt;/strong> to help you manage your Grafana resources programmatically and at scale. This approach lets you define dashboards, data sources, and other configurations in code, enabling version control, automated testing, and reliable deployments through CI/CD pipelines. You can apply code management best practices to your observability resources, and integrate them into existing infrastructure-as-code workflows.&lt;/p></description></item><item><title>Provision Grafana Cloud with Infrastructure as code</title><link>https://grafana.com/docs/grafana/v12.4/as-code/infrastructure-as-code/</link><pubDate>Fri, 03 Apr 2026 12:35:46 -0500</pubDate><guid>https://grafana.com/docs/grafana/v12.4/as-code/infrastructure-as-code/</guid><content><![CDATA[&lt;h1 id=&#34;provision-grafana-cloud-with-infrastructure-as-code&#34;&gt;Provision Grafana Cloud with Infrastructure as code&lt;/h1&gt;
&lt;p&gt;With Grafana Cloud, you can use as-code tools to create and manage resources via code, and incorporate them efficiently into your own use cases. This enables you to review code, reuse it, and create better workflows.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Most of the tools defined here can be used with one another.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;grafana-terraform-provider&#34;&gt;Grafana Terraform provider&lt;/h2&gt;
&lt;p&gt;Grafana administrators can manage dashboards, alerts and collectors, add synthetic monitoring probes and checks, manage identity and access, and more using the &lt;a href=&#34;https://registry.terraform.io/providers/grafana/grafana/latest&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Terraform provider for Grafana&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The following example shows a Terraform configuration for creating a dashboard:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;terraform&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-terraform&#34;&gt;resource &amp;#34;grafana_dashboard&amp;#34; &amp;#34;metrics&amp;#34; {
  config_json = jsonencode({
    title   = &amp;#34;as-code dashboard&amp;#34;
    uid     = &amp;#34;ascode&amp;#34;
  })
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This example dashboard only creates the dashboard and does not add any panels or rows.
To get started, see the &lt;a href=&#34;/docs/grafana-cloud/as-code/infrastructure-as-code/terraform/&#34;&gt;Grafana Terraform provider guides&lt;/a&gt; or refer to the &lt;a href=&#34;https://registry.terraform.io/providers/grafana/grafana/latest/docs&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Terraform Grafana Provider documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;who-is-this-recommended-for&#34;&gt;Who is this recommended for?&lt;/h3&gt;
&lt;p&gt;Grafana Terraform provider is best suited for users who are already using Terraform for non-Grafana use cases.&lt;/p&gt;
&lt;p&gt;To manage the entire Grafana ecosystem of resources on either Grafana Cloud or OSS deployments of Grafana, it’s best to use the Terraform Grafana provider because it supports the most Grafana resources compared to Grafana’s other as-code solutions.&lt;/p&gt;
&lt;p&gt;For Grafana Fleet Management users, the Grafana Terraform provider is best used to preregister new collectors before they are operational or add remote attributes to collectors already registered with the service.&lt;/p&gt;
&lt;h3 id=&#34;known-limitations&#34;&gt;Known limitations&lt;/h3&gt;
&lt;p&gt;Managing dashboards isn’t the simplest process—you have to work with long JSON files, which can become difficult to review and update, as well. Grafonnet can help with generating dashboard JSONs that can be used in Terraform, but Grafonnet requires knowing Jsonnet.&lt;/p&gt;
&lt;h2 id=&#34;grafana-ansible-collection&#34;&gt;Grafana Ansible collection&lt;/h2&gt;
&lt;p&gt;Resources for configuration management are available for Grafana through the &lt;a href=&#34;https://docs.ansible.com/ansible/latest/collections/grafana/grafana/index.html#plugins-in-grafana-grafana&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Ansible collection for Grafana&lt;/a&gt;. The Grafana Ansible collection can be used to manage a variety of resources, including folders, cloud stacks, and dashboards. You can programmatically manage resources on Grafana that aren’t currently part of the Grafana Ansible collection by writing Ansible playbooks that use the HTTP APIs to manage resources for Grafana.&lt;/p&gt;
&lt;p&gt;The following example shows an Ansible configuration for creating a dashboard:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;- name: dashboard as code
  grafana.grafana.dashboard:
    dashboard: { &amp;#39;title&amp;#39;: &amp;#39;as-code dashboard&amp;#39;, &amp;#39;uid&amp;#39;: &amp;#39;ascode&amp;#39; }
    stack_slug: &amp;#39;{{ stack_slug }}&amp;#39;
    grafana_api_key: &amp;#39;{{ grafana_api_key }}&amp;#39;
    state: present&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This example dashboard creates only the dashboard and does not add any panels or rows.&lt;/p&gt;
&lt;p&gt;To get started, see the &lt;a href=&#34;/docs/grafana-cloud/as-code/infrastructure-as-code/ansible/&#34;&gt;quickstart guides for the Grafana Ansible Collection&lt;/a&gt; or check out the &lt;a href=&#34;https://docs.ansible.com/ansible/latest/collections/grafana/grafana/index.html#plugins-in-grafana-grafana&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;collections&amp;rsquo;s documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;who-is-this-recommended-for-1&#34;&gt;Who is this recommended for?&lt;/h3&gt;
&lt;p&gt;Like Terraform, the Grafana Ansible collection is best suited for people already using Ansible for non-Grafana use cases. The collection only works for Grafana Cloud right now, so it makes the most sense for Grafana Cloud customers who want to manage resources using Ansible.&lt;/p&gt;
&lt;h3 id=&#34;known-limitations-1&#34;&gt;Known limitations&lt;/h3&gt;
&lt;p&gt;The Grafana Ansible collection only works for Grafana Cloud and only supports eight resources: API keys, cloud stacks, plugins, dashboards, folders, data sources, alert contact points, and notification policies. This can be a drawback if you want to manage the entire Grafana ecosystem as code with Ansible. As with Terraform, building dashboards is a challenging process.&lt;/p&gt;
&lt;h2 id=&#34;grafana-operator&#34;&gt;Grafana Operator&lt;/h2&gt;
&lt;p&gt;The Grafana Operator is a Kubernetes operator that can provision, manage, and operate Grafana instances and their associated resources within Kubernetes through Custom Resources. This Kubernetes-native tool eases the administration of Grafana, including managing dashboards, data sources, and folders. It also automatically syncs the Kubernetes Custom resources and the actual resources in the Grafana Instance. It supports leveraging Grafonnet for generating Grafana dashboard definitions for seamless dashboard configuration as code.&lt;/p&gt;
&lt;p&gt;To get started, see the &lt;a href=&#34;/docs/grafana-cloud/as-code/infrastructure-as-code/grafana-operator/&#34;&gt;quickstart guides for the Grafana Operator&lt;/a&gt; or check out the &lt;a href=&#34;https://grafana.github.io/grafana-operator/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana Operator&amp;rsquo;s documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A sample Kubernetes configuration for creating a dashboard using the Grafana operator looks like this:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;apiVersion: integreatly.org/v1alpha1
kind: GrafanaDashboard
metadata:
  name: simple-dashboard
  labels:
    app: grafana
spec:
  instanceSelector:
    matchLabels:
      dashboards: &amp;lt;Grafana-custom-resource-name&amp;gt;
  json: &amp;gt;
    {
      &amp;#34;title&amp;#34;: &amp;#34;as-code dashboard&amp;#34;,
      “uid” : “ascode”
    }&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;who-is-this-recommended-for-2&#34;&gt;Who is this recommended for?&lt;/h3&gt;
&lt;p&gt;The Grafana Operator is particularly fitting for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Teams seeking integrated solutions to manage Grafana resources within the Kubernetes cluster ecosystem.&lt;/li&gt;
&lt;li&gt;Teams employing a GitOps approach, allowing them to treat Grafana configurations as code, stored alongside application manifests for versioned and automated deployments.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;known-limitations-2&#34;&gt;Known limitations&lt;/h3&gt;
&lt;p&gt;While the Grafana Operator simplifies many aspects of operating Grafana and its resources on Kubernetes, its current support is mainly focused on managing dashboards, folders, and data sources. Advanced features like alerting and plugins (only works for OSS) are not supported yet.&lt;/p&gt;
&lt;h2 id=&#34;grafana-crossplane-provider&#34;&gt;Grafana Crossplane provider&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/crossplane-provider-grafana&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana Crossplane provider&lt;/a&gt; is built using Terrajet and provides support for all resources supported by the Grafana Terraform provider. It enables users to define Grafana resources as Kubernetes manifests and it also help users who build their GitOps pipelines around Kubernetes manifests using tools like ArgoCD.&lt;/p&gt;
&lt;p&gt;To get started with the Grafana Crossplane provider, install Crossplane in the Kubernetes cluster and use this command to install the provider:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;shell&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-shell&#34;&gt;kubectl crossplane install provider grafana/crossplane-provider-grafana:v0.1.0&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;During installation of the provider, CRDs for all the resources supported by the Terraform provider are added to the cluster so users can begin defining their Grafana resources as Kubernetes custom resources. The Crossplane provider ensures that whatever is defined in the custom resource definitions is what is visible in Grafana UI. If any changes are made directly in the UI, the changes will be discarded when the provider resyncs. This helps ensure that whatever is defined via code in the cluster will be the source of truth for Grafana resources.&lt;/p&gt;
&lt;p&gt;To get started, refer to the examples folder in the Grafana Crossplane repository.&lt;/p&gt;
&lt;p&gt;The following example shows a Kubernetes custom resource definition for creating a dashboard:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;apiVersion: grafana.jet.crossplane.io/v1alpha1
kind: Dashboard
metadata:
  name: as-code-dashboard
spec:
  forProvider:
    configJson: |
      {
        &amp;#34;title&amp;#34;: &amp;#34;as-code dashboard&amp;#34;,
        &amp;#34;uid&amp;#34;: &amp;#34;ascode&amp;#34;
      }
  providerConfigRef:
    name: grafana-crossplane-provider&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;who-is-this-recommended-for-3&#34;&gt;Who is this recommended for?&lt;/h3&gt;
&lt;p&gt;The Grafana Crossplane provider is intended for existing Crossplane users looking to manage Grafana resources from within Kubernetes and as Kubernetes manifests for the GitOps pipelines.&lt;/p&gt;
&lt;h3 id=&#34;known-limitations-3&#34;&gt;Known limitations&lt;/h3&gt;
&lt;p&gt;To use the Crossplane provider, you must have the Crossplane CLI and Crossplane installed in the Kubernetes cluster. Note that the Crossplane provider is in an alpha stage, so it has not reached a stable state yet.&lt;/p&gt;
&lt;h2 id=&#34;grafana-as-code-comparison&#34;&gt;Grafana as code comparison&lt;/h2&gt;
&lt;p&gt;The following chart compares the properties and tools mentioned above.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Property/Tool&lt;/th&gt;
              &lt;th&gt;Grafana Terraform Provider&lt;/th&gt;
              &lt;th&gt;Grafana Ansible Collection&lt;/th&gt;
              &lt;th&gt;Grafana Operator&lt;/th&gt;
              &lt;th&gt;Grafana Crossplane Provider&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Grafana resources supported&lt;/td&gt;
              &lt;td&gt;All major Grafana resources&lt;/td&gt;
              &lt;td&gt;Grafana Cloud stack, plugins, API keys, dashboards, data sources, and folders&lt;/td&gt;
              &lt;td&gt;Dashboards, data sources, Folders&lt;/td&gt;
              &lt;td&gt;All major Grafana resources&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Tool format&lt;/td&gt;
              &lt;td&gt;HCL/JSON&lt;/td&gt;
              &lt;td&gt;YAML&lt;/td&gt;
              &lt;td&gt;YAML&lt;/td&gt;
              &lt;td&gt;YAML/JSON&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Follows Kubernetes-style manifests&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;✓&lt;/td&gt;
              &lt;td&gt;✓&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Easy dashboard building process&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;✓&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Manage resources using Kubernetes&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;✓&lt;/td&gt;
              &lt;td&gt;✓&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Retrieves Grafana resource information&lt;/td&gt;
              &lt;td&gt;✓&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Built-in resource sync process&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
              &lt;td&gt;✓&lt;/td&gt;
              &lt;td&gt;✓&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Recommended for&lt;/td&gt;
              &lt;td&gt;Existing Terraform users&lt;/td&gt;
              &lt;td&gt;Existing Ansible users&lt;/td&gt;
              &lt;td&gt;Users looking to manage Grafana resources from within Kubernetes&lt;/td&gt;
              &lt;td&gt;Users looking to manage Grafana resources from within Kubernetes&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="provision-grafana-cloud-with-infrastructure-as-code">Provision Grafana Cloud with Infrastructure as code&lt;/h1>
&lt;p>With Grafana Cloud, you can use as-code tools to create and manage resources via code, and incorporate them efficiently into your own use cases. This enables you to review code, reuse it, and create better workflows.&lt;/p></description></item></channel></rss>