Я использую 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 и т. Д.)