Saltstack, выполняющий скрипт bash через cmd.script через rest_cherrypy с несколькими аргументами - PullRequest
0 голосов
/ 06 марта 2020

Попытка использовать rest_cherrypy для запуска bash сценария на миньоне. Скрипт принимает несколько аргументов. В следующем примере он отлично работает с одним аргументом:

 resp = session.post('https://192.168.50.10:8000/', json=[{    
      'client': 'local',                                        
      'tgt': 'minion1',                                         
      'fun': 'cmd.script',                                      
      'arg': ['salt://scripts/my_script.sh', 'arg1'],           
  }])                                                           
  return resp.json()    

Вывод: {'return': [{'minion1': {'pid': 2836, 'retcode': 0, 'stderr': '', 'stdout': 'arg1'}}]}

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

 resp = session.post('https://192.168.50.10:8000/', json=[{
        'client': 'local',
        'tgt': 'minion1',
        'fun': 'cmd.script',
        'arg': ['salt://scripts/my_script.sh', ('arg1', 'arg2')],
    }])
    return resp.json()

Вывод:

{'return': [{'minion1': {'pid': 2808, 'retcode': 0, 'stderr': '', 'stdout': '[uarg1,'}}]}

Как правильно передать несколько аргументов в функцию cmd.script через rest_cherrypy?

1 Ответ

0 голосов
/ 07 марта 2020

удалось решить это так:

    resp = session.post('https://192.168.50.10:8000/', json=[{                                                        
     'client': 'local',                                                                                            
     'tgt': 'minion1',                                                                                             
     'fun': 'cmd.script',                                                                                          
     'arg': ['salt://scripts/my_script.sh', """ {}, {}, {}, {} """.format(mail_from, mail_to, date_from, date_to)],
 }])      
...