5

Если вы посмотрите на хост, который был настроен на SaltStack, то иногда это похоже на просмотр двоичного файла с vi.SaltStack: Обратное проектирование, где файл поступает из

Вы не знаете, как был создан конфиг/файл.

Это затрудняет устранение ошибок при съемке. Обратное проектирование, в котором происходит файл, занимает слишком много времени.

Моя цель: упростить поиск пути к файлу конфигурации unix на миньоне (созданном солью) к источнику, из которого возникла эта конфигурация. Как $Id$ в svn и cvs.

Одна идея друг, и я был:

file.managed состояние должно (по желанию) добавить источник файла.

Пример:

Мой файл содержит СЛС это:

file_foo_bar: 
    file.managed: 
    - source: 
     - salt://foo/bar 

Затем созданный файл должен содержать этот комментарий.

# Source: salt://foo/bar 

Конечно, это не так просто, так как есть разные способы поместить комментарии в файлы конфигурации.

Возможно ли это? Или есть лучшее решение для моей цели.

Update

Обычно я знаю, что я сделал неправильно, и может найти корень легко. Проблема возникает, если несколько человек работают на дереве состояний.

+0

Кажется, сложно реализовать. Почему бы вам просто не поместить этот комментарий в свой файл? –

+1

@ ChristopheDrevet-Droguet Почему я сам не комментирую файл? Я лентяй. Я хотел бы автоматизировать все, что можно автоматизировать. Это похоже на комментарии в коде: рано или поздно это ложь, поскольку код развивается, но комментариев нет. – guettli

+0

вместо чтения двоичного файла в vim, почему бы не просто прочитать состояния и просто проверить миньон, если они имеют ожидаемый результат? – dahrens

ответ

1

Это отправная точка, где вы можете получить дату и время измененного файла, когда его управляет Salt, используя Salt Pillar.

Позволяет называть нашу переменную salt_managed. Создайте столб файл как следующее:

{% set managed_text = 'Salt managed: File modified on ' + salt.cmd.run('date "+%Y-%m-%d %H:%M:%S"') %} 

salt_managed: {{ managed_text | yaml_dquote }} 

Тогда на миньоне при вызове столпа вы получите следующий результат:

$ salt-call pillar.get salt_managed 
local: 
    Salt managed: File modified on 2016-10-18 11:12:40 

И вы можете использовать это, добавив его в верхней части файлы конфигурации, например, как это:

{{ pillar.get('salt_managed') }} 

Update:

Я нашел работать который может быть полезен для кого-то. Допустим, у нас есть несколько состояний, которые могут изменить один и тот же файл. Как мы можем знать, что государство X отвечает за изменение этого файла?выполнив следующие действия:

1- Я создал государство, как это:

Create a File: 
    file.managed: 
    - name: /path/to/foofile 
    - source: salt://statedir/barfile 
Add file header: 
    file.prepend: 
    - name: /path/to/foofile 
    - text: "This file was managed by using this salt state {{ sls }}" 

Содержание barfile является:

This is a new file 

2- Вызвать состояние от миньона и это будет результат:

$ salt-call state.sls statedir.test 
local: 
---------- 
      ID: Create a File 
    Function: file.managed 
     Name: /path/to/foofile 
     Result: True 
    Comment: File /path/to/foofile updated 
    Started: 07:50:45.254994 
    Duration: 1034.585 ms 
    Changes: 
       ---------- 
       diff: 
        New file 
       mode: 
        0644 
---------- 
      ID: Add file header 
    Function: file.prepend 
     Name: /path/to/foofile 
     Result: True 
    Comment: Prepended 1 lines 
    Started: 07:50:46.289766 
    Duration: 3.69 ms 
    Changes: 
       ---------- 
       diff: 
        --- 
        +++ 
        @@ -1,1 +1,2 @@ 
        +This file was managed by using this salt state statedir.test 
        This is a new file 

Summary for local 
------------ 
Succeeded: 2 (changed=2) 
Failed: 0 
------------ 
Total states run:  2 

в настоящее время содержание foofile является:

This file was managed by using this salt state statedir.test 
This is a new file