---
title: "Install Grafana Alloy with Puppet | Grafana Alloy documentation"
description: "Learn how to install Grafana Alloy with Puppet"
---

# Install Grafana Alloy with Puppet

You can use Puppet to install and manage Alloy.

## Before you begin

- These steps assume you already have a working [Puppet](https://www.puppet.com/) setup.
- You can add the following manifest to any module.
- The manifest installs Alloy from the package repositories. It targets Linux systems from the following families:
  
  - Debian, including Ubuntu
  - RedHat Enterprise Linux, including Fedora

## Steps

To add Alloy to a host:

1. Make sure that the following module dependencies are declared and installed:
   
   JSON ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
   
   ```json
   {
   "name": "puppetlabs/apt",
   "version_requirement": ">= 4.1.0 <= 7.0.0"
   },
   {
   "name": "puppetlabs/yumrepo_core",
   "version_requirement": "<= 2.0.0"
   }
   ```
2. Create a [Puppet](https://www.puppet.com/) manifest with the following class to add the Grafana package repositories, install the `alloy` package, and run the service:
   
   ruby ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
   
   ```ruby
   class grafana_alloy::grafana_alloy () {
     case $::os['family'] {
       'debian': {
         apt::source { 'grafana':
           location => 'https://apt.grafana.com/',
           release  => '',
           repos    => 'stable main',
           key      => {
             id     => 'B53AE77BADB630A683046005963FA27710458545',
             source => 'https://apt.grafana.com/gpg.key',
           },
         } -> package { 'alloy':
           require => Exec['apt_update'],
         } -> service { 'alloy':
           ensure    => running,
           name      => 'alloy',
           enable    => true,
           subscribe => Package['alloy'],
         }
       }
       'redhat': {
         yumrepo { 'grafana':
           ensure   => 'present',
           name     => 'grafana',
           descr    => 'grafana',
           baseurl  => 'https://rpm.grafana.com',
           gpgkey   => 'https://rpm.grafana.com/gpg.key',
           enabled  => '1',
           gpgcheck => '1',
           target   => '/etc/yum.repos.d/grafana.repo',
         } -> package { 'alloy':
         } -> service { 'alloy':
           ensure    => running,
           name      => 'alloy',
           enable    => true,
           subscribe => Package['alloy'],
         }
       }
       default: {
         fail("Unsupported OS family: (${$::os['family']})")
       }
     }
   }
   ```
3. To use this class in a module, add the following line to the module’s `init.pp` file:
   
   ruby ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
   
   ```ruby
   include grafana_alloy::grafana_alloy
   ```

## Configuration

The `alloy` package installs a default configuration file that doesn’t send telemetry anywhere.

The default configuration file location is `/etc/alloy/config.alloy`. You can replace this file with your own configuration, or create a configuration file for the service to use.

## Next steps

- [Configure Alloy](../../../configure/linux/)
