3

我正在使用New Relic来监控我的 Salt 管理的 EC2 服务器,并且我正在尝试在 newrelic-sysmond confic 文件中插入一个“hostname=minion-name”,因此它们以可识别的名称显示在 New Relic 的仪表板中,而不是EC2 默认“ip-123-133 ...”。

我使用 salt-cloud 旋转我的实例,然后应用以下状态(通过顶部文件)来运行 New Relic sysmond:

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

关键是:/etc/newrelic/nrsysmond.cfg托管文件是一个带有我个人帐户密钥的版本,是 New Relic 设置所需的,所以它对我所有的机器都是一样的。

有没有办法让我hostname=my_placeholder在那个文件中有类似的东西,然后在我的 sls 配置中有它,以便在应用状态时my_placeholder成为仆从名称?

挖掘 states.file 文档(http://docs.saltstack.com/ref/states/all/salt.states.file.html)我觉得这是可能的,但我缺少一些基础知识来解决它出去,因为我刚开始吃盐。主要是我认为我只需要以某种方式推动如何引用保存奴才名称的变量/粒度,以及使用的默认值/上下文的示例。

4

1 回答 1

11

首先,您必须启用此配置文件的模板:

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

然后将此文件视为 jinja 模板:

hostname={{ grains.id }} 

仆从的名称可在grains.id. (您可以运行salt-call grains.items以查看可用的颗粒。如果您需要更灵活地分配变量,请阅读有关支柱的信息)。

于 2013-11-06T23:09:26.073 回答