2013-11-06 6 views
3

Я использую New Relic для мониторинга моих серверов, управляемых Salt, и я пытаюсь вставить имя «hostname = minion-name» в конфиске newrelic-sysmond файл, поэтому они отображаются в панели инструментов New Relic с измененным именем вместо стандартного «ip-123-133 ...» для EC2.Соль-стек: заменить/добавить имя миньона в файл в управляемом файле формула

Я закрутить свои экземпляры с солью облаку, а затем применить следующее состояние (корыта верхнего файла), чтобы получить 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 становится именем миньона?

Копаем через state.file doc (http://docs.saltstack.com/ref/states/all/salt.states.file.html) У меня возникает ощущение, что это возможно, но мне не хватает некоторых основополагающих знаний, чтобы понять это, поскольку я только начинаю с соли. В основном я думаю, что мне просто нужно подтолкнуть, как ссылаться на переменную/зерно, содержащую имя миньона, и пример использования по умолчанию/контекстов.

ответ

11

Во-первых, вы должны включить шаблонизации этого конфигурационного файла:

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

А потом этот файл обрабатывается как шаблон джинджа:

hostname={{ grains.id }} 

имя миньона доступен в grains.id. (Вы можете запустить salt-call grains.items, чтобы увидеть доступных зерен. Если вам нужна большая гибкость при назначении переменных, прочитайте о столбах).

 Смежные вопросы

  • Нет связанных вопросов^_^