2016-06-14 3 views
1

Я хочу иметь каталог на моем соляном-мастере, который синхронизируется с мини-телефоном Windows 7, который у меня работает. Я пробовал использовать schedule.present, но у меня было очень мало удачи. Я не уверен, что моя проблема с этим, но я также думаю, что это может быть не лучший способ выполнить мою задачу.Как я могу получить schedule.present для работы в соляной посуде?

Вот что выглядит мое окружение, как:

соль-мастер

OS: CentOS7

версия соли: 2016.3.0


соль-миньон

OS: Ubuntu 14,04

версия соли: 2016.3.0


Вот моя текущая конфигурация:

init.sls

syncFiles: 
    schedule.present: 
    - function: /home/user/directory 
    - seconds: 30 
    - splay: 10 

/home/user/directory: 
    file.recurse: 
    - source: salt://source/directory/ 

Когда я запускаю это, все возвращается успешно, и mirrordirectory запускается в первый раз, как ожидалось, но не раз в будущем.

Отладочный вывод от миньона - это.

[INFO ] Invalid function: mirrordirectory in scheduled job syncFiles. 

Я предполагаю, что мне нужно поставить функцию на миньона, но я не могу найти, что где-нибудь в документации.

Если есть способ сделать это, не помещая функцию на миньона, мне интересно узнать, что это такое, но я хотел бы хотя бы научиться запускать расписания в солятке.

Любая помощь приветствуется.


Side Примечание

В конце концов, это будет в Windows 7 любимца, вместо убунту, я просто пытаюсь получить эту работу первым.


UPDATE 1

Вот что я пытался на основе ответа ниже (и это все еще не работает).

/srv/соль/mirrordirectory/init.СЛС

syncFiles: 
    schedule.present: 
    - function: state.sls 
- job_args: 
    - testfile 
- seconds: 30 
- splay: 10 

/srv/salt/testfile.sls

/tmp/foo: 
    file.recurse: 
    - source: salt://files 

/srv/salt/top.sls

base: 
    '*': 
    - mirrordirectory 

/SRV/соль/файлы

Этот каталог содержит файлы, которые будут синхронизированные

мастер возвращает все успехи:

myminion: 
---------- 
      ID: syncFiles 
    Function: schedule.present 
     Result: True 
    Comment: Job syncFiles in correct state 
    Started: 16:18:22.290216 
    Duration: 140.989 ms 
    Changes: 

Summary for myminion 
------------ 
Succeeded: 1 
Failed: 0 
------------ 
Total states run:  1 

отладки на миньона показывает проблему:

[DEBUG ] Sending event - data = {'fun_args': ['testfile'], 'jid': 'req', 'return': ["No matching sls found for 'testfile' in env 'base'"], 'retcode': 1, 'success': True, 'schedule': 'syncFiles', 'cmd': '_return', 'pid': 24448, '_stamp': '2016-06-15T21:19:57.928894', 'fun': 'state.sls', 'id': 'myminion'} 
[DEBUG ] Handling event tag '__schedule_return' 
[INFO ] Returning information for job: req 

Эта линия, кажется, проблема ["No matching sls found for 'testfile' in env 'base'"] , Любая идея, почему он не может найти файл?


UPDATE 2

/и т.д./соль/мастер

interface: 192.168.0.1 
user: salt 

Это только две строки в моем файле мастер конфигурации. Я хотел протестировать работу как пользователь, отличный от root, и все работало нормально после того, как я изменил некоторые права доступа к файлам. Может, в этом и проблема ... может, я что-то пропустил.

+0

Я только что попробовал точно такие же конфитюры, и это сработало как прелесть для меня. Я подозреваю, что может возникнуть проблема с вашей конфигурацией солевого мастера. Вы каким-либо образом изменили его по умолчанию? Можете ли вы вставить его здесь? – alexK

+0

Единственное, что я изменил, это '' 'user: root'''' '' user: salt'''. Я вставлю свой файл конфигурации в вопрос. Еще раз спасибо за помощь. – trueCamelType

+0

На всякий случай это вызвало проблему, я достал пользователь: root line, и он снова запущен как root. Это, похоже, не помогло. – trueCamelType

ответ

1

Функция для schedule.present должна быть функцией соли. Вероятно, в вашем случае вы должны использовать state.sls. Вот пример того, подобное тому, что у вас есть, что работает для меня:

foo.sls

syncFiles: 
    schedule.present: 
    - function: state.sls 
    - job_args: 
     - testfile 
    - seconds: 30 
    - splay: 10 

testfile.sls

/tmp/foo: 
    file.recurse: 
    - source: salt://files 

top.sls

base: 
    '*': 
    - foo 

Итак, что здесь происходит - top.sls применяет foo.sls к миньону. foo.sls в свою очередь подает миньон testfile.sls каждые 30 секунд.

Надеюсь, это поможет!

+0

Ответ на него отлично, спасибо! – trueCamelType

+0

У меня все еще проблема. Я обновил конец моего вопроса с помощью моих текущих отладочных материалов. Кажется, он не может найти файл тестового файла. – trueCamelType