Назад | Перейти на главную страницу

Salt-Stack скопируйте файл python API из соли мастера в конкретный миньон

Я использую CentOS6.5. Я могу успешно скопировать файл с мастера на миньона с id = minionId, выполнив на мастере следующую команду:

salt minionId cp.get_file salt://fileInMaster.txt /home/johnDoe/fileNowInMinion.txt ##run on master 

Если мне нужно сделать то же самое с помощью Python, как мне это сделать? Следующий эта ссылка все, что я нахожу, - это способ скопировать файл с мастера на миньона, запустив сценарий на миньоне. Я хочу запустить скрипт python на мастере, который копирует файл с мастера на определенного миньона с заданным идентификатором

Используйте клиентский API Python или установите и запустите salt-api, который предоставляет REST API. Я подробно расскажу о клиентском API Python: http://salt.readthedocs.org/en/v2014.1.13/ref/clients/index.html

Скрипт totin.py, копирует /srv/salt/vim/vimrc.local в tin: /tmp/vimrc.local

#!/usr/bin/env python
import json
import salt.client

minion = 'tin'
source = 'salt://vim/vimrc.local'
target = '/tmp/vimrc.local'

local = salt.client.LocalClient()
ret = local.cmd('tin', 'cp.get_file', [source, target])
print json.dumps(ret, indent=2)

Тест:

$ sudo python totin.py 
{
  "tin": "/tmp/vimrc.local"
}

Проверить:

$ sudo salt tin cmd.run 'ls -l /tmp/vimrc.local'
tin:
    -rw-r--r-- 1 root root 652 Dec  4 20:45 /tmp/vimrc.local

Вы можете обернуть свою соль в python, используя pexpect или какой-либо модуль вызова оболочки (os.system, subprocess.call и т. Д.)