<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Grafana Ansible collection on Grafana Labs</title><link>https://grafana.com/docs/grafana/v12.4/as-code/infrastructure-as-code/ansible/</link><description>Recent content in Grafana Ansible collection on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v12.4/as-code/infrastructure-as-code/ansible/index.xml" rel="self" type="application/rss+xml"/><item><title>Create and manage your Grafana Cloud stack using Ansible</title><link>https://grafana.com/docs/grafana/v12.4/as-code/infrastructure-as-code/ansible/ansible-cloud-stack/</link><pubDate>Fri, 03 Apr 2026 12:35:46 -0500</pubDate><guid>https://grafana.com/docs/grafana/v12.4/as-code/infrastructure-as-code/ansible/ansible-cloud-stack/</guid><content><![CDATA[&lt;h1 id=&#34;create-and-manage-your-grafana-cloud-stack-using-ansible&#34;&gt;Create and manage your Grafana Cloud stack using Ansible&lt;/h1&gt;
&lt;p&gt;This guide shows you how to create a Grafana Cloud stack and add a data source, dashboard, and folder using the Ansible Collection for Grafana. You&amp;rsquo;ll manage your Grafana infrastructure through Ansible playbooks.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;p&gt;Before you begin, make sure you have the following available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Grafana Cloud account&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.ansible.com/ansible/latest/installation_guide/index.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Ansible&lt;/a&gt; installed on your machine&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;install-the-grafana-ansible-collection&#34;&gt;Install the Grafana Ansible collection&lt;/h2&gt;
&lt;p&gt;Install the Grafana Ansible collection:&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;sh&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-sh&#34;&gt;ansible-galaxy collection install grafana.grafana&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This collection provides all the modules needed to manage Grafana Cloud stacks and resources.&lt;/p&gt;
&lt;h2 id=&#34;create-a-cloud-stack&#34;&gt;Create a Cloud stack&lt;/h2&gt;
&lt;p&gt;First, create a Grafana Cloud Access Policy and get a token. You&amp;rsquo;ll need this for the Ansible playbook to be able to create a Grafana Cloud stack. Refer to &lt;a href=&#34;/docs/grafana-cloud/security-and-account-management/authentication-and-permissions/access-policies/create-access-policies/&#34;&gt;Create a Grafana Cloud Access Policy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Next, create an Ansible playbook file. This Ansible playbook creates a Grafana Cloud stack using the &lt;a href=&#34;https://docs.ansible.com/ansible/latest/collections/grafana/grafana/cloud_stack_module.html#ansible-collections-grafana-grafana-cloud-stack-module&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Cloud stack module&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To do so, create a file named &lt;code&gt;cloud-stack.yml&lt;/code&gt; and add the following:&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: Create Grafana Cloud stack
  connection: local
  hosts: localhost

  vars:
    grafana_cloud_api_key: &amp;#39;&amp;lt;CLOUD_ACCESS_POLICY_TOKEN&amp;gt;&amp;#39;
    stack_name: &amp;#39;&amp;lt;STACK_NAME&amp;gt;&amp;#39;
    org_name: &amp;#39;&amp;lt;ORG_NAME&amp;gt;&amp;#39;

  tasks:
    - name: Create a Grafana Cloud stack
      grafana.grafana.cloud_stack:
        name: &amp;#39;{{ stack_name }}&amp;#39;
        stack_slug: &amp;#39;{{ stack_name }}&amp;#39;
        cloud_api_key: &amp;#39;{{ grafana_cloud_api_key }}&amp;#39;
        org_slug: &amp;#39;{{ org_name }}&amp;#39;
        delete_protection: true
        state: present
      register: stack_result

    - name: Display stack URL
      debug:
        msg: &amp;#39;Stack created at: {{ stack_result.url }}&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Replace the placeholders with your values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;CLOUD_ACCESS_POLICY_TOKEN&amp;gt;&lt;/code&gt;&lt;/em&gt;: Token from the Cloud Access Policy you created in the Grafana Cloud portal&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;STACK_NAME&amp;gt;&lt;/code&gt;&lt;/em&gt;: Name of your stack&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;ORG_NAME&amp;gt;&lt;/code&gt;&lt;/em&gt;: Name of the organization in Grafana Cloud&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The playbook registers the stack creation result and displays the stack URL, which you&amp;rsquo;ll need for subsequent resource management.&lt;/p&gt;
&lt;h2 id=&#34;create-an-api-key-in-your-grafana-stack&#34;&gt;Create an API key in your Grafana stack&lt;/h2&gt;
&lt;p&gt;Create an API key in the Grafana stack. You&amp;rsquo;ll need this key to configure Ansible to create data sources, folders, and dashboards.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log into your Grafana Cloud instance.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Administration&lt;/strong&gt; and select &lt;strong&gt;API keys&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add API key&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Key name&lt;/strong&gt;, enter a name for your API key.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Role&lt;/strong&gt;, select &lt;strong&gt;Admin&lt;/strong&gt; or &lt;strong&gt;Editor&lt;/strong&gt; to associate the role with this API key.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Copy&lt;/strong&gt; to save it for later use.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;add-resources-using-playbooks&#34;&gt;Add resources using playbooks&lt;/h2&gt;
&lt;h3 id=&#34;add-a-data-source&#34;&gt;Add a data source&lt;/h3&gt;
&lt;p&gt;The following steps use the InfluxDB data source. The required arguments vary depending on the type of data source you select.&lt;/p&gt;
&lt;p&gt;Create a file named &lt;code&gt;data-source.yml&lt;/code&gt;:&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: Add/Update data source
  connection: local
  hosts: localhost

  vars:
    grafana_url: &amp;#39;https://&amp;lt;STACK_NAME&amp;gt;.grafana.net&amp;#39;
    grafana_api_key: &amp;#39;&amp;lt;GRAFANA_API_KEY&amp;gt;&amp;#39;
    data_source_config:
      name: &amp;#39;&amp;lt;DATA_SOURCE_NAME&amp;gt;&amp;#39;
      type: &amp;#39;influxdb&amp;#39;
      url: &amp;#39;&amp;lt;DATA_SOURCE_URL&amp;gt;&amp;#39;
      user: &amp;#39;&amp;lt;USERNAME&amp;gt;&amp;#39;
      secureJsonData:
        password: &amp;#39;&amp;lt;PASSWORD&amp;gt;&amp;#39;
      database: &amp;#39;&amp;lt;DATABASE_NAME&amp;gt;&amp;#39;
      uid: &amp;#39;&amp;lt;UID&amp;gt;&amp;#39;
      access: &amp;#39;proxy&amp;#39;

  tasks:
    - name: Create/Update Data source
      grafana.grafana.datasource:
        dataSource: &amp;#39;{{ data_source_config }}&amp;#39;
        grafana_url: &amp;#39;{{ grafana_url }}&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;Replace the placeholders with your values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;DATA_SOURCE_NAME&amp;gt;&lt;/code&gt;&lt;/em&gt;: Name of the data source to be added in Grafana&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;DATA_SOURCE_URL&amp;gt;&lt;/code&gt;&lt;/em&gt;: URL of your data source&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;USERNAME&amp;gt;&lt;/code&gt;&lt;/em&gt;: Username for authenticating with your data source&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;PASSWORD&amp;gt;&lt;/code&gt;&lt;/em&gt;: Password for authenticating with your data source&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;DATABASE_NAME&amp;gt;&lt;/code&gt;&lt;/em&gt;: Name of your database&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;UID&amp;gt;&lt;/code&gt;&lt;/em&gt;: UID for your data source in Grafana&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;STACK_NAME&amp;gt;&lt;/code&gt;&lt;/em&gt;: Name of your stack&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;GRAFANA_API_KEY&amp;gt;&lt;/code&gt;&lt;/em&gt;: API key created in the Grafana instance&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;add-a-folder&#34;&gt;Add a folder&lt;/h3&gt;
&lt;p&gt;This playbook creates a folder in your Grafana instance using the &lt;a href=&#34;https://docs.ansible.com/ansible/latest/collections/grafana/grafana/folder_module.html#ansible-collections-grafana-grafana-folder-module&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Folder module&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Create a file named &lt;code&gt;folder.yml&lt;/code&gt;:&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: Add/Update Folders
  connection: local
  hosts: localhost

vars:
    grafana_url: &amp;#39;https://&amp;lt;STACK_NAME&amp;gt;.grafana.net&amp;#39;
    grafana_api_key: &amp;#39;&amp;lt;GRAFANA_API_KEY&amp;gt;&amp;#39;
    folders:
      - title: &amp;#39;&amp;lt;FOLDER_NAME&amp;gt;&amp;#39;
        uid: &amp;#39;&amp;lt;UID&amp;gt;&amp;#39;

  tasks:
    - name: Create/Update a Folder in Grafana
      grafana.grafana.folder:
        title: &amp;#39;{{ item.title }}&amp;#39;
        uid: &amp;#39;{{ item.uid }}&amp;#39;
        grafana_url: &amp;#39;{{ grafana_url }}&amp;#39;
        grafana_api_key: &amp;#39;{{ grafana_api_key }}&amp;#39;
        state: present
      loop: &amp;#39;{{ folders }}&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Replace the placeholders with your values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;FOLDER_NAME&amp;gt;&lt;/code&gt;&lt;/em&gt;: Name of the folder to be added in Grafana&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;UID&amp;gt;&lt;/code&gt;&lt;/em&gt;: UID for your folder in Grafana&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;STACK_NAME&amp;gt;&lt;/code&gt;&lt;/em&gt;: Name of your stack&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;GRAFANA_API_KEY&amp;gt;&lt;/code&gt;&lt;/em&gt;: API key created in the Grafana instance&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;add-a-dashboard-to-the-folder&#34;&gt;Add a dashboard to the folder&lt;/h3&gt;
&lt;p&gt;This playbook iterates through the dashboard JSON source code files in the folder referenced in &lt;code&gt;dashboards_path&lt;/code&gt; and adds them to the Grafana instance using the &lt;a href=&#34;https://docs.ansible.com/ansible/latest/collections/grafana/grafana/dashboard_module.html#ansible-collections-grafana-grafana-dashboard-module&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Dashboard module&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Create a file named &lt;code&gt;dashboard.yml&lt;/code&gt;:&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: Add/Update Dashboards
  connection: local
  hosts: localhost

  vars:
    grafana_url: &amp;#39;https://&amp;lt;STACK_NAME&amp;gt;.grafana.net&amp;#39;
    grafana_api_key: &amp;#39;&amp;lt;GRAFANA_API_KEY&amp;gt;&amp;#39;
    dashboards_path: &amp;#39;&amp;lt;PATH_TO_DASHBOARD_FILES&amp;gt;&amp;#39; # Example &amp;#34;./dashboards&amp;#34;

  tasks:
    - name: Find dashboard files
      find:
        paths: &amp;#39;{{ dashboards_path }}&amp;#39;
        file_type: file
        recurse: true
        patterns: &amp;#39;*.json&amp;#39;
      register: files_matched
      no_log: true

    - name: Create list of dashboard file names
      set_fact:
        dashboard_file_names: &amp;#39;{{ dashboard_file_names | default([]) &amp;#43; [item.path] }}&amp;#39;
      loop: &amp;#39;{{ files_matched.files }}&amp;#39;
      no_log: true

    - name: Create/Update a dashboard
      grafana.grafana.dashboard:
        dashboard: &amp;#34;{{ lookup(&amp;#39;ansible.builtin.file&amp;#39;, item) }}&amp;#34;
        grafana_url: &amp;#39;{{ grafana_url }}&amp;#39;
        grafana_api_key: &amp;#39;{{ grafana_api_key }}&amp;#39;
        state: present
      loop: &amp;#39;{{ dashboard_file_names }}&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Replace the placeholders with your values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;PATH_TO_DASHBOARD_FILES&amp;gt;&lt;/code&gt;&lt;/em&gt;: Path to the folder containing dashboard JSON source code files&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;STACK_NAME&amp;gt;&lt;/code&gt;&lt;/em&gt;: Name of your stack&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;GRAFANA_API_KEY&amp;gt;&lt;/code&gt;&lt;/em&gt;: API key created in the Grafana instance&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;run-the-ansible-playbooks&#34;&gt;Run the Ansible playbooks&lt;/h2&gt;
&lt;p&gt;In a terminal, run the following commands from the directory where all of the Ansible playbooks are located.&lt;/p&gt;
&lt;p&gt;Create the Grafana Cloud stack:&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;sh&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-sh&#34;&gt;ansible-playbook cloud-stack.yml&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Add a data source to the Grafana stack:&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;sh&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-sh&#34;&gt;ansible-playbook data-source.yml&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Add a folder to the Grafana stack:&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;sh&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-sh&#34;&gt;ansible-playbook folder.yml&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Add a dashboard to the folder in your Grafana stack:&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;sh&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-sh&#34;&gt;ansible-playbook dashboard.yml&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;validate-your-configuration&#34;&gt;Validate your configuration&lt;/h2&gt;
&lt;p&gt;After you&amp;rsquo;ve run the Ansible playbooks, you can verify the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The new Grafana Cloud stack is created and visible in the Cloud Portal.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/static/img/docs/grafana-cloud/terraform/cloud_portal_tf.png&#34;
  alt=&#34;Cloud Portal&#34; width=&#34;1376&#34;
     height=&#34;816&#34;/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A new data source (InfluxDB in this example) is visible in the Grafana stack.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana-cloud/screenshot-influxdb_datasource_tf.png&#34;
  alt=&#34;InfluxDB datasource&#34; width=&#34;1440&#34;
     height=&#34;764&#34;/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A new folder is available in your Grafana stack. In the following image, a folder named &lt;code&gt;Demos&lt;/code&gt; was added.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana-cloud/screenshot-folder_tf.png&#34;
  alt=&#34;Folder&#34; width=&#34;2436&#34;
     height=&#34;694&#34;/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A new dashboard is visible in the Grafana stack. In the following image, a dashboard named &lt;code&gt;InfluxDB Cloud Demos&lt;/code&gt; was created inside the &amp;ldquo;Demos&amp;rdquo; folder.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/static/img/docs/grafana-cloud/terraform/influxdb_dashboard_tf.png&#34;
  alt=&#34;InfluxDB dashboard&#34; width=&#34;1855&#34;
     height=&#34;895&#34;/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;p&gt;You&amp;rsquo;ve successfully created a Grafana Cloud stack along with a data source, a folder, and a dashboard using Ansible. Your Grafana infrastructure is now managed through code.&lt;/p&gt;
&lt;p&gt;To learn more about managing Grafana with Infrastructure as code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.ansible.com/ansible/latest/collections/grafana/grafana/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana Ansible collection documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Ansible playbook best practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/developers/http_api/&#34;&gt;Grafana API documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana-cloud/developer-resources/api-reference/&#34;&gt;Grafana Cloud API documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana/latest/as-code/infrastructure-as-code/terraform/&#34;&gt;Infrastructure as Code with Terraform&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="create-and-manage-your-grafana-cloud-stack-using-ansible">Create and manage your Grafana Cloud stack using Ansible&lt;/h1>
&lt;p>This guide shows you how to create a Grafana Cloud stack and add a data source, dashboard, and folder using the Ansible Collection for Grafana. You&amp;rsquo;ll manage your Grafana infrastructure through Ansible playbooks.&lt;/p></description></item></channel></rss>