Запустите задание сценария соли, которое никогда не возвращается мастеру соли

У меня есть солевой файл SLS, test.sls следующим образом:

test:
  cmd.run:
   - name : |
       java -jar test.jar

Здесь test.jar запускает команду, которая запускает eclipse и запускает указанную конфигурацию (которая работает вечно). Поскольку это работает вечно (если я не остановлюсь), когда я запускаю следующую команду,

sudo salt 'ubuntu' state.sls test

Это не вернет мастеру из миньона. Что произойдет в этом случае? будет ли работа автоматически остановлена ​​​​по истечении определенного времени? В общем, как запускать задания, которые никогда не заканчиваются с использованием соли?


person Suraj HK    schedule 23.02.2015    source источник


Ответы (2)


Я нашел решение! Если вы перенаправляете stdout/stderr на /dev/null, можно запустить процесс в фоновом режиме и предотвратить salt ожидание процесса. Вот пример:

run-my-cmd:
   cmd.run:
      - name: ./run-your-script >/dev/null 2>&1 &

Если в вашем скрипте есть stdout, вы должны убедиться:

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

И ваш конец вывода должен быть:

# writing the state line 
echo  # an empty line here so the next line will be the last. 
echo "changed=yes comment='something has changed' whatever=123"

Проверьте salt.states.cmd.

person activatedgeek    schedule 09.07.2015

Вы пытались использовать:

test:
  cmd.run:
   - name : |
       sh -c "java -jar test.jar&"

Я не пробовал, но он должен перевести нужный процесс в фоновый режим, пока основная команда sh завершает работу.

person Helices    schedule 24.02.2015
comment
Это не работает! Я пытаюсь это сделать, но команда соли зависает на неопределенный срок. Пробовал в режиме отладки запустить задание на миньоне (используя salt-call), а также на мастере (используя salt). - person activatedgeek; 09.07.2015