In this blog post, I’ll show you how you can easily add a Data Source to Grafana without using Grafana Web interface. Grafana supports various storage backends for your time series data, this is what is called Data Source.

Grafana Supported Data Sources

The following data sources are officially supported:

Each Data Source has a specific Query Editor that is customized for the features and capabilities that the particular Data Source exposes. I had done guides on Installation of Grafana if you don’t have one ready.

How to Install Grafana on Ubuntu 18.04 and Debian 9

Install Grafana and InfluxDB on CentOS 7

Once you have Grafana installed and working, you may need to install Data Source Server, this can be Prometheus, InfluxDB, Graphite.

Step 1: Install Ansible on your Linux

You need to to have ansible installed and working on your Linux system to use this method. You can easily install ansible on any Linux using python pip package manager.

Installing python-pip on Linux.

pip is a package management system used to install and manage software packages written in Python

Install pip on Ubuntu / Debian

sudo apt-get -y install python-pip

Install pip on CentOS

sudo yum -y install python-pip

Install pip on Arch Linux

sudo paman -S python-pip

Once pip is installed, upgrade it to the latest release

sudo pip install --upgrade pip

Step 2: Setup Ansible Environment

Create ansible base directory

mkdir -p ~/ansible

Change to ansible base directory and create a directory to store all your Ansible roles.

cd ~/ansible
mkdir roles

Under the roles directory, we will have tasks and defaults variables folder

mkdir -p roles/grafana-datasource/{tasks,defaults]

Step 3: Define Ansible Variables

Our Variables used to add datasource to Grafana will be defined on fileroles/defaults/main.yml. In this example, we will add an InfluxDB data source to Grafana. Below is our /defaults/main.yml which I’ll explain its contents in a bit.

$ cat defaults/main.yml
grafana_url: ""
grafana_user: admin
grafana_password: "GrafanaAdminPassword"
org_id: "1"

  - name:
    ds_type: "influxdb"
    url: ""
    user: "influx_user"
    password: "StrongPassword"


  • is the URL of grafana. It is running on the default port 3000.
  • Grafana admin user is admin with the password GrafanaAdminPassword
  • The data source to be added is named
  • Data source type is influxdb
  • is the URL of an InfluxDB server
  • For an InfluxDB with authentication (Recommended), define username and password – influx_user and StrongPassword respectively.

Remember to replace the values with your correct ones.

Enabling Authentication on InfluxDB data source is defined on our InfluxDB and Grafana installation guideInstall Grafana and InfluxDB on CentOS 7, it applies to InfluxDB running on any other flavor of Linux.

Step 4: Create Ansible task

When all variables used for the creation of Data source are defined, proceed to create the task.

$ cat tasks/main.yml 
- name: Create influxdb datasource
    name: "{{ }}"
    grafana_url: "{{ grafana_url }}"
    grafana_user: "{{ grafana_user }}"
    grafana_password: "{{ grafana_password }}"
    ds_type: "{{ item.ds_type }}"
    url: "{{ item.url }}"
    database: "{{ }}"
    user: "{{ item.user }}"
    password: "{{ item.password }}"
    state: present
  with_items: "{{ data_source }}"

The task reference values defined on filedefaults/main.yml.

Step 5: Run Ansible Playbook

Change to root ansible directory and create playbook execution file.

cd ~/ansible/

Create a file with content like below

$ cat grafana-datasource.yml 
- name: Add data source to grafana
  hosts: localhost
    - grafana-datasource

Finally, execute playbook by running:

$ ansible-playbook grafana-datasource.yml

Sample output:

# ansible-playbook grafana-datasource.yml

PLAY [Add data source to grafana] ********************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************
ok: [localhost]

TASK [grafana-datasource : Create influxdb datasource] ***********************************************************************************************
changed: [localhost] => (item={u'url': u'', u'password': u'StrongPassword', u'ds_type': u'influxdb', u'name': u'', u'user': u'influx_user'})

PLAY RECAP *******************************************************************************************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0   

That’s all. Confirm the data source on Grafana under sectionData Sources.

grafana add data source min

You can now add many data sources by editing name only for all InfluxDB data sources.

Your support is our everlasting motivation,
that cup of coffee is what keeps us going!

As we continue to grow, we would wish to reach and impact more people who visit and take advantage of the guides we have on our blog. This is a big task for us and we are so far extremely grateful for the kind people who have shown amazing support for our work over the time we have been online.

Thank You for your support as we work to give you the best of guides and articles. Click below to buy us a coffee.


Please enter your comment!
Please enter your name here