Question

I am using New Relic to monitor my Salt managed EC2 servers, and I am trying to insert a "hostname=minion-name" in the newrelic-sysmond confic file, so they show up in New Relic's dashboard with a reconizable name, instead of the EC2 default "ip-123-133...".

I spin my instances with salt-cloud and then apply the following state (trough the top file) to get New Relic sysmond running:

newrelic-repo:
  pkg:
    - installed
    - require:
      - pkgrepo: <my private repo defined elsewhere, just convenient rpm storage>

newrelic-sysmond:
  pkg:
    - installed
    - require:
      - pkg: newrelic-repo
  service:
    - running
    - watch:
      - file: /etc/newrelic/nrsysmond.cfg

/etc/newrelic/nrsysmond.cfg:
  file.managed:
    - source: salt://newrelic/nrsysmond.cfg
    - user: newrelic
    - mode: 744
    - require:
      - pkg: newrelic-sysmond

The crux is: /etc/newrelic/nrsysmond.cfg managed file is a version with my personal account key, required by New Relic setup, so it is the same for all my machines.

Is there a way for me have something like hostname=my_placeholder in that file and then in my sls config have it so that when the state is applied that my_placeholder becomes the minion name?

Digging trough the states.file doc (http://docs.saltstack.com/ref/states/all/salt.states.file.html) I get the feeling it is possible, but I am missing some foundational knowledge to figure it out, as I am just getting started with salt. Mainly I think I just need a nudge in a way as to how to reference the variable/grain holding the minion name, and an example of defaults/contexts in use.

Was it helpful?

Solution

First, you have to enable templating of this config file:

/etc/newrelic/nrsysmond.cfg:
  file.managed:
    (...)
    - template: jinja

And then this file is treated as jinja template:

hostname={{ grains.id }} 

name of the minion is available in grains.id. (You can run salt-call grains.items to see available grains. If you need more flexibility in assigning variables, read up about pillars).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top